RPG

128. バッチ・ジョブのディバッグ手法

バッチ・ジョブに投入されて実行されるプログラムを対話式でディバッグするにはやや面倒な
手順を必要とする。

1. HOLD(*YES) にしてバッチ・ジョブを投入する。

他のジョブをディバッグするにはサービス・ジョブを開始する必要があるがサービス・ジョブの
開始のためにはジョブ名、ユーザー名、ジョブ番号が必要となる。
そこで単に SBMJOB したのではジョブ情報を調べるうちにジョブが終了してしまうので

SBMJOB CMD(CALL PGM(PGM001)) JOB(PGM001) HOLD(*YES)

のようにしてジョブ待ち行列でジョブを保留状態にして投入する。

2. WRKJOBQ コマンドによってジョブ情報を調べる。

WRKJOBQ QBATCH または WRKSBMJOB によってジョブ情報の識別として
ジョブ名、ユーザー名、ジョブ番号を調べてメモしておく。

3.サービス・ジョブを開始する。

取得した、ジョブ名、ユーザー名、ジョブ番号を指定して STRSRVJOB コマンドによって
サービス・ジョブを開始する。

STRSRVJOB JOB(245399/QTR/PGM001)

4. ディバッグを開始する。

STRDBG コマンドによってディバッグを開始します。

STRDBG PGM(QTROBJ/PGM001) UPDPROD(*YES)

5. 停止点を追加する。

ADDBKP によって停止点を追加します。

6. ジョブ待ち行列を解放する。

WRKJOBQ QBATCH または RLSJOBQ コマンドによって HOLD になっていたジョブを解放すると
プログラムが起動されて停止点で停止します。
後はこれまでの対話式のディバッグと同じです。

7. ディバッグを終了する。

ディバッグを終了するには、まず ENDDBG を行ってから ENDSRVJOB によって
サービス・ジョブを終了してすべてのディバッグ処理を終結させます。