COBOL2002 使用の手引 手引編


21.3.2 TURN指令の有効範囲

TURN指令は,そのTURN指令を記述した行以降で開始される文に対して有効となります。TURN指令を文の途中に記述した場合,TURN指令はその文には適用されないで,次の文から適用されます。このため,一つの文の中でTURN指令のチェックのON/OFFを切り替えられません。

TURN指令を文の途中に記述した場合の例を,次に示します。

[図データ]

文の範囲は,先頭の語である文の名前から,明示的または暗黙的に文が終了するまでとなります。文の開始から終了までの間の構文に現れたすべての手続き文も,文の範囲に含まれます。このとき,入れ子構造になっている文の一部を共通例外処理の対象としたい場合は,対象の文の直前でTURN指令のチェックをONにします。

次の例では,PERFORM文,READ文,SET文,COMPUTE文は,それぞれ文です。このとき,READ文は,SET文およびCOMPUTE文を含み,PERFORM文はそのREAD文全体を含みます。

図21‒4 文の範囲

[図データ]

上記の例で,COMPUTE文のEC-SIZEチェックを有効にしたい場合,次のように記述します。

(COMPUTE文のEC-SIZEチェックを有効にする例)
           READ RECORD1
           AT END
             SET EOF TO TRUE
           NOT AT END
             >>TURN EC-SIZE CHECKING ON
             COMPUTE C = A + B
           END-READ
  • READ文から見た場合,TURN指令が文の途中に記述されています。そのため,READ文に対しては,TURN指令が適用されません。

  • COMPUTE文から見た場合,TURN指令が文の外に記述されています。そのため,COMPUTE文に対しては,TURN指令が適用されます。

また,SET文およびCOMPUTE文のEC-SIZEチェックを有効にしたい場合,次のように記述します。

(SET文およびCOMPUTE文のEC-SIZEチェックを有効にする例)
           READ RECORD1
           >>TURN EC-SIZE CHECKING ON
           AT END
             SET EOF TO TRUE
           NOT AT END
             COMPUTE C = A + B
           END-READ
  • READ文から見た場合,TURN指令が文の途中に記述されています。そのため,READ文に対しては,TURN指令が適用されません。

  • SET文およびCOMPUTE文から見た場合,TURN指令が文の外に記述されています。そのため,SET文およびCOMPUTE文に対しては,TURN指令が適用されます。