IF文で条件を判断する
IFは条件が真かどうかで処理を分けます。条件が終わる場所をEND-IFで明示すると、後ろの文まで条件に含めてしまう事故を防げます。
合否を判定するCOBOL
01 SCORE PIC 9(3) VALUE 78.
IF SCORE >= 60
DISPLAY "合格です。"
ELSE
DISPLAY "再挑戦しましょう。"
END-IF.実行結果OUTPUT
合格です。比較には=、>、<、>=などを使います。複数の条件はANDやORで結合できます。
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を用意しておくと調査しやすくなります。
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
処理中: 3PERFORM 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練習
点数を55から95まで5点ずつ増やし、60点以上なら「合格」、それ以外なら「再挑戦」と表示してください。
次に、EVALUATE TRUEを使い、90点以上をA、80点以上をB、70点以上をC、それ未満をDと判定してみましょう。
