終了処理ユーザー出口

終了処理ユーザー出口について、以下で説明します。

目的

この出口を使用して、Fault Analyzer により行われる分析後アクションを制御できます。

  • ヒストリー・ファイル選択

    分析の後、分析制御ユーザー出口を呼び出した時点では使用可能でなかった、障害に関する詳細情報が使用可能になります。これに基づいて、End Processingユーザー出口は ENV.IDIHIST データ域フィールドを変更することにより、使用するヒストリー・ファイルを変更する選択ができます。

    重複障害に関する情報は選択したヒストリー・ファイルに依存するため、ヒストリー・ファイル名が変更されなくなるまで、End Processingユーザー出口が繰り返し呼び出されます。再呼び出しごとに、前の呼び出しで指定されたヒストリー・ファイルで、重複障害情報が更新されます。

    ENV.IDIHIST フィールドに無効なヒストリー・ファイルが指定されると、End Processingユーザー出口の再呼び出しは行われず、End Processingユーザー出口が最後に呼び出されたときに現行であったヒストリー・ファイルが使用されることになります。

  • 重複する障害の判別

    障害の特性が一致し、互いの NoDup(NORMAL(hours)) オプションに対して有効な時間数内に障害が発生した場合、デフォルトで、Fault Analyzer は、これらの障害を同じヒストリー・ファイル内の別の障害の重複であると見なします (詳細については、NoDupを参照してください)。End Processingユーザー出口は、重複する障害を判別するための別の時間間隔を、NoDup オプションにより有効な時間間隔に適用することを、インストール・システムに許可します。

    特定の障害特性のみに基づく重複する障害が検出された場合、次の情報が提供されます。
    • フィールド EPC.MINUTES_SINCE_LAST_DUP は、重複する障害を最後に記録してから経過した分数に初期化されます。値は 0 から 99999 の範囲になります (このフィールドの制限を超える値はすべて最大値の 99999 として示されます)。値が示されていない場合は、重複する障害が検出されていません。
    • フィールド EPC.DUPLICATE_COUNT には、障害が重複であると見なされた合計回数が示されます (現行障害は含まれません)。

      この合計は、同じヒストリー・ファイル内に記録されている重複障害のすべてのインスタンスを、NoDup(Normal(…)) が有効であった期間にわたって集計することで決定されます。検出されて記録された障害のうち、重複基準が現行障害に適合するものはいずれも、1 つのインスタンスとして計上されます。 また、障害に対して重複が記録された場合は、その障害の重複カウントも加算されます。

    • フィールド ENV.FAULT_ID には、記録された重複する障害が障害 ID によって示されます。
    • フィールド「ENV.DUP_DATE」および「ENV.DUP_TIME」により、最新の重複障害の日時が識別されます。
    • フィールド「ENV.ORIGINAL_DATE」および「ENV.ORIGINAL_TIME」により、当初の障害が記録された日時が識別されます。これらのフィールドによって、ユーザーは必要に応じて、最後の重複障害とは対照的に、当初の障害以降の時間に基づいて重複を判別できます。

    両方の障害特性が一致し、経過時間が、NoDup(NORMAL(hours)) オプションの有効な時間数を超えなかった場合、EPC.IS_DUPLICATE フィールドは「Y」に初期化されます。ただし、障害が重複しているかどうかの最終的な判別はEnd Processingユーザー出口で 行われます。フィールドの戻り値が「Y」の場合、最後に記録された重複する障害 (存在する場合) の重複カウントに 1 が加算され、メッセージ IDI0044I が発行されます。

    注: CICS® または IMS の高速重複障害抑止はこの出口を使用して制御することはできません。これらのタイプの重複の判別に影響を与えるのは、NoDup(CICSFAST(…)) または NoDup(ImageFast(…)) オプション (NoDupを参照) を使用した場合に限られます。ただし、CICS® または IMS 下で発生する障害が高速重複と見なされない場合には、その障害は、ターゲット・ヒストリー・ファイル内の既存の項目、および有効な NoDup(NORMAL(hours)) オプションに基づいて、通常のタイプの重複抑止として考慮されます。
  • ヒストリー・ファイル更新

    現行の障害が同じヒストリー・ファイル内の以前に記録された障害の重複であると判別された場合、デフォルトで Fault Analyzer はミニダンプを含む障害項目全体を抑止します。ただし、ミニダンプのサイズが有効な MaxMinidumpPages オプションにより強制された 制限を超える場合にも、ミニダンプが抑止されることがあります。

    次のフィールドに、考えられる抑止の原因が示されます。
    • ENV.MINIDUMP_PAGES フィールド。4K ページ数でのミニダンプのサイズが含まれます。
    • EPC.IS_DUPLICATE フィールド (上記の「重複する障害の判別」を参照してください)。
    Fault Analyzer が抑止を行うかどうかは、以下のフィールドの初期化により指示されます。これらのフィールドは両方とも End Processing ユーザー出口によりオーバーライドできます。
    • EPC.SUPPRESS_MINIDUMP フィールド。「Y」に設定されている場合、ミニダンプはヒストリー・ファイルに書き込まれません。「N」に設定されている場合、ミニダンプはサイズにかかわらず書き込まれます。
    • EPC.SUPPRESS_FAULT_ENTRY フィールド。「Y」に設定されている場合、現行の障害はヒストリー・ファイル (ミニダンプを含む) に記録されません。「N」に設定されている場合、障害記録は実行され、EPC.SUPPRESS_MINIDUMP フィールドに応じてミニダンプを書き込むことができます。
  • ダンプの抑止

    End Processingユーザー出口は、ダンプを抑止する場合は EPC.SUPPRESS_DUMP フィールドを「Y」に、ダンプが行われることを許可する場合は「N」に設定できます。

    ダンプの抑止に関する一般情報は、ダンプの抑止を参照してください。

呼び出されるタイミング

この出口は、ヒストリー・ファイルの更新前、リアルタイム分析の完了時に呼び出されます。

パラメーター

パラメーターがどのように出口に渡されるかは、出口タイプ (REXX またはロード・モジュール) によって異なります。

Fault Analyzer は、End Processing ユーザー出口を呼び出す前に、特定の障害および有効な処理オプションの現行値を使用してパラメーター・リストを初期化します。

REXX

出口は、以下の 2 つのステムを使用できます。

定義された変数名は、フィールド名と同じです。例えば、ENV データ域のフィールド VERSION にアクセスするには、REXX 変数 ENV.VERSION を使用します。

ロード・モジュール

この出口へのエントリーで、R1 には以下の 2 つのフルワードを構成するパラメーター・リストの 31 ビット・アドレスが含まれます。

以下は、REXX で書かれたEnd Processingユーザー出口の例です。
1. REXX 終了処理ユーザー出口の例
/* REXX */
if ENV.VERSION <> 5 then
  say 'Note: ENV data area version change - field usage review required!'
if EPC.VERSION <> 1 then
  say 'Note: EPC data area version change - field usage review required!'
if EPC.MINUTES_SINCE_LAST_DUP ¬= ' ' & EPC.MINUTES_SINCE_LAST_DUP < 48*60 then do
  /* Use 48 hours as the duplicate fault threshold */
  EPC.IS_DUPLICATE = 'Y'
  EPC.SUPPRESS_FAULT_ENTRY = 'Y'
end
EPC.SUPPRESS_DUMP = 'N'  /* Always permit dumps to be taken */
exit 0
上記のサンプル出口がデータ・セット X.Y.Z のメンバー ABC として存在する場合、IDICNFxx 構成メンバーまたは IDIOPTS ユーザー・オプション・ファイルのいずれかに次のオプションを指定すると、このサンプル出口が呼び出されます。
DataSets(IDIEXEC(X.Y.Z))
Exits(END(REXX(ABC)))