導入
「もし〜なら、こうする」という条件分岐は、どの言語でもプログラムの核となる機能です。COBOLの IF 文も、英語の文に近い自然な書き方をします。
説明
01 WS-SCORE PIC 9(3) VALUE 75.
PROCEDURE DIVISION.
IF WS-SCORE >= 80
DISPLAY "合格"
ELSE
DISPLAY "不合格"
END-IF.
IF 条件… 条件を評価し、真なら直後の処理を実行。ELSE… 条件が偽のときの処理(省略可能)。END-IF.… IF文の終わりを明示する(COBOL-85以降で使える書き方。省略するとピリオドの位置で範囲が決まってしまい、意図しない挙動を生みやすいため、常にEND-IFを書くのが現代の推奨スタイルです)。
比較演算子は記号と英単語のどちらでも書けます。
| 記号 | 英単語 | 意味 |
|---|---|---|
= | EQUAL TO | 等しい |
<> | NOT EQUAL TO | 等しくない |
> | GREATER THAN | より大きい |
< | LESS THAN | より小さい |
>= | GREATER THAN OR EQUAL TO | 以上 |
<= | LESS THAN OR EQUAL TO | 以下 |
条件の組み合わせには AND / OR / NOT が使えます。
IF WS-SCORE >= 80 AND WS-SCORE <= 100
DISPLAY "優秀な成績です"
END-IF.
IF は入れ子(ネスト)にもできますし、ELSE IF 相当として次のように連結もできます。
IF WS-SCORE >= 90
DISPLAY "S評価"
ELSE
IF WS-SCORE >= 70
DISPLAY "A評価"
ELSE
DISPLAY "B評価"
END-IF
END-IF.
このように条件が3つ以上に増えてくると、ネストが深くなって読みにくくなります。次のレッスンで学ぶ EVALUATE 文が、こうした多分岐をすっきり整理してくれます。
試すには
レッスン18で作った88レベルの条件名(STATUS-ERROR など)を使って、IF STATUS-ERROR ... END-IF という形の分岐を書いてみましょう。数値の比較よりも意図が伝わりやすいことを実感できるはずです。