COBOLのif文の使い方を完全ガイド!初心者でもわかる条件分岐とネスト
生徒
「COBOLで条件によって分岐する方法ってありますか?」
先生
「COBOLでは、if文を使って、簡単に条件分岐することができます。」
生徒
「具体的にはどのように使うんですか?」
先生
「それでは、基本的な使い方を見ていきましょう!」
1. if文とは?
COBOLのif文は、プログラムの中で条件に応じて処理を切り替えるための命令です。たとえば、「年齢が20歳以上なら『成人』と表示する」など、条件分岐を行いたいときに使います。条件分岐とは、「もし〜ならば○○する、そうでなければ××する」といった判断をプログラムにさせることです。
以下は、年齢が20歳以上かどうかを判断する基本的なif文の例です。
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。"
END-IF
このように、COBOLのif文では、IFとTHENを使って条件を書き、最後にEND-IFで終わります。中括弧{}などは使いません。
2. ネスト(入れ子)されたif文の使い方
ネストとは、「if文の中にさらにif文を書く」ことです。たとえば、「年齢が20歳以上で、かつ国籍が日本の場合だけ特定の処理をする」といった複数の条件を判断する場面で使います。
以下の例は、年齢が20歳以上で、さらに国籍コードが「JP」だった場合に「日本の成人です」と表示するネストされたif文です。
IF AGE >= 20 THEN
IF NATIONALITY = "JP" THEN
DISPLAY "日本の成人です。"
END-IF
END-IF
このように、2つのif文を重ねて書くことで、細かい条件を段階的にチェックできます。プログラムは上から順番に読みます。まず年齢が20歳以上かをチェックし、その条件が正しければ次に国籍をチェックします。
3. ELSEを使って条件に合わなかった場合の処理を書く
IF文では、条件に合わなかった場合の処理も書くことができます。それがELSEです。「もし〜なら〜する、そうでなければ〜する」という形です。
以下の例では、年齢が20歳以上なら「成人」と表示し、そうでなければ「未成年」と表示します。
IF AGE >= 20 THEN
DISPLAY "あなたは成人です。"
ELSE
DISPLAY "あなたは未成年です。"
END-IF
ELSEを使うと、1つの条件に対して2通りの分岐ができます。どちらか一方の処理が必ず実行される形になるので、分かりやすくなります。
4. 複雑な条件を1つのIF文にまとめる方法
ネストするのではなく、複数の条件を一つの行で書くこともできます。そのときはAND(〜かつ)やOR(〜または)を使います。
以下の例は、「年齢が20歳以上、かつ国籍が日本」であれば「日本の成人です」と表示します。
IF AGE >= 20 AND NATIONALITY = "JP" THEN
DISPLAY "日本の成人です。"
END-IF
逆に、「年齢が20歳以上または国籍が日本」どちらか一方でも当てはまるなら表示したい場合は、ORを使います。
IF AGE >= 20 OR NATIONALITY = "JP" THEN
DISPLAY "条件のいずれかに当てはまります。"
END-IF
ANDやORを使うときは、条件が正しく組み合わされているかを意識しましょう。カッコ()で囲むことで優先順位も制御できます。
5. 実行結果の例
以下は、年齢が18歳で、国籍が「JP」の場合の出力例です。上記の複雑な条件に合致しないため、表示されません。
年齢が25歳で、国籍が「JP」なら以下のように表示されます。
日本の成人です。
6. ネストと複雑な条件はどちらが良いの?
ネストされたif文と、複数の条件を1行で書く方法は、どちらにもメリットがあります。ネストは段階的に判断したいときに分かりやすく、1行で条件をまとめるとコードがすっきりします。ただし、条件が増えてくると、1行で書いた方が読みづらくなることもあるので注意が必要です。
初心者の方には、まずはネストを使って段階的に判断する方法をおすすめします。慣れてきたらANDやORを使ってまとめるスタイルにチャレンジしてみましょう。
7. よくあるミスと注意点
- IF文の最後には必ず
END-IFを忘れずに。 - 条件式の比較には「=」を使い、「==」や「!=」などは使えません。
- 文字列の比較は必ずダブルクォート(")で囲む必要があります。
- ネストが深くなるとコードが読みづらくなるので、適切に整理しましょう。