■ IF/ELSE/ENDIFステートメント
IF/ELSE/ENDIFステートメント構成は、ジョブ内のジョブ・ステップを条件付き で実行するために使用します。
IFステートメントの後には、必ず関係式とTHEN文節を続けます。任意指定で、ELSE文節 をTHEN文節の後に続けることができます。
ENDIFステートメントは、必ずELSE文節 (存在する場合)またはTHEN文節の後に続けます。
- THEN文節では、IFステートメントの関係式の評価が真の状態である場合に、システムに 処理させるジョブ・ステップを指定します。システムは、関係式を実行時に評価します。
- ELSE文節は、IFステートメントの関係式の評価が偽の状態である場合に、システムに処 理させるジョブ・ステップを指定します。
- ENDIFステートメントは、IF/THEN/ELSE/ENDIFテートメント構成の終わりを示し、 構成ごとにコーディングする必要があります。
IF/THEN/ELSE/ENDIFステートメント構成を最高15レベルまでネストすることができます。 THEN文節およびELSE文節で実行するステップは、他のIF/THEN/ELSE/ENDIFステートメント構成とすることができます。
<サンプル1>上記のSTEP2とSTEP3は、同じことを意味します。
//STEP1 EXEC PROC=xxx /* //STEP2 EXEC PGM=aaa,COND=(0,EQ,STEP1.ST1) /* // IF (STEP1.ST1.RC NE 0) THEN //STEP3 EXEC PGM=aaa // ENDIF
<サンプル2> 複合条件の例
//STEP1 EXEC PGM=xxx // IF (ABEND | STEP1.RC > 8) THEN //TRUE EXEC PGM=aaa // ELSE // ENDIF //NEXT EXEC PGM=bbb
上記例はジョブの前のステップで異常終了が起ったか、またはSTEP1の戻りコードが8より大きいかのいずれかであれば、 aaaを呼び出します。それ以外の場合、システムは、ステップTRUEを迂回し、空白のELSE文節を通りNEXTに進みます。
※RCはIBMのキーワードで、実行開始時点ではゼロに設定されます。
また、戻りコードの範囲は0~4095です。
◆ RCについて
特定のステップのリターンコードをテストするには、stepname.RC、または、stepname.procstepname.RCと指定します。
ステップ名を省略すると、評価時点より前のステップの最大の値が評価されます。
<サンプル3> アベンドのチェックの例
//STEP1 EXEC PGM=xxx // IF (¬ABEND) THEN //OKOK EXEC PGM=aaa // ENDIF
上記例はジョブの前のステップで異常終了っていない場合に、aaaを呼び出します。
※ABENDはIBMのキーワードです。
詳しくはこのマニュアルのP.412をご覧ください。
◆ ABENDについて
IF ABEND THENと記述すると評価時点より前のステップで異常終了している場合に常に真になります。
特定のステップの異常終了をテストするには、stepname.ABEND、または、stepname.procstepname.ABEND、 または、stepname.ABEND=TRUE、または、stepname.procstepname.ABEND=TRUEと指定します。
ステップ名を省略すると、評価時点の直前のステップのが評価されます。
原典:日本アイ・ビー・エム株式会社
GC28-1757-00
OS/390 MVS JCL Reference
(一部改変)