サポートチーム便り2017.07.13
任意のタイミングでバッチジョブを利用する(SBMJOB)
Question
ファイルを読み込んでスプールファイルを作成するプログラムを日常的に利用したいと思っています。決まった時間ではなく任意のタイミングで行います。今はCALLコマンドで実行しているのですが、対象ファイルの全レコードを見ているので終了までに何分も待たされます。バッチを利用したいのですが、どのような手段で行うのが良いでしょうか。
Answer
SBMJOBコマンドを利用することをお奨めします。「実行するコマンド」パラメータに普段実行している内容(CALL PGM(LIBNAME/PGMNAME)など)を書き込み、ジョブ名を任意で決め、実行してください。デフォルトではSBMJOBコマンドを実行したユーザーの情報を使ってバッチ投入されます。
デフォルトの設定のままジョブ記述を利用しサブシステムを起動している場合、QBATCHというサブシステムにバッチジョブは投入されます。デフォルトのQBATCHサブシステムは一度に投入できるジョブ数をジョブ待ち行列QGPL/QBATCHで制限しているため、既に実行中のジョブがあった場合は順番待ち状態になる場合があります。
SBMJOBコマンドを実行した対話ジョブに対して、バッチが無事に終了したかどうかの通知はありません。該当コマンドの成果物(スプール作成ならばスプールファイルなど)を確認するか、QBATCHサブシステム内のジョブの状態をWRKACTJOB等で確認するか、ジョブ終了後であればWRKSBMJOBコマンドやWRKJOBコマンドを利用して確認をする必要があります。
SBMJOBには様々なパラメータがあり、スケジュール日や時刻も設定が可能ですが、定期的に実行する内容であればSBMJOBでなくWRKJOBSCDEを利用することをお奨めします。