カテゴリ: COBOL 更新日: 2025/12/23

COBOLのif文の使い方を完全ガイド!初心者でもわかる条件分岐とネスト

IF文のネストと複雑な条件の記述例
IF文のネストと複雑な条件の記述例

先生と生徒の会話形式で理解しよう

生徒

「COBOLで条件によって分岐する方法ってありますか?」

先生

「COBOLでは、if文を使って、簡単に条件分岐することができます。」

生徒

「具体的にはどのように使うんですか?」

先生

「それでは、基本的な使い方を見ていきましょう!」

1. if文とは?

1. if文とは?
1. if文とは?

COBOLのif文は、プログラムの中で条件に応じて処理を切り替えるための命令です。たとえば、「年齢が20歳以上なら『成人』と表示する」など、条件分岐を行いたいときに使います。条件分岐とは、「もし〜ならば○○する、そうでなければ××する」といった判断をプログラムにさせることです。

以下は、年齢が20歳以上かどうかを判断する基本的なif文の例です。


IF AGE >= 20 THEN
    DISPLAY "あなたは成人です。"
END-IF

このように、COBOLのif文では、IFTHENを使って条件を書き、最後にEND-IFで終わります。中括弧{}などは使いません。

2. ネスト(入れ子)されたif文の使い方

2. ネスト(入れ子)された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を使って条件に合わなかった場合の処理を書く

3. ELSEを使って条件に合わなかった場合の処理を書く
3. ELSEを使って条件に合わなかった場合の処理を書く

IF文では、条件に合わなかった場合の処理も書くことができます。それがELSEです。「もし〜なら〜する、そうでなければ〜する」という形です。

以下の例では、年齢が20歳以上なら「成人」と表示し、そうでなければ「未成年」と表示します。


IF AGE >= 20 THEN
    DISPLAY "あなたは成人です。"
ELSE
    DISPLAY "あなたは未成年です。"
END-IF

ELSEを使うと、1つの条件に対して2通りの分岐ができます。どちらか一方の処理が必ず実行される形になるので、分かりやすくなります。

4. 複雑な条件を1つのIF文にまとめる方法

4. 複雑な条件を1つのIF文にまとめる方法
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

ANDORを使うときは、条件が正しく組み合わされているかを意識しましょう。カッコ()で囲むことで優先順位も制御できます。

5. 実行結果の例

5. 実行結果の例
5. 実行結果の例

以下は、年齢が18歳で、国籍が「JP」の場合の出力例です。上記の複雑な条件に合致しないため、表示されません。


年齢が25歳で、国籍が「JP」なら以下のように表示されます。


日本の成人です。

6. ネストと複雑な条件はどちらが良いの?

6. ネストと複雑な条件はどちらが良いの?
6. ネストと複雑な条件はどちらが良いの?

ネストされたif文と、複数の条件を1行で書く方法は、どちらにもメリットがあります。ネストは段階的に判断したいときに分かりやすく、1行で条件をまとめるとコードがすっきりします。ただし、条件が増えてくると、1行で書いた方が読みづらくなることもあるので注意が必要です。

初心者の方には、まずはネストを使って段階的に判断する方法をおすすめします。慣れてきたらANDORを使ってまとめるスタイルにチャレンジしてみましょう。

7. よくあるミスと注意点

7. よくあるミスと注意点
7. よくあるミスと注意点
  • IF文の最後には必ずEND-IFを忘れずに。
  • 条件式の比較には「=」を使い、「==」や「!=」などは使えません。
  • 文字列の比較は必ずダブルクォート(")で囲む必要があります。
  • ネストが深くなるとコードが読みづらくなるので、適切に整理しましょう。

まとめ

まとめ
まとめ

COBOLのif文は、とても素直な書き方ができる条件分岐です。年齢や点数、コードや入力された値によって表示内容や処理を切り替えることができるため、実務でも必ず使用する基本構文です。今回の記事では、単純なIFだけでなく、ELSEを使った分岐、さらにネストした条件分岐、ANDやORを用いた複数条件の組み合わせまで丁寧に確認しました。特に、ネストと複数条件は、実際のCOBOLでも頻繁に登場するため、初心者の段階で慣れておくと後々スムーズにコードを読めるようになります。

まず、IFとTHENで始まり、END-IFで終えるという形は、どんな複雑な条件でも変わりません。IF文が増えても、終わりを忘れずに記述すれば問題なく動きます。慣れないうちは、IFを書いたら同時にEND-IFを書く癖をつけておくとミスが減ります。特にネストすると、END-IFがどこに対応するか見失いやすいので、インデントを丁寧に揃えておくと読みやすくなります。

ELSEが使えると、「もし○○ならA、そうでなければB」というように、分岐が明確になります。ただ「条件に当てはまったときだけ処理したい」という場面より、「当てはまらなかったときも別のメッセージを出したい」という場面の方が多いので、ELSEは自然と使い慣れていきます。たとえば、入力された点数が60点以上なら合格、それ以外なら不合格、というような処理は、どの分野のシステムでも登場します。

さらに、ネストされたIF文は、一段ずつ確認しながら判断させたいときにとても便利です。「年齢が20歳以上」で「国籍が日本」のように条件が増えていく場面はたくさんあります。段階的に読みやすくなるため、初心者には理解しやすい構造です。一方で、条件を一行にまとめるANDやORはスッキリした記述ができるという利点もありますが、条件が増えすぎると読みづらさが増していくので、状況に合わせて書き分ける柔軟さが大切になります。

IF文が正しく動いているかどうかを確認するには、表示内容を分かりやすくしながらテストすることも重要です。DISPLAYを使って確認しながら条件を調整していくと、思った通りの動作をさせられるようになります。特に、国籍コードや数値などが入力によって変わる処理は、テストケースを複数用意すると理解が深まります。

以下は、今回学んだ内容をまとめたサンプルです。年齢と点数を使ってメッセージを変える処理をひとつに組み立てています。


       IDENTIFICATION DIVISION.
       PROGRAM-ID. IF-SAMPLE-END.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 AGE        PIC 99 VALUE 18.
       01 SCORE      PIC 99 VALUE 75.

       PROCEDURE DIVISION.
*      年齢の判定
       IF AGE >= 20 THEN
           DISPLAY "あなたは成人です。"
       ELSE
           DISPLAY "あなたは未成年です。"
       END-IF

*      点数の判定
       IF SCORE >= 80 THEN
           DISPLAY "とても良い成績ですね。"
       ELSE IF SCORE >= 60 THEN
           DISPLAY "合格おめでとうございます。"
       ELSE
           DISPLAY "次はもっと頑張りましょう。"
       END-IF

       STOP RUN.

このサンプルでは、IF、ELSE、そしてELSE IFのように条件を重ねて使っています。実際のCOBOLでは、さらに国コードや顧客情報などを組み合わせて複雑な処理をしていきますが、基本は今回の考え方と変わりません。ひとつひとつの条件を丁寧に積み重ねることが、正しいロジックへ繋がります。

IF文は一見単純ですが、業務システムの大部分を支えていると言っても過言ではありません。銀行の残高判定、保険料計算、給与処理、顧客情報管理など、条件によって処理が変わるシーンはどこにでも存在しています。そう考えると、IF文を正確に理解することは、COBOLを扱う上での大きな基礎力になります。

また、条件が複雑になると、コードの読みやすさが非常に重要になります。インデントを揃えたり、コメントを入れたり、処理を小さく分けたりすることで、見やすさは格段に変わります。自分以外の人が読む場面や、未来の自分が読み返す場面を意識しながら書くと、自然と整理されたCOBOLになります。

IF文を覚えたあとは、EVALUATE文というより大きな条件分岐も学ぶことになりますが、まずはIFでしっかり基礎を固めることが安心につながります。今回の内容を何度か実際に入力して動かしてみると、理解がより深まります。

先生と生徒の振り返り会話

生徒

「IF文って、思ったより書き方が単純なんですね。でもネストやAND、ORを使うと、だんだん頭がこんがらがりそうです…」

先生

「最初はゆっくり慣れれば大丈夫ですよ。ネストは段階で考えられるので初心者向き、ANDとORは慣れてくると便利、という感覚で使い分けると良いですね。」

生徒

「ELSEがあると、どっちにしても必ず結果が決まるのが分かりやすかったです。自分のプログラムでも使えそうです!」

先生

「その調子です。IF文はCOBOLの基礎なので、今回の書き方を覚えておけば他の処理にも応用できますよ。」

生徒

「ネストが多いときは、インデントをそろえると読みやすいのも覚えておきます!」

先生

「良い気づきですね。読みやすいコードは、それだけで価値があります。これからも条件分岐をいろいろ試してみましょう。」

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法