■  IF/ELSE/ENDIFステートメント


IF/ELSE/ENDIFステートメント構成は、ジョブ内のジョブ・ステップを条件付き で実行するために使用します。

IFステートメントの後には、必ず関係式とTHEN文節を続けます。任意指定で、ELSE文節 をTHEN文節の後に続けることができます。
ENDIFステートメントは、必ずELSE文節 (存在する場合)またはTHEN文節の後に続けます。

IF/THEN/ELSE/ENDIFステートメント構成を最高15レベルまでネストすることができます。 THEN文節およびELSE文節で実行するステップは、他のIF/THEN/ELSE/ENDIFステートメント構成とすることができます。

<サンプル1>
//STEP1EXECPROC=xxx
/*  
//STEP2EXECPGM=aaa,COND=(0,EQ,STEP1.ST1)
/*  
// IF(STEP1.ST1.RC NE 0) THEN
//STEP3EXECPGM=aaa
// ENDIF 
上記のSTEP2とSTEP3は、同じことを意味します。


<サンプル2> 複合条件の例
//STEP1EXECPGM=xxx
// IF(ABEND | STEP1.RC > 8) THEN
//TRUEEXECPGM=aaa
// ELSE 
// ENDIF 
//NEXTEXECPGM=bbb

上記例はジョブの前のステップで異常終了が起ったか、またはSTEP1の戻りコードが8より大きいかのいずれかであれば、 aaaを呼び出します。それ以外の場合、システムは、ステップTRUEを迂回し、空白のELSE文節を通りNEXTに進みます。

RCはIBMのキーワードで、実行開始時点ではゼロに設定されます。
また、戻りコードの範囲は0〜4095です。

◆ RCについて

特定のステップのリターンコードをテストするには、stepname.RC、または、stepname.procstepname.RCと指定します。
ステップ名を省略すると、評価時点より前のステップの最大の値が評価されます。




<サンプル3> アベンドのチェックの例
//STEP1EXECPGM=xxx
// IFABEND) THEN
//OKOKEXECPGM=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
      (一部改変)

BEFORE PAGE

TOP PAGE