通知ユーザー出口
通知ユーザー出口について、以下で説明します。
目的
この出口を使用して、ヒストリー・ファイルへの障害の記録について、または、以前に発生した障害の重複発生について、インストール・システム固有の通知を行うことができます。例えば、出口を使用して、障害が発生したアプリケーションの担当者に E メールを送信できます。また、ADFzCC イベント処理ユーザー出口を介して障害を記録できます。
- C
- 障害が作成されました。
障害が記録されたヒストリー・ファイルの名前は ENV.IDIHIST データ域フィールドに提供され、記録された障害に割り当てられた障害 ID は、ENV.FAULT_ID データ域フィールドに示されます。
Fault Analyzer は、割り当てられた障害 ID およびヒストリー・ファイルを示すメッセージ IDI0003I を発行します。
リアルタイム・レポートの概要セクションのコピーは、NFY.SYNOPSIS データ域フィールドから使用可能です。SYNOPSIS の各行は、改行文字 (X'15') で区切られます。このフィールドに関する詳細については、NFY データ域を参照してください。
- R
- Recovery fault recording
この値は、Fault Analyzer のリカバリー障害記録機能の結果として作成された障害を示します。(この機能の詳細については、リカバリー障害記録を参照してください。)
障害が記録されたヒストリー・ファイルの名前は ENV.IDIHIST データ域フィールドに提供され、記録された障害に割り当てられた障害 ID は、ENV.FAULT_ID データ域フィールドに示されます。
Fault Analyzer は、割り当てられた障害 ID およびヒストリー・ファイルを示すメッセージ IDI0126I を発行します。
- N
- 通常重複。
この値は、NoDup(NORMAL) オプションの基準が現行障害に一致したため、ヒストリー・ファイル障害項目が書き込まれないことを示します。(NoDup(NORMAL) の詳細については、NoDupを参照してください。)
オリジナルのヒストリー・ファイル名と障害 ID は、ENV.IDIHIST および ENV.FAULT_ID データ域フィールドに示されます。
DUPCOUNT フィールドには 1 が設定されます。
- F
- 高速重複 (CICS®)。
この値は、NoDup(CICSFAST) オプションの基準が現行障害に一致したため、分析が実行されなかったことを示します。(NoDup(CICSFAST) の詳細については、NoDupを参照してください。)
オリジナルのヒストリー・ファイル名と障害 ID が使用可能な場合は、それらは ENV.IDIHIST および ENV.FAULT_ID データ域フィールドに提供されます。
DUPCOUNT フィールドには、30 秒の記録期間内に発生した重複の数が設定されます。
通知ユーザー出口で IDIWRITE コマンドを使用すると、Fault Analyzer は出口の完了後に ADFzCC イベント処理機能を呼び出し、IDIWRITE コマンドで書き込まれたデータを使用して ADFzCC イベント処理ユーザー出口に渡します。ADFzCC イベント処理機能の詳細は、IBM Application Delivery Foundation for z/OS Common Components: Customization Guide and User Guide を参照してください。
EXITS(NOTIFY(<existing exit names,>REXX(IDISXEPN)))また、IDIEXEC ddname によって位置指定できるようにします。IDISXEPN サンプル出口は、IDIWRITE コマンドを使用して、使用可能なすべての ENV データと NFY データを ADFzCC イベント処理ユーザー出口に送信します。
通知ユーザー出口から IDIWRITE コマンドを発行すると、データは ADFzCC イベント処理ユーザー出口に渡されます。IDIWRITE コマンドを発行する前に、書き込まれるデータは「NFY.DATA_BUFFER」フィールドに入れられ、データ長は「NFY.DATA_LENGTH」フィールドで指定されます。
data_area.field_name=value例:ENV.JOB_NAME=BATCH1NFY.EPX_DEBUG_OPT を * または他の非ブランク文字に設定すると、通知ユーザー出口は、ADFzCC イベント処理ユーザー出口からの診断をすべて IDITRACE に書き込むように要求します。NFY.EPX_DEBUG_OPT が非ブランク文字に設定された場合、通知ユーザー出口は ADFzCC イベント処理ユーザー出口でデバッグ情報の受信が完了するまで待たなければならないため、ADFzCC イベント処理ユーザー出口は同期的に実行されます。これはパフォーマンスに影響を与える可能性があります。NFY.EPX_DEBUG_OPT をブランク (デフォルト設定) のままにすると、Fault Analyzer はイベント処理ユーザー出口の完了を待たずに処理を続けますが、診断は IDITRACE に書き込まれません。
ADFzCC EVENTPROCESSINGEXIT オプションを使用してイベント処理ユーザー出口が 1 つも指定されない場合、データは無視されます。EVENTPROCESSINGEXIT オプションによるイベント処理ユーザー出口の指定についての詳細は、IBM Application Delivery Foundation for z/OS Common Components: Customization Guide and User Guide を参照してください。
通知ユーザー出口で IDIWRITE コマンドを使用すると、Fault Analyzer は出口の完了後に ADFzCC イベント処理機能を呼び出し、IDIWRITE コマンドで書き込まれたデータを使用して ADFzCC イベント処理ユーザー出口に渡します。ADFzCC イベント処理機能の詳細は、IBM Application Delivery Foundation for z/OS Common Components: Customization Guide and User Guide を参照してください。
EXITS(NOTIFY(<existing exit names,>REXX(IDISXEPN)))また、IDIEXEC ddname によって位置指定できるようにします。IDISXEPN サンプル出口は、IDIWRITE コマンドを使用して、使用可能なすべての ENV データと NFY データを ADFzCC イベント処理ユーザー出口に送信します。
通知ユーザー出口から IDIWRITE コマンドを発行すると、データは ADFzCC イベント処理ユーザー出口に渡されます。IDIWRITE コマンドを発行する前に、書き込まれるデータは「NFY.DATA_BUFFER」フィールドに入れられ、データ長は「NFY.DATA_LENGTH」フィールドで指定されます。
data_area.field_name=value例:ENV.JOB_NAME=BATCH1NFY.EPX_DEBUG_OPT を * または他の非ブランク文字に設定すると、通知ユーザー出口は、ADFzCC イベント処理ユーザー出口からの診断をすべて IDITRACE に書き込むように要求します。NFY.EPX_DEBUG_OPT が非ブランク文字に設定された場合、通知ユーザー出口は ADFzCC イベント処理ユーザー出口でデバッグ情報の受信が完了するまで待たなければならないため、ADFzCC イベント処理ユーザー出口は同期的に実行されます。これはパフォーマンスに影響を与える可能性があります。NFY.EPX_DEBUG_OPT をブランク (デフォルト設定) のままにすると、Fault Analyzer はイベント処理ユーザー出口の完了を待たずに処理を続けますが、診断は IDITRACE に書き込まれません。
ADFzCC EVENTPROCESSINGEXIT オプションを使用してイベント処理ユーザー出口が 1 つも指定されない場合、データは無視されます。EVENTPROCESSINGEXIT オプションによるイベント処理ユーザー出口の指定についての詳細は、IBM Application Delivery Foundation for z/OS Common Components: Customization Guide and User Guide を参照してください。
呼び出されるタイミング
この出口は、Fault Analyzer がヒストリー・ファイルへの障害の記録を完了した後に呼び出されます。
パラメーター
パラメーターがどのように出口に渡されるかは、出口タイプ (REXX またはロード・モジュール) によって異なります。
Fault Analyzer は、通知ユーザー出口を呼び出す前に、特定の障害および有効な処理オプションの現行値を使用してパラメーター・リストを初期化します。
REXX
- ENV.
ENV データ域内のすべてのフィールドに対して定義されたシンボルが含まれます (ENV - 共通出口環境情報を参照してください)。
- NFY.
NFY データ域内のすべてのフィールドに対して定義されたシンボルが含まれます (NFY - 通知ユーザー出口パラメーター・リストを参照してください)。
定義された変数名は、フィールド名と同じです。例えば、ENV データ域のフィールド VERSION にアクセスするには、REXX 変数 ENV.VERSION を使用します。
ロード・モジュール
- word 1 の 31 ビット ENV アドレス。
ENV データ域のアドレス (ENV - 共通出口環境情報を参照してください)。
- word 2 の 31 ビット NFY アドレス。
NFY データ域のアドレス (NFY - 通知ユーザー出口パラメーター・リストを参照してください)。
注: このパラメーターが渡される最後のパラメーターあることを示すため、高位ビットがオンになります。
REXX からの非 REXX ロギング・ルーチンの呼び出し
- ENV.RECORD
- NFY.RECORD
これらの変数を外部の非 REXX ルーチンに対する引数リストの中に使用することで、REXX 出口では、 将来発生する可能性のあるこれらのデータ域の変更について配慮する必要がなくなります。
外部ルーチンは、データ値へのアクセスに、提供される言語依存データ域マッピングを使用する必要があります (ロード・モジュール出口を参照してください)。ENV.RECORD および NFY.RECORD 変数内の値はすべて読み取り専用と見なされるので、 外部ルーチンで更新することはできません。更新が必要な場合は、REXX 出口そのものを使って、適切なデータ・フィールド・ステム変数を 更新しなければなりません。
例 1
/* REXX */
if ENV.VERSION <> 5 then
say 'Note: ENV data area version change - field usage review required!'
if NFY.VERSION <> 2 then
say 'Note: NFY data area version change - field usage review required!'
/* Issue SEND command via TSO batch job */
queue "//NOTIFY JOB MSGCLASS=Z"
queue "//TSOBATCH EXEC PGM=IKJEFT01"
queue "//SYSTSPRT DD SYSOUT=*"
queue "//SYSTSIN DD *"
/* Split the TSO SEND command over three data records that must
each be padded with blanks to 80 bytes */
rec = "SEND 'Fault ID" ENV.FAULT_ID "assigned in history file -"
queue left(rec,80)
rec = strip(ENV.IDIHIST)||"' -"
queue left(rec,80)
rec = "USER("||strip(ENV.USER_ID)||") LOGON"
queue left(rec,80)
queue '/*'
/* 'Submit' the stacked TSO batch job */
n = queued()
"IDIALLOC DD(DD1) SYSOUT PGM(INTRDR)"
if rc = 0 then do
address mvs "EXECIO" n "DISKW DD1 (FINIS"
"IDIFREE DD(DD1)"
end
exit 0
DataSets(IDIEXEC(X.Y.Z))
Exits(NOTIFY(REXX(ABC)))例 2
/* REXX */
if ENV.VERSION <> 5 then
say 'Note: ENV data area version change - field usage review required!'
if NFY.VERSION <> 2 then
say 'Note: NFY data area version change - field usage review required!'
/* Issue SMTP message via SMTP batch interface */
user = strip(ENV.USER_ID)
queue "helo pthmvs8.au.ibm.com"
queue "mail from:<"user"@pthmvs8.au.ibm.com>"
queue "rcpt to:<"user"@au1.ibm.com>"
queue "data"
queue "Date: " date('N') time('C')
queue "From:<"user"@pthmvs8.au.ibm.com>"
queue "To:<"user"@au1.ibm.com>"
queue "Subject: Batch job "strip(ENV.JOB_NAME)" abend "ENV.ABEND_CODE
queue " "
queue "Fault ID "ENV.FAULT_ID" assigned in history file"
queue strip(ENV.IDIHIST)" for job "ENV.JOB_NAME
queue "program "ENV.EXEC_PGM_NAME" module "ENV.ABEND_MODULE_NAME"."
queue ""
n = queued()
"IDIALLOC DD(DD1) SYSOUT(A) DEST(PTHMVS8.SMTP)"
address mvs "EXECIO" n "DISKW DD1 (FINIS"
"IDIFREE DD(DD1)"
exit
この出口を機能させるには、システムが MVS™ TCP/IP SMTP 環境を使用できなければなりません。
上に示されているサンプル出口は、IBM® Communications Server 製品に提供されている IBM® SMTP サーバーのバッチ・インターフェースを使用して検査されています。
サンプル・メッセージが正常に送達されるかどうかは、IBM® CS TCP/IP サービスと SMTP サーバーの構成、および出口が実行されているシステムで使用できる適切な TCP/IP ネットワーク・インフラストラクチャーによって決まります。
中間ネットワーク・ノードにファイアウォール、セキュリティー・ソフトウェア、およびメッセージ・フィルター・ソフトウェアが存在するなどの要因が、メッセージの正常な送達に影響を及ぼす可能性があります。
DataSets(IDIEXEC(TEST.EXEC.PDS))
Exits(NOTIFY(REXX(NOTIFY1)))例 3
/* REXX */
if ENV.VERSION <> 5 then
say 'Note: ENV data area version change - field usage review required!'
if NFY.VERSION <> 2 then
say 'Note: NFY data area version change - field usage review required!'
/* Show synopsis */
rest = NFY.SYNOPSIS
do while rest<>''
parse var rest nextline '15'x rest
say nextline
end
exit 0
例えばこの例は、上記の例 2 と結合でき、E メール・メッセージに概要を取り入れることができます。
DataSets(IDIEXEC(TEST.EXEC.PDS))
Exits(NOTIFY(REXX(FRED)))例 4
/* REXX */
if ENV.VERSION <> 5 then
say 'Note: ENV data area version change - field usage review required!'
if NFY.VERSION <> 2 then
say 'Note: NFY data area version change - field usage review required!'
queue "//GENREP JOB MSGCLASS=X"
queue "//FA EXEC PGM=IDIDA,"
queue "// PARM=('/FAULTID("ENV.FAULT_ID")',"
queue "// 'GenerateSavedReport',"
queue "// )"
queue "//IDIHIST DD DISP=SHR,DSN="ENV.IDIHIST
queue "//SYSPRINT DD SYSOUT=*"
/* 'Submit' the stacked batch reanalysis job */
n = queued()
"IDIALLOC DD(DD1) SYSOUT PGM(INTRDR)"
if rc = 0 then do
address mvs "EXECIO" n "DISKW DD1 (FINIS"
"IDIFREE DD(DD1)"
end
exit 0
DataSets(IDIEXEC(X.Y.Z))
Exits(NOTIFY(REXX(ABC)))