COBOLのEVALUATE TRUEの使い方を完全ガイド!初心者でもわかる条件分岐とパターンマッチ
生徒
「COBOLでいろんな条件をまとめてチェックする方法ってありますか?」
先生
「それなら、EVALUATE TRUEを使うと便利ですよ。複雑な条件分岐もすっきり書けるんです。」
生徒
「EVALUATE TRUEって聞いたことないです。どうやって使うんですか?」
先生
「では、EVALUATE TRUEの使い方と、パターンマッチングの方法をわかりやすく解説しましょう!」
1. EVALUATE TRUEとは?
EVALUATE TRUE(エバリュエート トゥルー)は、COBOLの条件分岐構文の一つです。複数の条件をIF文で書くと、何重にもネスト(入れ子)になってしまい、コードが読みにくくなります。
その問題を解決するのがEVALUATE TRUEです。「TRUE(真)」を基準にして、WHEN句で条件式を評価し、最初に一致したものだけを実行します。簡単に言えば、いくつものIF文をまとめてきれいに書ける方法です。
パソコンを触ったことがない初心者の方にも伝わりやすいように、「もし〜なら〜する」をいくつも書きたい時に使う、便利な書き方と覚えておきましょう。
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文との違いとメリット
同じことを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. パターンマッチングとは?
パターンマッチングとは、「ある値や条件に合っているかどうか」を確認する方法です。EVALUATE文では、このパターンマッチングを使って、複数の条件を一気に評価できます。
たとえば、成績によってメッセージを変えたいとき、次のように書けます。
EVALUATE TRUE
WHEN 成績 >= 90
DISPLAY "優秀です!"
WHEN 成績 >= 70
DISPLAY "よくできました。"
WHEN 成績 >= 50
DISPLAY "がんばりましょう。"
WHEN OTHER
DISPLAY "再テストが必要です。"
END-EVALUATE
このように、数値の範囲ごとに処理を分けるのも、パターンマッチングの一種です。難しそうに聞こえますが、「どのパターンに当てはまるか」を見るだけなので安心してください。
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. 実行結果のイメージ
たとえば、次のような値が入っていた場合にどう表示されるかを見てみましょう。
サンプル1: 年齢 = 70
あなたは高齢者です。
サンプル2: 成績 = 85
よくできました。
サンプル3: 学年 = 2, 成績 = 90
2年生で成績が良いですね!
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を積極的に使ってみます!」