ログやエラーが発生したときに元のプログラムのどのステートメントで
発生したのかを正確に知るには障害の追跡に重要であるが、
ログだけでは既にスタックは終了しているので知ることはできないと
思ってはいないだろうか ?
バッチ処理では特にエラーやログがどのステートメントで出力されたのかを
知ることは重要であり、HTTPサーバー配下で実行されたジョブのエラー追跡も
次に紹介する方法で正確に知ることができる。
例として弊社の提供する ALASKA 配下での CGI の実行を例に挙げて説明する。
最初に WRKACTJOB
によって次のように表示する。
活動ジョブの処理 09/06/08 CPU %: 15.5 経過時間 : 00:00:01 活動ジョブ数 : 124 オプションを入力して,実行キーを押してください。 2= 変更 3= 保留 4= 終了 5= 処理 6= 解放 7=メッセージ の表示 8=スプール・ファイル の処理 13= 切断 ... OPT サブシステム/ジョブ ユーザー タイプ CPU % 機能 状況 ENTPRSSVR QSYS SBS .0 DEQW ALASKA QTMHHTTP BCH .0 PGM-ALASKA_V5 TIMW AURORA_EGN QTMHHTTP BCI .0 PGM-AURORA_EGN TIMW AURORA_EGN QTMHHTTP BCI .0 PGM-AURORA_EGN TIMW AURORA_EGN QTMHHTTP BCI .0 PGM-AURORA_EGN TIMW AURORA_EGN QTMHHTTP BCI .0 PGM-AURORA_EGN TIMW AURORA_EGN QTMHHTTP BCI .0 PGM-AURORA_EGN TIMW AURORA_EGN QTMHHTTP BCI .0 PGM-AURORA_EGN TIMW
次に調査する子プロセス(AURORA_EGN
) を「5= 処理
」で選択する。
ジョブの処理 システム : ジョブ : AURORA_EGN ユーザー : QTMHHTTP 番号 : 024499 次の中から1つを選択してください。 1. ジョブ状況属性の表示 2. ジョブ定義属性表示 3. ジョブ実行属性の表示(活動状態の場合) 4. スプール・ファイルの処理 10. ジョブ・ログの表示(活動状態またはジョブ待ち行列上の場合) 11. 呼び出しスタックの表示(活動状態の場合) 12. ロックの処理(活動状態の場合) 13. ライブラリー・リストの表示(活動状態の場合) 14. オープンされたファイルの表示(活動状態の場合) 15. ファイル一時変更の表示(活動状態の場合) 16. コミットメント制御状況の表示(活動状態の場合)
の画面に対して「10. ジョブ・ログの表示」を選択する。
ジョブ・ログ表示 システム: S103PH1 ジョブ . : AURORA_EGN ユーザー . : QTMHHTTP 番号 . . . : 024499 ASNET.COM のサブシステム ENTPRSSVR のジョブ 024499/QTMHHTTP/AURORA_EGN が 09/06/08 13:21:43 に開始された。ジョブは 09/06/08 13:21:43 にシステム に入れられました。 データ域 USRSTK がライブラリー QTEMP に作成された。 データ域 PGMSTK がライブラリー QTEMP に作成された。 ライブラリー・リストが変更された。
さらに「F10= 詳細メッセージの表示」を押すことによって、すべての
ロー・レベル・メッセージを表示させることができる。
ジョブ・ログ表示 に対しては F10キーを押すことは重要である。
さてこれからが本題であり、どれかのメッセージにカーソルをセットして
F1 キーを押すとそのメッセージが次のように表示される。
追加のメッセージ情報 メッセージ ID . . . . : CPC2101 送信日付 . . . . . . . : 09/06/08 送信時刻 . . . . . . . : 13:21:51 メッセージ . . : ライブラリー・リストが変更された。 原因−−ユーザー・ライブラリー・リストは指定したライブラリー・リストによって 置き換えられました。 F1= ヘルプ F3= 終了 F6= 印刷 F9= メッセージ詳細の表示 F12= 取り消し F21= 援助レベルの選択
ここで今回、紹介するのはここでさらに 「F9= メッセージ詳細の表示」を
押すことである。
詳細がつぎのように表示される
メッセージの明細の表示 メッセージ ID . . . . : CPC2101 重大度 . . . . . . . . : 00 送信日付 . . . . . . . : 09/06/08 送信時刻 . . . . . . . : 13:21:51 メッセージ・タイプ . . : 完了 CCSID . . . . . . . . : 65535 送信元プログラム . . . . . . . : QLICHLIB 送信元ライブラリー . . . . . : QSYS 命令 . . . . . . . . . . . . : 00C9 送信先プログラム . . . . . . . : QC2SYS 送信先ライブラリー . . . . . : QSYS 送信先モジュール . . . . . . : QC2SYS 送信先プロシージャー . . . . : system 送信先ステートメント . . . . : 6
この送信先プロシージャーと送信先ステートメントが、このメッセージが
出力されたステートメントであることを意味している。
このメッセージがエラー・メッセージである場合にはエラーが発生した元の
プログラムのステートメントも、この方法によって知ることができるのである。
この調査は障害の発生元を突き止めるのに非常に有効であり、
RPG だけでなく CLP, COBOL, C/400 などのあわゆる言語でもこの方法で
発生元を突き止めることができるのである。