Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


IF ステートメント

IF ステートメントは条件を評価し、その評価結果に応じてオブジェクト・プログラム中で処置を選択できるようにします。

構文図を読む構文図をスキップする
フォーマット 

                           .------------------.     
                           V                  |     
>>-IF--条件-1--+------+--+----ステートメント-1--+-+--------------->
               '-THEN-'  '-NEXT SENTENCE--------'   

>--+--------------------------------+--+------------+----------><
   |         .------------------.   |  |        (1) |   
   |         V                  |   |  '-END-IF-----'   
   '-ELSE--+----ステートメント-2--+-+-'                   
           '-NEXT SENTENCE--------'                     

注:
  1. END-IF はステートメント-2 または NEXT SENTENCE と共に指定することができます。

条件-1
これは、単純条件にも複合条件にもすることができます (条件式を参照)。
ステートメント-1ステートメント-2
次のいずれかにできます。
  • 命令ステートメント
  • 条件ステートメント
  • 条件ステートメントが後につく命令ステートメント
NEXT SENTENCE
NEXT SENTENCE 句を指定すると、次の分離文字ピリオド の直後にある暗黙の CONTINUE ステートメントに制御が渡されます。

NEXT SENTENCE を END-IF と共に指定すると、END-IF の後のステートメントに制御が 渡されるのではなく、最も近い後続のピリオドの後のステートメントに制御が渡されます。

END-IF 句

この明示的範囲終了符号は、IF ステートメントの範囲を区切るために使用されます。 END-IF 句を使うことによって、 条件付き IF ステートメントを他の条件ステートメント中にネストすることができます。 明示的範囲終了符号の詳細については、範囲区切りステートメントを参照してください。

IF ステートメントの範囲は、次のいずれかにより終わらせることができます。

  • ネスト構造で同じレベルにある END-IF 句。
  • 分離文字ピリオド。
  • ネストされている場合は、 より高いネスト・レベルにある IF ステートメントに関連付けられている ELSE 句。

制御の移動

テストされた条件が、真であれば、次に示す処置の 1 つが取られます。

  • ステートメント-1 が指定されていれば、ステートメント-1 が実行されます。ステートメント-1 に、 プロシージャー・ブランチ・ステートメントまたは条件ステートメントが入っている場合、 そのステートメントの規則に従って制御が移ります。ステートメント-1 にプロシージャー・ブランチ・ステートメントが入っていない場合は、ELSE 句が指定されていても無視され、対応する END-IF 句の後、 または分離文字ピリオドの後にある次の実行可能ステートメントに制御が渡されます。
  • NEXT SENTENCE が指定されている場合、制御は、 次の分離文字ピリオドの直前にある暗黙の CONTINUE ステートメントに渡されます。

テストされた条件が、偽であれば、次に示す処置の 1 つが取られます。

  • ELSE ステートメント-2 が指定されていれば、ステートメント-2 が実行されます。ステートメント-2 に、 プロシージャー・ブランチ・ステートメントまたは条件ステートメントが入っている場合、 そのステートメントの規則に従って制御が移ります。ステートメント-2 にプロシージャー・ブランチ・ステートメントまたは条件ステートメントが入っていない場合、制御は、対応する END-IF 句の後または分離文字ピリオドの後にある次の実行可能ステートメントに渡されます。
  • ELSE NEXT SENTENCE が指定されている場合は、制御は、 次の分離文字ピリオドの直前にある暗黙の CONTINUE STATEMENT に渡されます。
  • ELSE ステートメント-2 も ELSE NEXT SENTENCE も指定していない場合、 制御は、対応する END-IF または分離文字ピリオドの後にある、次の実行可能ステートメントに渡されます。

ELSE 句が省略されている場合には、この条件の後に続く、 対応する END-IF 句、または、分離文字ピリオドの前までにあるすべてのステートメントは、ステートメント-1 の一部とみなされます。

ネストされた IF ステートメント

IF ステートメントがステートメント-1 またはステートメント-2 として現れるか、 またはステートメント-1 またはステートメント-2 の一部として現れる場合、 この IF ステートメントはネスト された IF ステートメントです。

ネストされた IF ステートメントは、左から右に処理される、一致した IF、ELSE、および END-IF の組み合わせとみなされます。したがって、検出される ELSE はすべて、 最も近い場所にある先行の IF (まだ ELSE と一致していないか、または暗黙的あるいは明示的に終了されていないもの) と一致します。検出される END-IF はすべて、暗黙的または明示的に終了されていない、 先行の最も近い場所にある IF と一致します。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)