3.6.2 条件付実行
- 〈この項の構成〉
(1) JOB要素でCOND属性を指定した場合
ジョブ内の各ジョブステップの終了時点で,各ジョブステップが生成する終了コードとJOB要素のCOND属性で指定した演算符号を基に論理演算をする。
-
論理演算結果が真の場合
後続のジョブステップを実行しないで,そのジョブは終了する。
-
論理演算結果が偽の場合
そのまま後続のジョブステップを実行する。
JOB要素のCOND属性で終了コードの判定条件を指定した場合の流れを次の図に示す。
|
(2) EXEC要素のCOND属性で終了コードの判定条件を指定した場合
EXEC要素のCOND属性で指定したジョブステップの実行開始時点で,次に示す処理をする。
(a) 先行するジョブステップ名を指定しない場合
設定ファイルのEXEC_COND_NOSTEPNAMEパラメータにSTEPALLを指定するか,またはEXEC_COND_NOSTEPNAMEパラメータを指定していない場合,先行するジョブステップが生成するすべての終了コードとEXEC要素のCOND属性で指定した演算符号を基に論理演算をする。また,設定ファイルのEXEC_COND_NOSTEPNAMEパラメータにSTEPLASTを指定した場合は,最後に実行されたジョブステップが生成する終了コードだけと論理演算をする。
-
論理演算結果が真の場合
そのジョブステップの実行をスキップして,後続するジョブステップの処理へ移る。
-
論理演算結果が偽の場合
そのジョブステップを実行する。
(b) 先行するジョブステップ名を指定した場合
指定した先行するジョブステップが生成する終了コードとEXEC要素のCOND属性で指定した演算符号を基に論理演算をする。論理演算結果の後処理は,(a)と同じである。
また,指定した先行するジョブステップが条件付実行によって実行がスキップされている場合は,EXEC要素のCOND属性は無視される(COND属性が指定されなかったものとして処理される)。ジョブ内で重複しているジョブステップ名を指定した場合,最初に一致したジョブステップに対して論理演算をする。
EXEC要素のCOND属性で終了コードの判定条件を指定した場合の流れを次の図に示す。
|
(3) EXEC要素のCOND属性でEVENまたはONLYを指定した場合
EXEC要素のCOND属性を指定したジョブステップの実行開始時点で,次に示す処理をする。
-
EVENを指定した場合,無条件に該当するジョブステップを実行する。
-
ONLYを指定した場合,1つ以上の先行するジョブステップのどれかが異常終了している場合に,該当するジョブステップを実行する。
-
EVENまたはONLYがジョブステップの終了コードの判定条件とともに指定している場合,終了コードの判定条件を満たすと,EVENまたはONLYを無視し,そのジョブステップを実行しない。
-
先行するジョブステップが異常終了した場合,後続のジョブステップにEVENまたはONLYの指定がないかぎり,該当するジョブステップをスキップする。
EXEC要素のCOND属性でEVENを指定した場合の流れを次の図に示す。
|
EXEC要素のCOND属性でONLYを指定した場合の流れを次の図に示す。
|
ジョブステップの条件付きの実行を以下の図に示す。
|
ジョブステップ2がジョブステップ1の終了コード判定でスキップされるケースがある。この場合,ジョブステップ3でジョブステップ2の終了コードの条件判定をしているが,ジョブステップ2をスキップしているとき,EXEC要素のCOND属性の指定は無視して,ジョブステップ3を実行する。
|
条件1(COND属性の(9,LT,STEP4))を判定したが,この条件を満たさないため条件2(COND属性の(8,LT))の判定をする。条件2の場合,ジョブステップ名がないためすべての先行するジョブステップの終了コードとの判定をするが,この場合も条件を満たさないためジョブステップ5を実行する。