COBOL2002 言語 拡張仕様編

[目次][索引][前へ][次へ]

23.2.2 第2次規格以前の仕様-StdVersion,1-StdVersion,2

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

<この項の構成>
(1) VARYINGとAFTERの指定があるPERFORM文での評価順序

(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文の流れを次に示す。

図23-1 PERFORM文の流れ

[図データ]
-StdVersionオプションを指定して,PERFORM文を実行すると,「*」の転記は次のとおりに行われる。
[図データ]
同じ例を,-StdVersionオプションを指定しないで実行すると,「図23-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文