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

COBOLのEVALUATE TRUEの使い方を完全ガイド!初心者でもわかる条件分岐とパターンマッチ

EVALUATE TRUEの活用法とパターンマッチング
EVALUATE TRUEの活用法とパターンマッチング

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

生徒

「COBOLでいろんな条件をまとめてチェックする方法ってありますか?」

先生

「それなら、EVALUATE TRUEを使うと便利ですよ。複雑な条件分岐もすっきり書けるんです。」

生徒

「EVALUATE TRUEって聞いたことないです。どうやって使うんですか?」

先生

「では、EVALUATE TRUEの使い方と、パターンマッチングの方法をわかりやすく解説しましょう!」

1. EVALUATE TRUEとは?

1. EVALUATE TRUEとは?
1. EVALUATE TRUEとは?

EVALUATE TRUE(エバリュエート トゥルー)は、COBOLの条件分岐構文の一つです。複数の条件をIF文で書くと、何重にもネスト(入れ子)になってしまい、コードが読みにくくなります。

その問題を解決するのがEVALUATE TRUEです。「TRUE(真)」を基準にして、WHEN句で条件式を評価し、最初に一致したものだけを実行します。簡単に言えば、いくつものIF文をまとめてきれいに書ける方法です。

パソコンを触ったことがない初心者の方にも伝わりやすいように、「もし〜なら〜する」をいくつも書きたい時に使う、便利な書き方と覚えておきましょう。

2. 基本的なEVALUATE TRUEの書き方

2. 基本的なEVALUATE TRUEの書き方
2. 基本的なEVALUATE TRUEの書き方

まずは、EVALUATE TRUEの基本構文を見てみましょう。


EVALUATE TRUE
    WHEN 年齢 >= 65
        DISPLAY "あなたは高齢者です。"
    WHEN 年齢 >= 20
        DISPLAY "あなたは成人です。"
    WHEN 年齢 >= 13
        DISPLAY "あなたは中高生です。"
    WHEN OTHER
        DISPLAY "あなたは子どもです。"
END-EVALUATE

EVALUATE TRUEと書くことで、次のWHENに書かれた条件を順番にチェックしていきます。そして、最初に一致した条件だけが実行されます。

OTHER(アザー)は、どれにも当てはまらなかったときに実行される「その他」の条件です。保険のような役割です。

3. IF文との違いとメリット

3. IF文との違いとメリット
3. IF文との違いとメリット

同じことをIF文で書くと、次のようにネストが深くなり、読みにくくなってしまいます。


IF 年齢 >= 65 THEN
    DISPLAY "あなたは高齢者です。"
ELSE
    IF 年齢 >= 20 THEN
        DISPLAY "あなたは成人です。"
    ELSE
        IF 年齢 >= 13 THEN
            DISPLAY "あなたは中高生です。"
        ELSE
            DISPLAY "あなたは子どもです。"
        END-IF
    END-IF
END-IF

このようにIFを何重にも重ねると、ミスもしやすくなります。

ですがEVALUATE TRUEなら、シンプルで読みやすいコードにできます。初心者の方でも理解しやすく、保守や修正も簡単です。

4. パターンマッチングとは?

4. パターンマッチングとは?
4. パターンマッチングとは?

パターンマッチングとは、「ある値や条件に合っているかどうか」を確認する方法です。EVALUATE文では、このパターンマッチングを使って、複数の条件を一気に評価できます。

たとえば、成績によってメッセージを変えたいとき、次のように書けます。


EVALUATE TRUE
    WHEN 成績 >= 90
        DISPLAY "優秀です!"
    WHEN 成績 >= 70
        DISPLAY "よくできました。"
    WHEN 成績 >= 50
        DISPLAY "がんばりましょう。"
    WHEN OTHER
        DISPLAY "再テストが必要です。"
END-EVALUATE

このように、数値の範囲ごとに処理を分けるのも、パターンマッチングの一種です。難しそうに聞こえますが、「どのパターンに当てはまるか」を見るだけなので安心してください。

5. 複数の条件を同時にチェックする

5. 複数の条件を同時にチェックする
5. 複数の条件を同時にチェックする

AND(アンド)OR(オア)を使うことで、2つ以上の条件を同時に確認できます。

たとえば、「学年が2年生で、かつ成績が80点以上」のような条件も次のように書けます。


EVALUATE TRUE
    WHEN 学年 = 2 AND 成績 >= 80
        DISPLAY "2年生で成績が良いですね!"
    WHEN 学年 = 3 AND 成績 < 60
        DISPLAY "3年生はもう少し頑張りましょう。"
    WHEN OTHER
        DISPLAY "該当なし"
END-EVALUATE

ここで使っているANDは、「両方の条件が当てはまる場合に実行する」という意味です。

逆に、どちらか一方でも当てはまればOKという場合は、ORを使います。

6. 実行結果のイメージ

6. 実行結果のイメージ
6. 実行結果のイメージ

たとえば、次のような値が入っていた場合にどう表示されるかを見てみましょう。

サンプル1: 年齢 = 70


あなたは高齢者です。

サンプル2: 成績 = 85


よくできました。

サンプル3: 学年 = 2, 成績 = 90


2年生で成績が良いですね!

7. EVALUATE TRUEの注意点とポイント

7. EVALUATE TRUEの注意点とポイント
7. EVALUATE TRUEの注意点とポイント
  • 最初にマッチした条件だけが実行されるため、条件の順番がとても重要です。
  • 必ずEND-EVALUATEで終わる必要があります。書き忘れに注意しましょう。
  • OTHER句は、すべてのWHENに当てはまらなかったときの処理を書く場所です。
  • 条件が重ならないように設計すると、予期せぬ動作を防げます。
  • 初めての方は、紙に条件を図で書いてから、コードにするとわかりやすくなります。

まとめ

まとめ
まとめ

ここまで、COBOLで複雑な条件分岐を簡潔に書くための手段として、EVALUATE TRUEの仕組みと使い方を学びました。条件が増えるほどIF文は深く重なり、読みづらくなるという問題がありましたが、EVALUATE TRUEを使えば複数の条件をすっきりと見やすく整理できます。さらに、パターンマッチングの考え方を使うことで、年齢、点数、学年など、さまざまな値に応じた分岐を柔軟に書けるようになります。条件の順番やOTHERの使い方を理解すれば、思いどおりの分岐処理を行うことができ、業務システムのように条件が多い場面でも間違えにくく、あとから読む人にも優しいソースコードになります。 実際の現場では、入力チェック、会員区分、料金判定、エラー判定など、複雑な条件が並ぶ業務も少なくありません。そこで重要になるのが、読みやすさと保守性です。EVALUATE TRUEを活用すれば、「どの条件がどの処理につながるのか」を一目で理解でき、人の頭で自然に整理できる形に近づけることができます。ひとつひとつの処理を分け、丁寧に並べることで、後から修正が必要になったときにもすぐに探し出せます。これは開発者だけでなく、あとから担当する人にとっても大きな安心につながります。 また、ANDやORを使えば、二つ以上の条件をまとめて判定できます。単純な条件だけでなく、「ある基準を満たし、なおかつ別の状態にも当てはまる場合」や、「どちらか片方が該当すればよい場合」というような柔軟な書き方ができます。これによって、条件分岐はただの分け方ではなく、判断の流れや意味を整理するための表現にもなります。EVALUATE TRUEは、書き手だけでなく読み手も迷わない設計を実現し、処理の流れを自然に追えるようにする力を持っています。

サンプルプログラム:EVALUATE TRUEで読みやすい条件整理


EVALUATE TRUE
    WHEN 点数 >= 90 AND 欠席回数 = 0
        DISPLAY "成績が優秀で皆勤です。"
    WHEN 点数 >= 70 AND 欠席回数 <= 3
        DISPLAY "成績は良好で欠席も少ないです。"
    WHEN 点数 >= 50
        DISPLAY "合格ですが出席状況に注意しましょう。"
    WHEN OTHER
        DISPLAY "再評価が必要です。"
END-EVALUATE

ひとつひとつの条件が見やすく、どの条件がどんなメッセージにつながるのかも明確です。同じことをIFで書くと何重にも入れ子が増えてしまいますが、EVALUATE TRUEを使うことで表のようにすっきり整理できます。読みやすさが向上し、処理の意図を説明する文章のような形になるのも魅力です。 初心者の人でも、小さな例から試していけば自然に使いこなせます。まずは一つ、次に二つと条件を増やしていくうちに、パターンの整理が得意になっていきます。業務では、入力された情報をもとに区分判定をしたり、日付や数値の組み合わせで処理を振り分けることが多くあります。そうした実践の場で、EVALUATE TRUEはとても役に立ちます。

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

生徒

「EVALUATE TRUEってすごく便利ですね。条件をずらっと並べられるし、読みやすいので間違えにくいです。」

先生

「そうなのです。同じ処理でもIFだけで書こうとすると深くなりすぎて、どこがどこへ続くのかわかりにくくなります。EVALUATE TRUEは、論理と流れを整理しやすい書き方なのです。」

生徒

「ANDやORもEVALUATEの中で使えるんですね。条件が組み合わさった例を見て、すごく応用できそうだと思いました。」

先生

「その通りです。複雑な判定ほど整理されている書き方が大切になります。意味のある順番で並べることで、予期しない動作も防ぎやすくなります。」

生徒

「OTHERがあると、どれにも当てはまらない時にも安心できますね。抜け漏れを防ぐ感じがします。」

先生

「そうですね。後から条件が増えたときも修正しやすく、長いプログラムほど活躍しますよ。」

生徒

「これからのプログラム作成でも、EVALUATE TRUEを積極的に使ってみます!」

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