プログラム・チェックが実行された場所の確認
トランザクションがコード ASRA または ASRD で異常終了し、プログラム チェックのシステム ダンプが生成された場合、最初に行う必要があるのは、プログラム チェックが発生した場所を見つけることです。 CICS®これをあなたのために確立しようとします。
このタスクについて
- メッセージDFHAP0001またはDFHSR0001 、これは異常終了に先行する例えば、次のようになります。
DFHAP0001異常終了(コード0C4/AKEA) がモジュールのオフセット X'FFFFFFFF' で発生しましたCICS-モジュール。 DFHSR0001異常終了(コード0C7/AKEA) がプログラム内のオフセット X'FFFFFFFF' で発生しましたユーザープログラム。 DFHSR0001異常終了(コード0C1/AKEA) がプログラム内のオフセット X'FFFFFFFF' で発生しました-のへだ- 。
- トランザクション異常終了制御ブロック(TACB)は、異常終了を説明するために作成されます。
- 例外トレース ポイント ID AP 0781 (ASRA 異常終了の場合)、または AP 0783 (ASRD 異常終了の場合)
- 実際のオフセットの代わりにオフセットX'FFFFFFFF'
- 知られている「最後の」プログラム(またはモジュール)の名前CICSこれがエラーの原因であったかどうかは不明である
手順
- プログラム・ロード・モジュール内のプログラム・チェックのオフセットを見つけます。このオフセットは、プログラム内のプログラム・チェックの発生地点を示します。 オフセットは PSW の次の順次命令アドレスから導出されるため、障害が起こった命令の後の命令を示す可能性があることを覚えておいてください。
- オフセットがX'FFFFFFFF' 、へどのような種類のプログラムチェックが発生したか。
- オフセットがX'FFFFFFFF' 、CICSプログラムチェックの場所を特定できませんでした。 このような状況では、PSW を使用して次の連続命令アドレスを取得する必要があります。 プログラム チェック用の PSW とレジスタを見つけます。 ステップを続行2 。
- PSW を見つけます。PSW は以下の場所で見つかります。
- 異常終了の TACB
- フォーマット済みトランザクション・ダンプの先頭
- 例外トレース・ポイント ID AP 0781 または AP 0783 によってトレースされるカーネル・エラー・データ・ブロック内
- オプションを入力0 IPCS 基本オプション メニューから IPCS デフォルト値パネルを表示します。
IPCS PRIMARY OPTION MENU - z/OS OPTION ===> 0 0 DEFAULTS - Specify default dump and options 1 BROWSE - Browse dump data set 2 ANALYSIS - Analyze dump contents 3 UTILITY - Perform utility functions 4 INVENTORY - Inventory of problem data 5 SUBMIT - Submit problem analysis job to batch 6 COMMAND - Enter subcommand, CLIST or REXX exec - 入力DSNAME('xxxxx.xxxxx.xxxx')の右にソースどこxxxxx.xxxxx.xxxxダンプ データセット名です。 次に、入力そしてF3 IPCS 基本オプション メニューに戻ります。
例:
Source ==> DSNAME('ONTOP.CICSPD.LABDUMPS.BEAR0C1.DUMP760') - オプションを入力6 IPCS 基本オプション メニューから IPCS サブコマンド入力パネルを表示します。
IPCS PRIMARY OPTION MENU - z/OS OPTION ===> 6 0 DEFAULTS - Specify default dump and options 1 BROWSE - Browse dump data set 2 ANALYSIS - Analyze dump contents 3 UTILITY - Perform utility functions 4 INVENTORY - Inventory of problem data 5 SUBMIT - Submit problem analysis job to batch 6 COMMAND - Enter subcommand, CLIST or REXX exec - IPCSコマンド verbx dfhpdnnn
'ke' 。 nnnは CICS ダンプのリリース識別子(例えば、 CICS TS 6. 3の場合は 760 )。
例:
------------------------- IPCS Subcommand Entry ----------------------------- Enter a free-form IPCS subcommand or a CLIST or REXX exec invocation below: ===> verbx dfhpd760 'ke'このコマンドはダンプをフォーマットし、カーネル ドメイン KE_TASK サマリーに表示します。
次の表は、CICS参考までに、TS バージョンと対応する製品レベルを示します。
表 1. CICSTS バージョンと対応する製品レベル CICSTSバージョン レベル CICSTS6.2 750 CICS TS 6.1 740 CICS TS 5.6 730 CICS TS 5.5 720 CICS TS 5.4 710 CICS TS 5.3 700 - 入力f *YES*プログラムチェックを行った実行中のタスクにアクセスします。複数ある可能性があります。 以下の例では、ERROR (KE_NUM 0157) の下に *YES* があるタスクが 1 つあります。
===KE: Kernel Domain KE_TASK Summary KE_NUM KE_TASK STATUS TCA_ADDR TRAN_# TRANSID DS_TASK KE_KTCB ERROR TCB CURRENT_PSW 0001 22FEA000 KTCB Step 00000000 00000000 2302E038 AFF208 078D1000_A2E702A4 0002 22FEA630 KTCB QR 00000000 23017F00 230311B8 AE68F8 070C4000_818481CC 0003 22FE9000 KTCB RO 00000000 23026E00 23030138 AE6B28 078D1000_A2E1857E 0157 24b15100 ***Running** 232D3100 00383 ABCD 5B6A6C80 230311B8 *YES* AE68F8 070C4000_818481CC - エラーのあるタスクの KE_NUM、TCA_ADDR、および TRANSID をメモします。
- 入力f tableKE ドメイン エラー テーブルの概要を確認します。これは、開始以来の、その地域での最後の 50 件の異常終了を含む要約です。 通常、実行中のタスクの概要 (テーブルの最後のエントリ) を確認するときは、最新のエラーに注目します。 タスクに複数のプログラム チェックがある場合は、他のプログラム チェックは最初のプログラム チェックの結果である可能性が高いため、最初のプログラム チェックに重点を置きます。
===KE: Kernel Domain Error Table Summary ERR_NUM ERR_TIME KE_NUM ERROR TYPE ERR_CODE MODULE OFFSET ======= ======== ====== ========== ======== ====== ====== 0000005B 14:19:59 0158 TRAN_ABEND_PERCOLATE ---/AJ04 DFHPCP 00000696 0000005C 14:19:59 0158 TRAN_ABEND_PERCOLATE ---/AJ04 UNKNOWN UNKNOWN 0000005D 14:19:59 0158 TRAN_ABEND_PERCOLATE ---/AJ04 DFHEPC 00000226 0000005E 14:19:59 0157 PROGRAM_CHECK 0C4/AKEA DFHYI760 000002F2 - 入力ip st sysダンプが作成されたローカルの日時を確認するには、コマンド ラインで を使用します。
- ダンプが作成された時刻と一致する ERR_TIME と、カーネル ドメイン KE_TASK サマリーで見つかった KE_NUM と一致する KE_NUM を持つプログラム チェックに関連付けられた ERR_NUM をメモします。 同じ ERR_TIME と KE_NUM に対して複数のプログラム チェックがある場合は、最初のプログラム チェックに焦点を当てます。 他のプログラム チェックは、おそらく最初のプログラム チェックの結果です。
- 入力f 'Number: xxxxxxxx'ここで、xxxxxxxx は、重点的にチェックすることにしたプログラム チェックの ERR_NUM です。この操作により、指定したエラー番号の KE ドメイン エラー テーブルのエントリが表示されます。

- オフセットのアドレスを比較するX'4C' KERNEL ERROR DATA のオフセット X'134'。
オフセットのアドレスX'4C'の4番目の単語ですCICSPSWであり、オフセットX'134'のアドレスは、z/OS®PSW。 住所が異なる場合は、z/OSPSW とレジスタ。 それ以外の場合は、CICSPSW とレジスタ。
のCICSPSW はオフセット x'40' から始まり、長さは 4 ワードです。 のCICSレジスタ 0 から 15 はオフセット X'68' から始まり、各レジスタの長さは 2 ワードです。
のz/OSPSW はオフセット x'128' から始まり、長さは 4 ワードです。 のz/OSレジスタ 0 から 15 はオフセット x'150' から始まり、各レジスタの長さは 2 ワードです。
- 使用F8スクロールダウンしてフォーマットされたCICSPSW とレジスタ。
IPCSCICSVERBXは、z/OSPSWとレジスターz/OSPSWはCICSPSW。 PSWが同じであれば、CICSVERBX は情報を複製しません。
CICS Registers and PSW PSW: 079D1000 80000000 00000000 27ED52F2 Instruction Length: 4 Interrupt Code: 04 Exception Address: 00000000_00000000 Execution key at Program Check/Abend: 9 Addressing Mode: 31 Space at Program Check/Abend: Basespace Breaking Event Address: 00000000_27ED52CC - offset 000002CC in module DFYI760 64-BIT REGISTERS 0-15 GPR 0-3 00000000_24F3A890 00000000_24F30050 00000000_24F3BB08 00000000_00000000 GPR 4-7 00000000_27ED5060 00000000_24AEE7C0 00000000_24AEE778 00000000_00000000 GPR 8-B 00000000_24F339F0 00000000_24F3B938 00000000_27ED5130 00000000_27ED5264 GPR C-F 00000000_27ED5124 00000000_24F3A748 00000000_24F3BA8C 00000000_00000000の速報イベント演説ブレークイベントアドレスレジスタ(BEAR)からフォーマットされた、プログラムチェック前の最後の成功した分岐のアドレスを提供し、通常は次のような結果をもたらすワイルドブランチタイプの問題を診断するのに非常に役立ちます。0C1または0C4可能な場合は異常終了します。 カーネルドメインがCICSダンプでは、BEARデータはカーネルエラー情報にタイトル付きでフォーマットされます。速報イベント演説。 のCICSダンプ フォーマッタは、BEAR のモジュールとオフセットを識別し、PSWDATA と呼ばれる PSW のデータと、BEARDATA と呼ばれる BEAR のデータをフォーマットしようとします。
CICSVERBX は PSW から障害のあるモジュールを特定し、可能であればモジュール名とオフセットを表示します。 オフライン ダンプ フォーマッタは、元の失敗メッセージよりも多くの情報を使用するため、元の失敗メッセージが役に立たない場合 (モジュール内のオフセット FFFFFFFF)、ダンプ フォーマッタの方が情報量が豊富になることがよくあります。
パネルから下にスクロールすると、多くの場合、障害のあるモジュールが、先頭から割り込みアドレスプラス 256 バイトまで印刷されます。 CICSVERBX は、汎用レジスタの値がアドレスであると想定し、64 ビット、31 ビット、および 24 ビットのアドレスを使用して、これらのアドレスの前後のストレージを出力します。
- PSW がわかれば、障害が発生しているモジュールを特定します。
- オプションを入力1 IPCS 基本オプション メニューからダンプ データ セットを参照します。
- PSW の 4 番目のワードをポインター アドレス フィールドに入力します。
- ストレージが表示されたら、F7ロード モジュールのアイ キャッチャーが表示されるまで上にスクロールします。 ロード モジュール名の後には通常、日付とタイムスタンプが続きます。 PSW アドレスからロード ポイントを減算して、モジュール内のオフセットを計算します。 これは異常終了が発生したオフセットです。
- IFstorage not available表示する場合は、入力してくださいip where nnnnnnnnどこんんんんんPSW の 4 番目の単語です。 モジュールがオペレーティング システムによって LPA または Nucleus からロードされた場合、モジュール名とモジュール内のオフセットが表示されます。
DFHAP0001 DFHAPDM 0C4- トランザクション・ダンプ内のさまざまなプログラム域の開始アドレスと終了アドレスを記録します。PSW から取得した次の順次命令アドレスがいずれかのプログラム内にあるか確認します。 ある場合、それが、割り込みが発生したプログラムです。 最後に実行されたコマンドを識別するには、 「最後のコマンドまたはステートメントの検索」 で説明されている手順を使用します。そのアドレスがすべてのプログラムの外部 にある場合、2 つの事態のいずれかが発生した可能性があります。
- プログラム・チェックが発生したプログラムはユーザーのために実行されていましたが (例えば、VSAM や DL/I)、CICS によって制御されていませんでした。 通常この原因は、誤ったパラメーターがプログラムに渡されたかパラメーターが誤った順序で渡されたことです。 これらは通常、該当する戻りコードによってキャッチされ、フラグが立てられますが、特定の組み合わせが問題を引き起こすことがあります。
- あなたのプログラムは
野生
他のストレージに分岐します。 PSW から取得したアドレスが奇数で終わっている場合は、これが該当すると考えられます。有効な命令は常に偶数アドレスにあるためです。 このアドレスは、CICS アドレス・スペース内または仮想ストレージのどこか別の場所にある可能性があります。多くの場合、誤った分岐はアドレス 0 (ゼロ) に進みます。その分岐アドレスを含むレジスターがゼロに設定されるためです。 このような分岐が発生すると、PSW には通常アドレス X'00000004' が含まれます。
- レジスターの内容を調べて、そのいずれかに PSW から取得した次の順次命令アドレスまたは類似のものが含まれているかどうかを確認します。 この方法は、誤ったアドレスに至った経緯を特定するのに役立つ可能性があります。
PSW がプログラムのいずれかにある命令を指している場合、次の検討対象は発生したプログラム・チェックのタイプです。 そうでない場合は、直接「 問題をさらに分析する 」に進んでください。