0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

COBOLのPERFORM

Last updated at Posted at 2023-08-29

PERFORM

ループ処理を行うためのもの

PERFORM VARYINGとは

特定の変数を指定した範囲内で変化させながら繰り返し処理を行う

PERFORM VARYINGステートメントの構文

PERFORM VARYING variable-name FROM start-value BY increment-value UNTIL condition
    ...
END-PERFORM

各要素の意味

variable-name

ループ処理中に変化させる変数の名前

start-value

variable-nameの初期値

increment-value

variable-nameの増分を指定

increment-valueについて

increment-value

ループ処理中に変化させる変数の増分を指定する
ループが一回繰り返されるごとに、指定した変数がこの増分だけ増加 / 減少する

PERFORM VARYING Counter FROM 1 BY 2 UNTIL Counter > 10
    ...
END-PERFORM.

increment-valueはBY 2が該当する

Counter変数は1からスタートして、1回のループごとに2ずつ増加していく
→1,3,5,7,9,となる


condition 

ループを続けるかどうかを判定する条件式
この条件が false になるまでループが続く

PERFORM VARYINGステートメントの使用例

IDENTIFICATION DIVISION.
PROGRAM-ID. LoopExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Counter      PIC 9(3) VALUE 1.

PROCEDURE DIVISION.
    PERFORM VARYING Counter FROM 1 BY 1 UNTIL Counter > 10
        DISPLAY "Counter: " Counter
    END-PERFORM.
    STOP RUN.

Counter変数の値を1から10まで変化させながら、その値を表示している
PERFORM VARYINGステートメントによって、ループが10回繰り返される

PERFORM UNTILとは

指定した条件が満たされるまで、特定の処理を繰り返し行う

PERFORM UNTILステートメントの構文

PERFORM UNTIL condition
    statements
END-PERFORM.

各要素の意味

condition

ループの終了条件を示す条件式
TRUEになったらループは終了する

statements

実際に実行される処理

PERFORM UNTILステートメントの使用例

PERFORM UNTIL COUNTER >= 5
    DISPLAY "Counter value: " COUNTER
    ADD 1 TO COUNTER
END-PERFORM.

COUNTER の値が5未満である限り、DISPLAY ステートメントが実行される
COUNTER の値は1ずつ増加
COUNTER の値が5以上になると、PERFORM UNTIL ループは終了する

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?