今回は条件分岐を行う場合について解説する。
COBOLではC言語やPythonと同様に、IF文を使用して条件分岐をすることができる。
IFの使い方
COBOLでは、以下のようにIF文を使用する。
IF 条件式A THEN
条件式Aが真の時に実行する処理
END-IF.
これは、条件式Aが成り立つ場合に処理を実行する。
条件式Aが成り立たない場合の処理は以下のように記述する。真ではない時に、ELSE内の処理が実行されることとなります。
IF 条件式A THEN
条件式Aが真の時に実行する処理
ELSE
条件式Aが成り立たない時に実行する処理
END-IF.
複数の条件を使用する場合
COBOLで複数の条件を使用したい場合には、IF文を入れ子にして使用します。
IF 条件式A THEN
条件式Aが真の時に実行する処理
ELSE IF 条件式B THEN
条件式Bが真の時に実行する処理
ELSE IF 条件式C THEN
条件式Cが真の時に実行する処理
ELSE
条件式A,B,Cが成り立たない時に実行する処理
END-IF
END-IF
END-IF.
以上のように記載することで複数の条件を使用することができます。
複数の条件を使用する際には、最後の「END-IF」の数を「IF」の数と同じにしなければいけないことに注意。
複合条件(AND、OR)の使用方法
複数の条件を使用する場合、上述したようにIFとELSEを使用することでも実現できるが、処理する内容が同じ場合には条件をまとめるといったことも効率化や可読性に一役買う。COBOLではANDやORを使用して、複合条件を作成することができる。
ORの使い方
ORは複数の条件を結合し、一つの条件が合致すれば全体の条件が合致したことになる。
IF 条件式A OR 条件式B THEN
条件式Aか条件式Bが真の時に実行する処理
END-IF.
条件式Aと条件式Bの二つが真の場合も当然に全体の条件に合致したことになり、処理が実行される。
また、COBOLのORは、二つだけではなく、三つ以上のORをつなげることができる。
ANDの使い方
ANDは全ての条件が合致したときに、全体の条件に合致したことになる。
IF 条件式A AND 条件式B THEN
条件式Aと条件式Bが真の時に実行する処理
END-IF.
全ての条件が合致しない時は当然、全体の条件も合致していないことになる。
COBOLで使える論理式
COBOLの条件式には以下の様々な論理式が使用できる。
演算子 | 意味 | 例 |
---|---|---|
= | 等しい | A = B |
NOT = | 等しくない | A NOT = B |
> | より大きい | A > B |
NOT > | より大きくない | A NOT > B |
< | より小さい | A < B |
NOT < | より小さくない | A NOT < B |
>= | 以上 | A >= B |
<= | 以下 | A <= B |
AND | かつ | A = B AND C = D |
OR | または | A = B OR C = D |
NOT | 否定 | NOT A = B |
英語の比較演算子
COBOLは事務の方にも使いやすい言語として作成されたため、英語も使用することができる。
上記で説明した論理式は、英語で書くと以下のようになる。ちなみに、「IS」と「THAN」は省略可能です。
演算子 | 意味 | 例 |
---|---|---|
IS EQUAL TO | 等しい = | A IS EQUAL TO B |
IS NOT EQUAL TO | 等しくない NOT = | A IS NOT EQUAL TO B |
IS GREATER THAN | より大きい > | A IS GREATER THAN B |
IS NOT GREATER THAN | より大きくない NOT > | A IS NOT GREATER THAN B |
IS LESS THAN | より小さい < | A IS LESS THAN B |
IS NOT LESS THAN | より小さくない NOT < | A IS NOT LESS THAN B |
IS GREATER THAN OR EQUAL TO | 以上 >= | A IS GREATER THAN OR EQUAL TO B |
IS LESS THAN OR EQUAL TO | 以下 <= | A IS LESS THAN OR EQUAL TO B |