Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


範囲終了符号

範囲終了符号は、動詞またはステートメントを終了させます。 明示的または暗黙的な範囲終了符号にすることができます。

明示範囲終了符号は、文を終了させることなく、動詞を終了させます。これは、END の後にハイフンと、終了させる動詞の名前を続けたものから構成されます (例えば、END-IF)。暗黙の範囲終了符号はピリオド (.)で、 これはまだ終了されていないすべての先行ステートメントの範囲を終了させます。

次のプログラムの断片における 2 つのピリオドは、それぞれ IF ステートメントを終了させます。そのため、このコードは、明示範囲終了符号を持つ以下の例と同等です。

IF ITEM = “A”
    DISPLAY “THE VALUE OF ITEM IS ” ITEM
    ADD 1 TO TOTAL
    MOVE “C” TO ITEM
    DISPLAY “THE VALUE OF ITEM IS NOW ” ITEM.
IF ITEM = “B”
    ADD 2 TO TOTAL.

IF ITEM = “A”
    DISPLAY “THE VALUE OF ITEM IS ” ITEM
    ADD 1 TO TOTAL
    MOVE “C” TO ITEM
    DISPLAY “THE VALUE OF ITEM IS NOW ” ITEM
END-IF
IF ITEM = “B”
    ADD 2 TO TOTAL
END-IF

暗黙の範囲終了符号を使用すると、ステートメントの終わる場所が不明確になることがあります。結果として、ステートメントを意図に反して終了させ、プログラムのロジックが変わる可能性があります。明示範囲終了符号を使用すると、プログラムが理解しやすくなり、ステートメントを意図に反して終了させることがなくなります。例えば、次のプログラム断片で、最初の暗黙の範囲例の最初のピリオドの位置を変更すると、コードの意味が変更されます。

IF ITEM = “A”
    DISPLAY “VALUE OF ITEM IS ” ITEM
    ADD 1 TO TOTAL.
    MOVE “C” TO ITEM
    DISPLAY “ VALUE OF ITEM IS NOW ” ITEM
IF ITEM = “B”
    ADD 2 TO TOTAL.

最初のピリオドが IF ステートメントを終わらせるため、その後の MOVE ステートメントおよび DISPLAY ステートメントは、字下げの意味を無視し、ITEM の値に関係なく実行されます。

プログラムをより読みやすくし、ステートメントの意図しない終了を防ぐために、特に段落内では、明示範囲終了符号を使用するようにすべきです。暗黙の範囲終了符号は、段落の終わりまたはプログラムの終わりでのみ使用してください。

条件ステートメント内にネストされている命令ステートメントについての明示的範囲終了符号をコーディングする際には、注意が必要です。 範囲終了符号が、それが意図されたステートメントと対にされるようにしてください。次の例では、範囲終了符号は最初の READ ステートメントと対になるように意図されましたが、実際には 2 つ目と対にされます。

READ FILE1
  AT END
    MOVE A TO B
    READ FILE2
END-READ

明示範囲終了符号が意図されたステートメントと対にされるようにするために、上記の例を次のようにコーディングし直すことができます。

READ FILE1
  AT END
    MOVE A TO B
    READ FILE2
    END-READ
END-READ

関連概念
条件ステートメント
命令ステートメント


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

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