プログラムの途中で処理を分岐させたい場合は、IF~THEN文を使用します。
COBOLは他のプログラミング言語と同じように、上から下にプログラムは実行されます。
(上から下に実行される流れを「順次構造」と言います。)
しかし、ほとんどのプログラムにおいて、ただ単純に上から下に実行するだけではプログラムの要件を満たすことができず、入力された内容などにより、処理を分岐させたい場合がでてきます。
COBOLでは、処理を分岐させる方法は複数ありますが、今回はIF~THEN文を使った方法を紹介します。
下記はIF~THEN文のサンプルソースです。
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. SAMPLE-05. 000030* 000040 ENVIRONMENT DIVISION. 000050* 000060 DATA DIVISION. 000070 WORKING-STORAGE SECTION. 000080 77 NUM PIC 9(3). 000090* 000100 PROCEDURE DIVISION. 000110 MAIN. 000120 ACCEPT NUM FROM CONSOLE. 000130 IF NUM >= 100 THEN 000140 DISPLAY "100以上の数値" UPON CONSOLE 000150 END-IF. 000160 STOP RUN.
キーボードから100以上の数値を入力したらコンソール上に”100以上の数値”と表示され、100未満の場合は、何も起こらないままプログラムは終了します。
※上記サンプルでは、数値以外のデータを入力した場合、実行エラーが発生してしまいます。詳しくはこちら。
論理式
分岐の条件は論理式で記述します。
IF~THEN文を日本語に直訳すると「もし○○なら××を実行する」と表せます。
この「○○なら」の部分が論理式に相当します。
記号 | 意味 | プログラムでの表現 | その意味 |
= | 等しい | A = B | AとBが等しい |
NOT = | 等しくない | A NOT = B | AとBが等しくない |
| より大きい | A > B | AがBより大きい |
< | 以上 | A >= B | AがB以上 |
= | より小さい | A < B | AがBより小さい |
<= | 以下 | A <= B | AがB以下 |
論理式が成り立たないときに実行する処理を定義したい場合は下記のように記述します。
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. SAMPLE-06. 000030* 000040 ENVIRONMENT DIVISION. 000050* 000060 DATA DIVISION. 000070 WORKING-STORAGE SECTION. 000080 77 NUM PIC 9(3). 000090* 000100 PROCEDURE DIVISION. 000110 MAIN. 000120 ACCEPT NUM FROM CONSOLE. 000130 IF NUM > 100 THEN 000140 DISPLAY "100より大きい" UPON CONSOLE 000150* 000160 ELSE 000170 DISPLAY "それ以外" UPON CONSOLE 000180* 000190 END-IF. 000200 STOP RUN.
- IF~THEN文 書式
- IF 論理式 THEN
論理式が成り立つときに実行する処理
ELSE
論理式が成り立たなかったときに実行する処理
END-IF.