IF~THEN文による条件分岐

プログラムの途中で処理を分岐させたい場合は、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 = BAとBが等しい
NOT = 等しくないA NOT = BAとBが等しくない
より大きいA > BAがBより大きい
< 以上A >= BAがB以上
›= より小さいA < BAがBより小さい
<= 以下A <= BAが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.

«  IF~THEN文による条件分岐  »