Hitachi

COBOL2002 言語 拡張仕様編


24.2.2 第2次規格以前の仕様(-StdVersion,1,-StdVersion,2)

-StdVersion,1オプションは第1次規格以前,-StdVersion,2オプションは第2次規格以前の仕様で翻訳することを指定するが,ここでは第1次規格と第2次規格の仕様が同じで第3次規格と第4次規格との間で解釈が異なっている言語仕様について次に示す。

〈この項の構成〉

(1) VARYINGとAFTERの指定があるPERFORM文での評価順序

-StdVersionオプションを指定した場合,次の書き方のとき,標準仕様のPERFORM文の規則と異なる。

形式

[図データ]

(備考)

次の言語要素は,第2次以前の規格にはなかったが,このシステムでは-StdVersionオプション指定時にも書くことができる。

(a)うちPERFORM文(手続き名を省略し,無条件文END-PERFORMを書く)

(b)WITH TEST BEFORE/AFTER指定

(c)AFTER指定の3回以上の繰り返し記述

一般規則

次に,標準仕様のPERFORM文と異なる規則だけ説明する。

  1. PERFORM文の実行中に,条件2(内側のループの終了条件)が成立すると,次の順に実行される。

    (i)一意名4など(内側のループの制御変数)を,一意名5などの値で再初期化する。

    (ii)一意名1など(外側のループの制御変数)を,一意名3などの値で増加させる。

  2. PERFORM文の実行中に,条件3(内側のループの終了条件)が成立すると,次の順に実行される。

    (i)一意名7など(内側のループの制御変数)を,一意名8などの値で再初期化する。

    (ii)一意名4など(外側のループの制御変数)を,一意名6などの値で増加させる。

    (注意)

    -StdVersionオプション未指定時には,上記の(i)〜(ii)の順番が入れ替わる。

    (例1)

           01 J        PIC  99  COMP.
           01 K        PIC  99  COMP.
           01 WK-1.
             02 WK-2         OCCURS  4.
               03 WK-3 PIC X OCCURS  4.
                    :
               MOVE SPACE TO WK-1.
               PERFORM PROC-1 
                 VARYING J FROM 1 BY 1 UNTIL J > 4
                 AFTER K FROM J BY 1 UNTIL K > 4,
                    :
           PROC-1.
               MOVE '*' TO WK-3(J,K)

    上記の(例1)のPERFORM文の流れを次に示す。

    図24‒1 PERFORM文の流れ

    [図データ]

    -StdVersionオプションを指定して,PERFORM文を実行すると,「*」の転記は次のとおりに行われる。

    [図データ]

    同じ例を,-StdVersionオプションを指定しないで実行すると,「図24‒1 PERFORM文の流れ」中の(i)と(ii)の処理の順番が入れ替わる。このとき,PERFORM文の実行の結果,「*」の転記は次のとおりに行われる。

    [図データ]

    -StdVersionオプション未指定時の仕様は,次に示す例2のうちPERFORM文と同じである。

    (例2)

               PERFORM VARYING J FROM 1 BY 1 UNTIL J > 4
                 PERFORM VARYING K FROM J BY 1 UNTIL K > 4
                   MOVE '*' TO WK-3(J,K)
                 END-PERFORM
               END-PERFORM.
【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.31 PERFORM文