■ JOBログの見方
JOBログは、以下の図のように、JESMSGLG、JESJCL、JESYSMSGの3つの基本部分と、 各ステップのEXEC PGM=で指定しているプログラム内で指定している固有のSYSOUTで構成されます。 (参考⇒こちらのページ)※各ブロックとも、OSのバージョンによって、微妙に表示形式が異なります。
- JESMSGLG
このブロックは、JOB全体のメッセージのサマリーです。この部分には、JOBが正常終了したか異常終了したか、 ステップごとのリターンコードがどうだったか、が表示されます。 \HASPで始まるメッセージはJESからでているメッセージです。それ以外はOSからのメッセージです。
- JESJCL
このブロックは、実際に実行されたJCLのステートメントです。この部分には、実際にOSに対して流し込んだJCLの内容が表示されます。カタログ式プロシージャを使用している場合は、 その内容が展開されて表示されます。
- JESYSMSG
このブロックは、各ステップごとの詳細なメッセージや、このステップにかかった時間、ファイルの処置状況、などの情報が出力されます。
- JESYSMSGのブロックの下に出ているログ
JESYSMSGのブロックより下にでている部分は、全て各ステップのEXEC PGM=で指定しているプログラム内で指定している固有のSYSOUTです。
![]()
※上記サンプルはJES2のログです。
-- JOBログをチェック!(JES2の場合) --
①最初にステップのリターンコードをチェックします。
リターンコードがゼロでない場合は、エラーとは限りませんが、警告やメッセージが出力されている場合が多いです。
(JOBログ内を、よ~く見てみてください!きっと何かのメッセージが見つかるハズです。)
②次にジョブがノーマルエンドしたかどうかを確認します。
正常終了している場合は、上の図のの部分がが必ずjobname ENDEDというメッセージになっています。
異常終了している場合は、上の図のの部分が以下のような出力になっています。
hh.mm.ss JOB00001 IEA995I SYMPTOM DUMP OUTPUT nnn nnn SYSTEM COMPLETION CODE 0C7 REASON CODE=00000000 nnn TIME=hh.mm.ss SEQ=xxxxx CPU=xxxxx ASID=xxx nnn PSW AT TIME OF ERROR xxxxxxxx xxxxxxxx ILC x INTC 07 nnn NO ACTIVE MODULE FOUND nnn NAME=UNKNOWN nnn DATA AT PSW xxxxxxxx - xxxxxxxx xxxxxxxx xxxxxxxx nnn AR/GR 0: xxxxxxxx/xxxxxxxx 1: xxxxxxxx/xxxxxxxx nnn 2: xxxxxxxx/xxxxxxxx 3: xxxxxxxx/xxxxxxxx nnn 4: xxxxxxxx/xxxxxxxx 5: xxxxxxxx/xxxxxxxx nnn 6: xxxxxxxx/xxxxxxxx 7: xxxxxxxx/xxxxxxxx nnn 8: xxxxxxxx/xxxxxxxx 9: xxxxxxxx/xxxxxxxx nnn A: xxxxxxxx/xxxxxxxx B: xxxxxxxx/xxxxxxxx nnn C: xxxxxxxx/xxxxxxxx D: xxxxxxxx/xxxxxxxx nnn E: xxxxxxxx/xxxxxxxx F: xxxxxxxx/xxxxxxxx nnn END OF SYMPTOM DUMP hh.mm.ss JOB00001 IEF450I jobname stepname - ABNED=Sxxx Uxxxx REASON=xxxxxxxxアベンドコードが、Sxxxのxxxがゼロでない場合はシステムエラーです。よく出るアベンドコードは、こちらのページを参考にしてください。
③FLASHされているステップがある場合
FLASHということは、何だかの理由でそのステップが実行できなかった場合です。FLASHされているステップの直前のステップでリターン コードがでていないか、または、下記④になっていないかを確認しましょう。-JOBNAME STEPNAME PROCSTEP RC EXCP CONN TCB SRB -JOB000A STEP1 00 0 0 0 .00 -JOB000A STEP2 FLUSH 0 0 0 .00 -JOB000A STEP3 FLUSH 0 0 0 .00④JCLエラーの場合・JOB FAILの場合・FLUSHされているステップがある場合は、たいてい以下のメッセージがでているハズです。※Iで始まる番号がOSからのメッセージ番号です。このページの「MVSシステムメッセージ」のマニュアルで探してみてください。
- JCL構文エラーの場合の例
(JESMSGLGのところ)
hh.mm.ss JOB123456 IEFC4521I JOB0001 - JOB NOT RUN - JCL ERROR
(JESJCLの一番下)
STMT NO. MESSAGE
3 IEFC621I EXPECTED CONTIUATION NOT RECEIVED ←継続行が間違っている場合の例
4 IEFC605I UNIDENTIFIED OPERATION FIELD
※エラーの行番号は、実行したJCL上の行番号でなく、JESJCLに出ている行番号です。- 入力データセットが存在しない場合
IEF212I jobname stepname dsnname - DATA SET NOT FOUND
- 出力データセットが既に存在している場合
IEF253I jobname stepname dsnname - DUPLICATE NAME ON DIRECT ACCESS VOLUME
- 指定したDISKの空き容量が不足している場合
IEF257I jobname stepname ddname - SPACE REQUESTED NOT AVAILABLE
- DDステートメントが不足している場合
IEC130I ddname - DD STATEMENT MISSING
※この場合、S-0C4でアベンドしている場合が多いと思います。- 出力ファイル(DISK)にSPACEパラメータを指定していない場合
IEF344I jobname stepname ddname - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR
IGD17045I SPACE NOT SPECIFIED FOR ALLOCATION OF DATA SET
⑤JOBが動かないか、途中で止まっている場合
- 使えないボリュームを指定している場合
hh.mm.ss JOB123456 EDG8197I VOLUME MYVOL IS NOT DFSMSdss MANAGED hh.mm.ss JOB123456 IEF244I MYJOB01 STEPxx - UNABLE TO ALLOCATE 1 UNIT(S) AT LEAST 1 OFFLINE UNIT(S) NEEDED. hh.mm.ss JOB123456 IEF877E MYJOB01 NEEDS 1 UNITS(S) FOR STEPxx DDname ←STEPxxで指定している//DDnameの FOR VOLUME MYVOL VOL=SER=MYVOLの指定が間違っている OFFLINE 1000-100D 100F-1013 1100-1105 1107-1108 1100-110C 1110-1112 1200-1208 120A-1210 1212-1213 1214-1216 1218-1220 1222-1224 1400-1406 1412-1414 1416-1418 1500-1510 1607-1609 160A-160D : hh.mm.ss JOB123456 IEF878I END OF IEF877E FOR MYJOB01 STEPxx DDname hh.mm.ss JOB123456 *nnn IEF238D MYJOB01 - REPLY DEVICE NAME OR 'CANCEL'.※この場合は、リプライ番号nnnに対して、CENCELを返してあげてJCLを見直しましょう。
- 出力データセットを誰かが捕まえている場合。または、TSOでそのデータセットを参照・編集している場合
hh.mm.ss JOB123456 *IEF099I JOB MYJOB01 WAITING FOR DATA SETS※別のJOBで長い間そのデータセットをDISP=OLDで使用しているか、誰かがTSOでそのデータセットをBROWSEかEDITしている可能性があります。
別JOBのデータセットの使用の終了を待つか、BROWSEかEDITしている場合はそれを終了するか、またはJOBをキャンセルするしかありません。
⑥あとは"慣れ"と"感"が大事です。 o(^-^)o
JOBの実行ログを「なーんか英語で出ているなぁ・・」でログの最初と最後だけを見ていては解決はできません。メッセージを注意深く見るようにしてください。
メッセージは、たいていJESYSMSGの部分にでているはずです。