Hitachi

uCosminexus Batch Job Execution Server 使用の手引


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機能の適用の有無によるジョブステップの実行を次の図に示す。

図3‒23 JSPEC機能の適用の有無によるジョブステップの実行

[図データ]

(2) 並列実行するジョブステップの制限事項

並列実行できるジョブステップは,PRESTファイル以外には関連がないようにする必要がある。このため,次に示す制限がある。

PRESTファイルについては,「3.12.2 PREST機能」を参照のこと。

並列実行するジョブステップの制限事項を次の表に示す。

表3‒23 並列実行するジョブステップの制限事項

項目

内容

  • DISP=",DELETE"

  • DISP="NEW"

  • DISP="RNW"

  • DISP="OLD"

  • DISP="MOD"

  • PRESTファイルを除いて並列実行するジョブステップ間で使用するDSNの値が同一のファイル,ライブラリ,一時ファイル,一時ISAMファイル,および一致するパスを含むディレクトリに対しては,左記内容を指定しないこと。明示指定で左記内容が指定された場合,ジョブ定義XMLファイルの解析時にエラーとなる。また,省略時に左記内容が仮定された場合は,ジョブ実行時にエラーとなる。

  • DSNを省略した一時ファイルまたは一時ISAMファイルは,並列実行するステップ間ではDISP属性にPASSを指定してもファイルの受け渡しをしない。そのため,並列実行ステップ間で同じファイルにアクセスすることはない。したがって,並列実行ステップ間にDSNを省略した一時ファイルまたは一時ISAMファイルを2つ以上指定しても,エラーにならない。

  • DSNの指定に同一ファイルの相対パス/絶対パスによる指定が混在していたり,シンボリックリンクを指定した場合,それらは同一ファイルと見なさないため,ジョブ定義XMLファイルの作成時に注意する必要がある。

世代ファイル

サブステップには指定できない。指定した場合は,ジョブ定義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を送り強制終了させる。

表3‒24 JSPECAN機能がジョブステップを打ち切る条件とジョブステップの終了コード

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要素に関する注意事項

(7) DISP属性にPASSを指定する場合の注意事項