COBOL

条件分岐と繰り返し

IF、EVALUATE、PERFORMを使って、判断と反復処理を組み立てます。

COBOL入門の講座一覧

01

IF文で条件を判断する

IFは条件が真かどうかで処理を分けます。条件が終わる場所をEND-IFで明示すると、後ろの文まで条件に含めてしまう事故を防げます。

合否を判定するCOBOL
01 SCORE PIC 9(3) VALUE 78.

IF SCORE >= 60
    DISPLAY "合格です。"
ELSE
    DISPLAY "再挑戦しましょう。"
END-IF.
実行結果OUTPUT
合格です。

比較には=、>、<、>=などを使います。複数の条件はANDやORで結合できます。

02

EVALUATEで多分岐する

値によって処理がいくつも分かれるときは、EVALUATEが読みやすくなります。ほかの言語のswitchやmatchに近い使い方です。

ランクを判定するCOBOL
01 RANK-CODE PIC X VALUE "B".

EVALUATE RANK-CODE
    WHEN "A" DISPLAY "優秀"
    WHEN "B" DISPLAY "良好"
    WHEN "C" DISPLAY "要復習"
    WHEN OTHER DISPLAY "不明なランク"
END-EVALUATE.
実行結果OUTPUT
良好

どの条件にも当てはまらない場合はWHEN OTHERで受けます。入力値に想定外の値が来るプログラムでは、WHEN OTHERを用意しておくと調査しやすくなります。

03

PERFORM TIMESで回数を指定する

同じ処理を決まった回数だけ繰り返すときは、PERFORM n TIMESを使います。

1から3まで表示するCOBOL
01 NUMBER-VALUE PIC 9 VALUE 1.

PERFORM 3 TIMES
    DISPLAY "処理中: " NUMBER-VALUE
    ADD 1 TO NUMBER-VALUE
END-PERFORM.
実行結果OUTPUT
処理中: 1
処理中: 2
処理中: 3
04

PERFORM UNTILで終了条件を決める

条件が成立するまで繰り返す場合はPERFORM UNTILを使います。値を更新する命令がないと無限ループになるため、ループ内で終了条件へ近づける処理を必ず書きます。

カウンターが5になるまで繰り返すCOBOL
01 COUNTER PIC 9 VALUE 1.

PERFORM UNTIL COUNTER > 5
    DISPLAY COUNTER
    ADD 1 TO COUNTER
END-PERFORM.
実行結果OUTPUT
1
2
3
4
5
05

練習

点数を55から95まで5点ずつ増やし、60点以上なら「合格」、それ以外なら「再挑戦」と表示してください。

次に、EVALUATE TRUEを使い、90点以上をA、80点以上をB、70点以上をC、それ未満をDと判定してみましょう。