【COBOL 読み2-2-2】EVALUATE 変数 解説編

🧩今日の学び
EVALUATE変数版は“値が一致したときだけ発火する”CASE構文の直系
TRUE版は条件式を書き、変数版は値をマッチさせる──この違いが本質

係長)お前、話の終盤で完全にCOBOLから離陸してたな。

鉛筆の炭素のくだりで衛星軌道入ってたぞ。

まぁいい。

なるお)やっぱり良いもんですよね!

係)お前わざと間違ってるだろ…

言ってることの6割は正解だが、残り4割は精神論と炭素。

変数EVALUATEの本質:WHENは“値一致”で判定する

たしかに、EVALUATEに変数を使うと、WHENの中身が “その値と一致するか” で判断される。

つまり

EVALUATE GRADE
   WHEN "A" ...

このとき、GRADE“A” だったら、そこの処理を実行する。

な)バッチリですね!

係)お前の言う「>=が使えない」ってのも合ってる。

な)やっぱり俺すごいっすね!

TRUE版との違い:>= が使えない理由とCASE構文の関係

係長)ほんと幸せだなお前。

EVALUATE TRUE のときは「条件式」を並べるから、数値比較(>=<=)ができる。

でも変数を直接指定した場合は「値比較」になる。
つまり、値が一致するかどうか

スイッチ文、CASE文の仲間だ。

な)おお、Cでしたっけ?ちゃんと挫折してますよ?

係)まぁそうだろうな。

な)え!?

 コボルの先輩力:Cより10年早い“分岐整理術”

係)COBOLのEVALUATEは、“CASE構文を先に実装してた”先輩みたいなもんだ。

な)… え、じゃあCOBOLのほうが先輩?

係)あぁ。

C言語がデビューする10年以上前に、COBOLはもう “条件分岐の整理術” を持ってた。

それがEVALUATEだ。

な)なにそれ、めっちゃエモいっすね!

レジェンドじゃないすかCOBOL!生きる屍ですね!

係)なんちゅーこと言うんだよ。

レジェンド=現場でまだ生きてるって意味だ。ゾンビじゃねぇぞ。

な)いやー、なんかCOBOL好きになってきたかもです!

どっちすか?腐ってる方?走っちゃう方?
ラン・オブ・ザ・デッドっすか。力を制限する必要がないから、めっちゃ速いっすよ。チーター置き去りっすよ!

係)何の話だよ…

……でもまぁ、“なんでこうなってるんだろ”って思えるやつはCOBOLに向いてるぞ。

COBOLは、「やる」より「考える」言語だからな。

今日は60点で、最低点で合格としておく。

な)まじすか!やったー!

係)お前天才とか言う割に最低合格ラインでよろこぶなよ。

どんどんやっていくからな。

次はEVALUATEの多段構造、つまり——

EVALUATEの中にEVALUATEを入れる”だ。

な)おお、階層構造…?

まさか、Hell in the Hell over the Hellっすか!?

おむすび

係)安心しろ。
COBOLの地獄は、読む努力をした者にだけ極楽を見せる。

な)それランナーズハイ状態にハマって走ってるだけの人じゃないっすか?

係)お前が言うと犯罪ぽいんだよ。

な)係長の顔の方が犯罪級じゃないっすか。

係)そうか、お前も犯罪に巻き込まれないと良いな。

な)へっ!?

係長のワンポイント

EVALUATE変数 は「値が一致した最初のWHENだけを実行する」シンプル比較だ。
TRUE 版と違って “>=<” のような条件式は使えず、完全一致だけで分類する。
仕組みとしては CASE 文とほぼ同じで、上から順に“この値ならここ”と枝を選ぶ。
WHEN OTHERは“どれにも当てはまらなかった時の最終処理”で、書かないのは事故のもと。
比較ロジックを整理したいならTRUE、値で分類したいなら 変数──これが正しい使い分けだ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする