実行環境

98.すべてのジョブでジョブ・ログを出力させるには

ジョブが異常終了すると印刷スプールのジョブ・ログ QEZJOBLOG
調べて解析するというのがいつもの定石となっている。

バッチ・ジョブでは特にどのような処理でどのようなエラーが
どこで発生したのかを調査する必要がある。

ところで一般的に良く知られていることであるが
おおよそ「ジョブ・ログ」はエラーが発生したときは出力されるのだが
エラーなどの異常終了がない限り出力されることはない。
従って開発中の適用業務などで終了はしたがジョブ・ログは
出力されない、という事態が発生する。

ところで正常終了であったとしても常にジョブ・ログを出力するには
どのような設定を行えば良いのだろうか ?

その方法はジョブの実行属性の
メッセージのロギングのテキストを *SECLVL に設定することである。
試しにコマンド入力画面で

DSPJOB + [実行]

して

この中から「2. ジョブ定義属性表示 」を選択すると

この中で

 メッセージのロギング :                                        
  レベル  . . . . . . . . . . . . . . . . . . . . :   4       
  重大度  . . . . . . . . . . . . . . . . . . . . :   0       
  テキスト  . . . . . . . . . . . . . . . . . . . :   *NOLIST

のテキストが *NOLIST に設定されているので正常終了の場合では
ジョブ・ログは出力されないのである。
ジョブ・ログを常に出力させるためには *SECLVL としなければならない。
この値を変更するにはジョブ記述: QDFTJOBD を変更すればよいのだが
すべてのジョブでジョブ・ログが出力されてしまう。
特定のジョブだけジョブ・ログが出力されるようにするには
実行されるジョブの CLP 中で

CHGJOB JOB(*) LOG(4 00 *SECLVL)

を実行しておくだけでよい。
あるいはバッチ・ジョブを投入するのであれば

SBMJOB CMD(CALL PGM(MYPGM)) LOG(*JOBD *JOBD *SECLVL)

のようにして *SECLVL を指定しておけばよい。

ジョブ・ログを良く調べれば問題と原因の追究に役に立つことは間違いない。

AutoWeb のジョブはすべてこの方法でジョブ・ログが必ず出力されるように設定されている。