【COBOL 読み2-3-1】くらえ!連星滅閃 EVALUATE!

🧩今日の学び
・入れ子EVALUATEは「外で大分類 → 内で細分類」という二段ロジックで読むと一気に理解できる
TRUE を使った内側EVALUATEは“自由な条件式を書くための箱”であり、GRADE分岐とは独立して整理しやすい
・見た目にビビらずインデントの流れを追えば、実態は「外 → 内 → 結果」の一本道で恐ろしくシンプル

係)今日は“地獄の二重底”

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

な)地獄……すか?大釜地獄という名の温泉地獄ですか?
自分で掘って自分で温泉を掘り当てるやつですか?気持ちいいぐらいですよね?

でも源泉の温度が30度ぐらいだったので、沸かして営業したらそんなの温泉じゃないとか炎上するやつですか?

係)それ地獄か?

な)怖いですねー炎上地獄とか…

EVALUATEの入れ子は“見た目だけ地獄”の正体

係)COBOLの地獄ってのは“見た目”だけだ。

中身は案外ロジカルで優しい。

お前と違ってな。

な)俺ロジカルですよ!マジカルですよ!論理主義ですよ!正解を導き出すプロですよ!

王将行くとき、餃子の王将か大阪王将か悩んだときに、バーミヤンにという結論に達しましたよ。

係)何がロジカルなんだよ。

な)えー、だって近いから。

係)だから、それのどこに論理があるんだよ。

コード全体の構造:外側GRADE、内側SCORE

係)まぁいい、今日のコードだ。

EVALUATE GRADE
   WHEN "A"
      EVALUATE TRUE
         WHEN SCORE > 95
            MOVE "Outstanding" TO REMARK
         WHEN OTHER
            MOVE "Excellent" TO REMARK
      END-EVALUATE
   WHEN "B"
      EVALUATE TRUE
         WHEN SCORE > 85
            MOVE "Very Good" TO REMARK
         WHEN OTHER
            MOVE "Good" TO REMARK
      END-EVALUATE
   WHEN OTHER
      MOVE "Needs Improvement" TO REMARK
END-EVALUATE.

な)え、あのちょっとめんどくさいんですけど…

係)仕事をめんどくさいとか言うな。

な)ねーヒント、ヒント!! ヘイ!ヒント、ヒント!! ピッチャービビってる!ヘイヘイヘイ!

…聞いちゃいねーし。なんで行っちゃうの。もう。

で、ってあれ?
単純にEVALUATEが重なってるだけで、別に難しくないんじゃ?

GRADEがAだったら、下に続くと。

そして、
SCOREが95より大きかったら、OutstandingREMARKに入れる。
95以下だったら、ExcellentをREMARKに入れる。

GRADEBだったら、Aのところは無視して、下に続くと。

そして、
SCORE85より大きかったら、Very GoodREMARKに入れる。
それが85以下だったら、GoodREMARKに入れる。

そして、
AとB以外は、Needs ImprovementREMARKに入れる。

で終わり。

おむすび

それぞれがインデントされているから、簡単に理解可能やん!

EVALUATE GRADE
   WHEN "A"
   WHEN "B"
   WHEN OTHER
END-EVALUATE.

現実としてはこれだけでしょー。

そしてWHENに再度EVALUATEで条件追加しているだけ。
楽勝すぎ!

すぐビビらせようとするんだから。あんたの怖い顔のほうがビビるっつーの。

あはー!さっくり終わったし、もっかい牛丼食ってこようっと!

係長のワンポイント

入れ子EVALUATEは“外で分類、内で条件精査”という二段ロジックだ。
外側で大枠を決めるから、内側はその範囲だけを評価する安全構造になる。
TRUE版の内側は自由度が高く、SCORE > 95 のような条件式を柔軟に書ける。
見た目が増えても、実態は「外→内→結果」の一本道にすぎない。
コードを読むときはインデントを追え──COBOLの入れ子はそれだけで勝てる。

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

この記事を書いた人

コメント

コメントする