IF要素(ジョブステップの実行制御の開始)
形式
OP="条件式"
機能
ジョブステップのリターンコードを判定し,条件が成立した場合,THEN節のジョブステップを実行する。条件が成立しない場合はELSE節のジョブステップを実行する。IF要素の使用の規則を次に示す。
-
IF要素はELSE要素とENDIF要素と組み合わせて使用する。
-
IF要素からELSE要素までをTHEN節と呼ぶ。また,ELSE要素からENDIF要素までをELSE節と呼ぶ。
-
ELSE要素は省略できる。ELSE要素を省略した場合,ELSE節は存在しないためIF要素からENDIF要素までがTHEN節となる。
-
THEN節またはELSE節内のジョブステップからステップリスタートを実行できない。
属性
- OP="条件式" 〜((1〜2048文字))
-
判定条件を記述する。
- 条件式 〜{単一条件式|NOT 条件式|条件式{AND|OR}条件式|(条件式)}
-
複数の単一条件式を,論理積"AND",論理和"OR",否定"NOT",括弧"( )"で組み合わせたものである。
条件式は入れ子(ネスト)にすることができる。論理符号の優先順位は次のとおりになる(優先順位は1が最も高い)。
-
括弧"( )":優先的に条件式を判定する。
-
否定"NOT":条件式が不成立の場合に真となる。
-
論理積"AND":2つの条件式の両方が成立した場合に真となる。
-
論理和"OR":2つの条件式のどちらかが成立した場合に真となる。
-
- 単一条件式 〜(*|?|[ジョブステップ名[.プロシジャステップ名]],演算符号,[リターンコード])
-
対象のジョブステップを実行するかどうかを判定するための条件の最小単位である。
- *|?|ジョブステップ名[.プロシジャステップ名]
-
条件の判定対象のジョブステップを指定する。
-
*
演算符号に,EQ,NE,GT,GE,LT,LEのどれかを指定した場合,
リターンコードが最大値のジョブステップが条件に一致するか判定する。SETMAXRC要素で変更した値は判定されない。
演算符号に,AB,NAのどちらかを指定した場合,
実行済みのジョブステップのすべてが条件に一致するか判定する。
-
?
実行済みのジョブステップのどれかが条件に一致するか判定する。
-
ジョブステップ名[.プロシジャステップ名]
特定のジョブステップを判定する。
ジョブステップ名を検索する場合,ジョブの先頭から検索して最初に見つかったジョブステップを判定の対象にする。該当するジョブステップがカタログドプロシジャの内か外であるかや実行済みであるかどうかには関係はない。また,後続のジョブステップ名は指定できない。
ジョブステップ名: 〜<記号名称>((1〜31文字))
ジョブステップ名を指定する。
プロシジャステップ名: 〜<記号名称>((1〜31文字))
プロシジャ内のジョブステップのリターンコードを参照するときはプロシジャのジョブステップ名を指定する。
カタログドプロシジャ内でジョブステップ名だけを指定した場合,CALL要素で呼び出したときのジョブステップ名を使用して「ジョブステップ名.プロシジャステップ名」と解釈する。このため,同一カタログドプロシジャを複数回呼び出す場合は,それぞれのCALL要素で呼び出したときのジョブステップ名はジョブ内で固有にする必要がある。固有でない場合は同一の「ジョブステップ名.プロシジャステップ名」が複数存在するため,先頭のジョブステップの情報を参照することになる。
-
省略
判定対象を省略した場合,直前のジョブステップを判定対象にする。
判定対象のジョブステップが実行されていない場合,そのジョブステップのリターンコードは0,かつ異常終了しなかったと仮定して処理する。
判定方法がEXおよびNXのときは*または?は指定できない。
-
- 演算符号 〜{EQ|NE|GT|GE|LT|LE|EX|NX|AB|NA}
-
判定方法を指定する。
-
EQ:ジョブステップのリターンコード=OP属性で指定したリターンコード
-
NE:ジョブステップのリターンコード≠OP属性で指定したリターンコード
-
GT:ジョブステップのリターンコード>OP属性で指定したリターンコード
-
GE:ジョブステップのリターンコード>=OP属性で指定したリターンコード
-
LT:ジョブステップのリターンコード<OP属性で指定したリターンコード
-
LE:ジョブステップのリターンコード<=OP属性で指定したリターンコード
-
EX:指定したジョブステップを実行した。
-
NX:指定したジョブステップを実行していない。
-
AB:ジョブステップが異常終了した。
-
NA:ジョブステップが異常終了しなかった。
-
- リターンコード 〜<符号なし整数>((0〜255))
-
比較するリターンコード値を指定する。
演算符号がEX,NX,AB,NAのどれかのとき,この指定は無視される。
注意事項
-
SETSYMBOL,REPLACEまたはREPLACESTEPの置き換えの対象外である。
-
論理積"AND"または論理和"OR"のあとにNOTを指定した条件を記述する場合,NOTを指定した条件は次に示すように括弧"( )"で囲わなければならない。
- (例1)正しい記述方法の例
-
<IF OP="(STEP01,LE,1)AND(NOT(STEP02,EQ,2) )"/>
- (例2)誤った記述方法の例
-
<IF OP="( STEP01,LE,1)AND NOT(STEP02,EQ,2) "/>
-
次の例に示すような矛盾する条件式を記述しても,シンタクス上のエラーがない場合は判定を実施し,処理を続行する。
- (例)矛盾した条件指定の例
-
<IF OP="(STEP01,EX,)AND(STEP01,NX,)"/>・・・STEP01を実行した,かつSTEP01を実行していない。
-
通常,先行するジョブステップが異常終了すると,判定条件が成立していても後続のジョブステップはスキップされる。ただし,演算符号がABおよびNAのIF要素内およびそれに対応するELSE要素内のすべてのジョブステップは,判定条件が成立していれば実行される。判定条件によるジョブステップの動作例を次に示す。
- 判定条件によるジョブステップの動作例
使用例
IF要素を使用した例については,「3.7.2 ジョブステップの実行制御の使用例」を参照のこと。