導入:なぜEVALUATE文が重要なのか
COBOLのプログラムを書いていると、IF文が何重にも入れ子(ネスト)になってしまい、どこでどの処理が行われているか分からなくなることはありませんか?いわゆる「スパゲッティコード」の典型例です。今回紹介するEVALUATE文は、そんな複雑な条件分岐を、まるで表(テーブル)を見るかのようにスッキリと整理できる強力な構文です。コードの可読性を高め、メンテナンスミスを減らすために、ぜひマスターしておきましょう。
基礎知識:EVALUATE文とは
EVALUATE文は、他言語で言うところの「switch文」や「case文」をより多機能にしたものです。単なる値の一致だけでなく、「範囲指定」や「複数の条件の組み合わせ」を一つの構文内で処理できます。構造化プログラミングの基本である「見やすさ」を維持できるため、複雑なビジネスロジックを実装する際には欠かせないツールです。
実装:EVALUATEの柔軟な使い方
EVALUATE文の最大の特徴は、THRU(範囲指定)やTRUE/FALSEによる真偽値の判定が可能な点です。また、WHEN OTHERを指定することで、どの条件にも当てはまらなかった場合の「例外処理」も漏れなく記述できます。これにより、意図しないデータが渡された際にも安全にプログラムを終了、あるいはエラー処理へ回すことが可能です。
サンプルプログラム:年齢別メッセージ表示
以下のサンプルは、年齢に応じてメッセージを出し分けるプログラムです。そのままコピーして、コンパイル・実行してみてください。
IDENTIFICATION DIVISION.
PROGRAM-ID. EVALUATE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-AGE PIC 9(03) VALUE 25.
PROCEDURE DIVISION.
> 年齢に基づいた分岐処理
EVALUATE WS-AGE
> 0から18歳まで
WHEN 0 THRU 18
DISPLAY “あなたは未成年です。”
> 19から64歳まで
WHEN 19 THRU 64
DISPLAY “あなたは現役世代です。”
> 上記以外(65歳以上)
WHEN OTHER
DISPLAY “あなたはシニア世代です。”
END-EVALUATE.
GOBACK.
応用・注意点:現場で役立つアドバイス
現場でよくある失敗は、WHEN句の条件を「重複」させてしまうことです。EVALUATEは記述した順番に上から判定が行われるため、範囲が重なっていると、意図しない下の条件が実行されることはありませんが、論理的な誤解を招きます。また、WHEN OTHERを省略しないことは、ベテラン技術者の鉄則です。予期せぬデータが流れてきたときにプログラムが迷子にならないよう、必ず「その他の場合の処理」を記述する癖をつけてください。複雑な条件分岐こそ、EVALUATEでシンプルに記述しましょう。

コメント