3.12.1 JSPEC機能
ジョブステップを並列実行する機能をJSPEC機能と呼ぶ。
通常ジョブステップは,ジョブ定義XMLファイルで定義した順に逐次実行される。
JSPEC機能を使用することで,逐次実行する必要のない独立したジョブステップを並列に実行できる。これによって,ジョブの実行時間を短縮できる。
また,PREST機能を使用して並列に実行するジョブステップ間で,データを受け渡すことができる。これによって,ジョブの実行時間を短縮できる。
PREST機能については,「3.12.2 PREST機能」を参照のこと。
- 〈この項の構成〉
(1) 並列実行するジョブステップの指定
ジョブ定義XMLファイルのEXEC要素にJSPEC="YES"を指定することで,ジョブステップを並列実行できる。バッチジョブ実行システムは,EXEC要素にJSPEC="YES"を指定したジョブステップを起動したあとに,そのジョブステップの終了を待つことなく,後続のジョブステップを起動する。後続のジョブステップにも並列実行の指定がある場合には,さらに後続のジョブステップを起動する。並列実行の指定がないジョブステップを起動したあとに,並列実行しているすべてのジョブステップが終了するのを待つ。
JSPEC機能を適用したジョブで,EXEC要素にJSPEC="YES"の指定があるジョブステップをサブステップと呼び,指定がないジョブステップをメインステップと呼ぶ。メインステップまたはサブステップを区別する必要がない場合には,単にジョブステップと呼ぶ。
メインステップおよびサブステップは,それぞれ別のプロセスとして起動する。
JSPEC機能の適用の有無によるジョブステップの実行を次の図に示す。
(2) 並列実行するジョブステップの制限事項
並列実行できるジョブステップは,PRESTファイル以外には関連がないようにする必要がある。このため,次に示す制限がある。
PRESTファイルについては,「3.12.2 PREST機能」を参照のこと。
並列実行するジョブステップの制限事項を次の表に示す。
項目 |
内容 |
---|---|
|
|
世代ファイル |
サブステップには指定できない。指定した場合は,ジョブ定義XMLファイルの解析時にエラーとなる。 |
一時ファイル |
PRESTファイルを除いて並列実行するジョブステップ間で,一時ファイル識別名が同一の一時ファイルまたは一時ISAMファイルを指定できない。指定した場合は,ジョブ定義XMLファイルの解析時にエラーとなる。 |
EXEC要素のCOND属性 |
並列実行するジョブステップの終了コードを参照しても無効となる。 |
プログラムおよびスクリプト内で独自に使用するファイル |
同一ファイルに対して入力以外の操作,または排他をするプログラムおよびシェルは並列実行できない。 |
(3) ジョブステップ異常終了時の処理
PRESTファイルを使用するジョブステップが異常終了した場合,相手のジョブステップがPRESTファイルのオープン待ち状態となり,終了しないことがある。この場合,JP1/AJSから手作業で待ち状態のジョブを強制終了する必要がある。
長時間待ち状態になることを回避するには,JP1/AJSの打ち切り時間を設定する方法と,設定ファイルのJOBPARM_JSPECANパラメータを指定する方法とがある。
(a) JP1/AJSの打ち切り時間を設定する方法
JP1/AJSのジョブ定義で,PRESTファイルを使用するジョブに対して適切な打ち切り時間を設定する。
(b) JOBPARM_JSPECANパラメータを指定する方法(JSPECAN機能)
設定ファイルのJOBPARM_JSPECANパラメータにYESを指定する。並列実行しているジョブステップの1つのジョブステップが,次の表に示す原因で異常終了した場合,バッチジョブ実行システムがそのジョブステップの実行が終了していないジョブステップにSIGKILLを送り強制終了させる。
JSPECAN機能がジョブステップを打ち切る条件 |
ジョブステップの終了コード※1 |
---|---|
アロケートエラーやプロセス生成エラーなど,UAPプロセス生成前のエラー |
rc=バッチジョブ実行システムのエラー終了コード |
シグナルによる異常終了 |
rc=128+N※2 |
JOB要素のCOND属性による打ち切り |
rc=UAPの終了コード |
注※1 ジョブ間PRESTファイルはこの方法を使用しても長時間待ち状態になることを回避できないため,JP1/AJSの打ち切り時間を設定すること。
注※2 シグナルで打ち切られた場合のシグナルコード。
(4) 並列実行するジョブステップのジョブログ
並列実行するジョブステップのジョブログとSYSMSGは時系列に出力されるため,並列実行するジョブステップの情報はジョブ定義XMLファイルに指定した順とはならない。
出力例(STEP2からSTEP5を並列実行)を次に示す。
(5) bjexlsjobコマンドでの表示
並列実行するジョブステップのSYSOUTデータファイルをbjexlsjobコマンドで表示する場合,ジョブ定義XMLファイルの指定順ではなく,ジョブステップの終了順に表示する。また,ステップ番号も実行が完了した順番に付与する。
(6) SETMAXRC要素に関する注意事項
-
JSPEC機能を用いてジョブステップを並列実行する場合,SETMAXRC要素はメインステップの直後に指定すること。複数のサブステップの直後にSETMAXRC要素を指定した場合,最終的にどのSETMAXRC要素の指定が有効になるかはサブステップの終了順序に依存し,最後に完了したサブステップの直後に指定したSETMAXRC要素が有効になる。
-
リターンコードの最大値がどのように更新されたのかを確認する場合,JOBLOGに出力されるKAKC1909-Iメッセージを調べること。
(7) DISP属性にPASSを指定する場合の注意事項
-
サブステップのDD要素のDISP属性にPASSを指定した場合,そのファイルを後続ステップへ引き継ぐことはできない。サブステップで指定したファイルを受け取ろうとした場合,ほかのメインステップから引き継がれる。引き継ぐことのできるメインステップが存在しなければ,ジョブ実行時にエラーとなる。
-
DSNを省略した一時ファイル,一時ISAMファイルのDISP属性にPASSを指定して,並列実行するステップ間で受け渡すことはできない。