🧩今日の学び
・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、値で分類したいなら 変数──これが正しい使い分けだ。

コメント