COBOLのIF文完全ガイド!初心者でもわかる条件分岐の基本構文
生徒
「COBOLで条件に応じて別の処理を実行する方法ってありますか?」
先生
「はい、COBOLではIF文を使って、条件によってプログラムの流れをコントロールできますよ。」
生徒
「初心者にもわかりやすく教えてほしいです!」
先生
「では、基本構文と条件分岐の書き方を、一つずつ丁寧に見ていきましょう。」
1. IF文とは?条件分岐の基本
COBOLのIF(イフ)文は、「もし〜ならば」という意味で、条件分岐をする命令です。プログラム内で条件によって実行する処理を選び分けられるようになります。
これがあることで、入力された値によって「Aの場合はこうする」「Bの場合は違う処理をする」と、流れを制御できるようになります。
2. IF文の基本構文
IF文の書き方は、とてもシンプルです。基本的な構文は次のとおりです。
IF 条件
実行する処理
END-IF
「END-IF」でIF文を終える点がCOBOLの特徴です。
3. ELSE付き条件分岐
条件に当てはまらない場合の処理をELSEで書けます。
IF 条件
条件が真の時の処理
ELSE
条件が偽の時の処理
END-IF
これにより、条件によって異なる動きを作れます。
4. 比較演算子・条件の種類
IF文では、いろんな条件を使えます。よく使うのは次のものです:
=(イコール)…等しいかどうか>、<…より大きい・小さい>=、<=…以上・以下AND、OR…複数条件の組み合わせIS NUMERIC…数字だけか調べる条件
たとえば「年齢が20以上で、かつ番号が数字だけ」のように複数条件が使えます。
5. サンプル:年齢チェック
IDENTIFICATION DIVISION.
PROGRAM-ID. AGE-CHECK.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 AGE-VALUE PIC 9(2).
PROCEDURE DIVISION.
DISPLAY "年齢を入力してください:"
ACCEPT AGE-VALUE
IF AGE-VALUE >= 20
DISPLAY "あなたは成人です。"
ELSE
DISPLAY "未成年です。"
END-IF
STOP RUN.
このプログラムでは、入力された年齢が20以上なら「成人」、それ以外なら「未成年」と表示されます。
6. 複数条件の使い方
ANDやORを使えば、複雑な条件でも表現できます。
IF SCORE >= 60 AND ATTENDANCE = "OK"
DISPLAY "合格です"
ELSE
DISPLAY "要確認"
END-IF
この例では、点数60以上かつ出席がOKなら「合格」と表示します。
7. 条件に使える比較や文字列
IF文では数値だけでなく、文字列の比較もできます。
IF USER-INPUT = "YES"
DISPLAY "はいが選ばれました"
END-IF
文字列は英語の大文字・小文字を区別するので、入力される文字に注意しましょう。
8. ネスト(入れ子)構造もOK
IF文の中にさらにIF文を入れる「ネスト」も可能です。ただし、複雑になるとわかりにくくなるので、初心者はシンプルに使うのがおすすめです。
9. IF文を使いこなすポイント
- 条件は具体的に書く(曖昧な条件はバグのもと)
- END-IFを忘れずに
- ELSEも活用して読みやすくする
- AND/ORで複数条件を組み合わせれば表現の幅が広がる
IF文はプログラミングの基本中の基本です。丁寧に書いて、何度も実行しながら慣れていきましょう。
まとめ
COBOLのIF文は、プログラムの流れを制御するための最も基本的で重要な構文です。条件に応じて異なる処理を実行したいときに使われ、業務ロジックを正確に表現するうえで欠かせない存在です。今回学んだように、IF文の基本構文はとてもシンプルですが、実際の業務では年齢判定、入金確認、在庫数のチェック、文字列の判定など、さまざまな場面で活用されます。
特にIF ~ ELSE ~ END-IFの構成を理解しておくことで、条件が成立したときと成立しなかったときの処理を明確に分けることができます。また、ANDやORといった論理演算子を使えば、複数の条件を組み合わせることでより柔軟な判定ができるようになります。これにより、「条件Aかつ条件Bが成立する場合だけ処理を実行する」といった、現実の業務ルールに即した判断が可能となります。
IF文では、数値の比較だけでなく、文字列の比較や、特定の条件が数値かどうかを調べるIS NUMERICといった判定も可能です。こうしたさまざまな条件式を組み合わせることで、COBOLプログラムのロジックをより明確に、かつ可読性の高い形で記述することができるようになります。
また、IF文はネスト(入れ子構造)にも対応しており、「IF文の中にIF文」を書くこともできますが、入れ子が深くなりすぎると可読性が下がるため、初心者のうちはまず単純な構文に慣れてから、徐々に複雑な構成に挑戦していくのが良いでしょう。
ここで、IF文を使って会員ステータスを判定するサンプルを紹介します。
サンプル:会員ランクによるメッセージ表示
IDENTIFICATION DIVISION.
PROGRAM-ID. RANK-CHECK.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MEMBER-RANK PIC X(10).
PROCEDURE DIVISION.
DISPLAY "会員ランクを入力してください(GOLD/SILVER/一般):"
ACCEPT MEMBER-RANK
IF MEMBER-RANK = "GOLD"
DISPLAY "ようこそゴールド会員さま!特典をご確認ください。"
ELSE IF MEMBER-RANK = "SILVER"
DISPLAY "シルバー会員の皆さま、いつもご利用ありがとうございます。"
ELSE
DISPLAY "ご利用ありがとうございます。一般会員さまも引き続きご活用ください。"
END-IF
STOP RUN.
このようにIF文を使うことで、会員のランクに応じた挨拶文や処理を簡単に書けるようになります。判定対象は数値でも文字列でもよく、現場の業務仕様に合わせた処理が実現できます。
最後に、COBOLのIF文を扱う際に注意すべきポイントを振り返ります。まずはEND-IFを忘れずに書くこと、ELSEをうまく活用して処理を分かりやすく書くこと、そして条件式は常に明確にしてあいまいな判断を避けることです。業務ロジックはしばしば複雑になりますが、IF文の基本を押さえておけば、複雑な処理も少しずつ対応できるようになります。
たとえば、売上金額が一定以上のときに割引率を変える、在庫数がゼロのときに出荷を止める、ユーザーの入力値に応じて確認メッセージを出す、などの条件処理は、すべてIF文で記述可能です。COBOLの条件分岐は業務ロジックの根幹を支える重要な技術ですので、練習を重ねて確実にマスターしていきましょう。
生徒
「先生、IF文って最初は難しそうって思ったけど、使い方が分かってきたら楽しくなってきました!」
先生
「いいですね!条件に応じて処理を分けるというのは、実はプログラミングの中でもすごく実用的で、やりがいのあるところなんですよ。」
生徒
「ANDとかORを使うと、もっと細かく判断できて便利ですね!ちょっとずつ応用もできそうな気がしてきました。」
先生
「その調子です。最初は単純な条件から始めて、慣れてきたら複雑な条件にも挑戦していきましょう。現場では、IF文をどれだけ分かりやすく書けるかが、プログラムの品質にもつながりますよ。」
生徒
「じゃあ次は、IF文とEVALUATE文をうまく使い分けられるように練習してみます!」
先生
「いい心がけですね。IF文は条件分岐の基本なので、これからも繰り返し使ってしっかり身につけましょう。」