PERFORM(実行)文は,幾つかの手続きに明示的に制御を移し,指定した手続きの実行が終わると,暗黙的に制御を戻します。また,PERFORM文は,そのPERFORM文の範囲に含まれる一つ以上の文の実行を制御するためにも使用されます。
PERFORM文については,マニュアル「COBOL2002 言語 標準仕様編 10.8.31 PERFORM文」を参照してください。
PERFORM UNTIL フラグ = '1' *>1.
READ 入力ファイル
AT END MOVE '1' TO フラグ *>2.
END-READ
IF フラグ = '0'
COMPUTE A = A + 1 *>3.
END-IF
END-PERFORM.
PERFORM 10 TIMES *>1.
COMPUTE I = I + 10 *>2.
DISPLAY I *>3.
END-PERFORM.
主処理.
OPEN INPUT 入力ファイル
OUTPUT 出力ファイル.
PERFORM 入力処理. *>1.
PERFORM UNTIL 終了フラグ = '1' *>2.
PERFORM 出力処理 *>3.
PERFORM 入力処理 *>4.
END-PERFORM.
CLOSE 入力ファイル
出力ファイル.
STOP RUN.
入力処理.
READ 入力ファイル
AT END MOVE '1' TO 終了フラグ *>5.
END-READ.
出力処理.
MOVE 入力レコード TO 出力レコード. *>6.
WRITE 出力レコード.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
:
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 10
:
IF A(J) = 0
EXIT PERFORM …1.
END-IF
END-PERFORM …2.
:
END-PERFORM.
PERFORM WITH TEST BEFORE VARYING
一意名2 FROM {一意名3|定数1}
BY {一意名4|定数2}
UNTIL 条件1
無条件文1
:
END-PERFORM.
PERFORM WITH TEST BEFORE VARYING
一意名2 FROM {一意名3|定数1}
BY {一意名4|定数2}
UNTIL 条件1
AFTER 一意名5 FROM {一意名6|定数3}
BY {一意名7|定数4}
UNTIL 条件2
無条件文1
:
END-PERFORM
PERFORM WITH TEST AFTER
VARYING 一意名2
FROM {一意名3|定数1}
BY {一意名4|定数2}UNTIL 条件1
無条件文1
:
END-PERFORM.
PERFORM WITH TEST AFTER
VARYING 一意名2 FROM 一意名3
BY 一意名4 UNTIL 条件1
AFTER 一意名5 FROM 一意名6
BY 一意名7 UNTIL 条件2
無条件文1
:
END-PERFORM.
PERFORM文の実行範囲にほかのPERFORM文がある場合,含まれているPERFORM文の実行範囲は,初めのPERFORM文の論理的な実行範囲の内側に完全に含まれているか,または完全に外側である必要があります。PERFORM文の実行範囲内で始められたほかのPERFORM文の制御は,前者のPERFORM文の出口を通ることはできません。また,実行中の2個以上のPERFORM文は,共通の出口を持つこともできません。
PERFORM文の詳細については,マニュアル「COBOL2002 言語 標準仕様編 10.8.31 PERFORM文」を参照してください。
PERFORM文の実行範囲の例を次に示します。