【COBOL 読み2-6】涅槃でEVALUATEをIFにして新たな地獄

🧩今日の学び
・EVALUATE を IF に書き換えると条件が指数関数的に増え、地獄のネストが誕生する。
・「書ける」と「読める」は別物──係長の戒めどおり、保守性は常に最優先。

なるお)はーい、係長今日のコードくださーい

係長)なんだお前やる気あんのかないのかどっちなんだよ。

な)いやーなんかもうCOBOLに悟りを開きだしているので、もっと悟っていきたいですね。

もう涅槃したいですよ。
そう!横になってても、怒っちゃだめですよ!寝てないですからね!悟ってるだけですからね!佐藤輝明ですからね!

布団敷いてもいいです?

係)いいわけねーだろ!

ほんと血圧上げようとしてくるな、お前。

まぁいいわ。

悟りたいってんなら、今日のテーマは「IFの悟り」だ。

な)バッチこーい!!

IFに戻る苦行:EVALUATEの快楽を知った人間の地獄

係)今日はEVALUATEではなく、IFで見てみるぞ。

な)なんでです?

係)EVALUATEの快楽を知った人間が、IFに戻るのは苦行だからな。

な)なんでそんなことするんすか?

係)お前は一回壊れてしまえばいい。

な)何この人!!地獄の番人ぶるのは顔だけにして!!

係)うるせーな。

ほれ、このようになるぞ。

       MOVE "B" TO GRADE
       MOVE 78  TO SCORE
       MOVE 88  TO ATTEND

       IF GRADE = "A"
           IF SCORE >= 90 AND ATTEND >= 90
               MOVE "Honor Student" TO TITLE
           ELSE
               MOVE "Achiever" TO TITLE
           END-IF
       ELSE
           IF GRADE = "B"
               IF SCORE >= 80 AND ATTEND >= 85
                   MOVE "Steady Worker" TO TITLE
               ELSE
                   IF SCORE >= 70 AND ATTEND < 85
                       MOVE "Average" TO TITLE
                   ELSE
                       MOVE "Needs Effort" TO TITLE
                   END-IF
               END-IF
           ELSE
               MOVE "Needs Effort" TO TITLE
           END-IF
       END-IF

な)OH Crazy!!

係)なんでいつもこういったときは発音良くなるんだよ!

な)NO Happy Days!!

係)ふざけるならやめるぞ?

な)すみません…
反応したの係長じゃん(ボソ)

係)いいから読め。

ネストの罠:ELSEが増えるたびに世界が濁る

な)なんちゅーか、読めるけど、ELSEELSEELSEうるさいっすね…

エルスの不思議な旅すか…?

係)…………

な)それニルスってツッコミはなしっすか、そうですか。
係長の時代の懐かしいもの調べてきて、年の差を埋めようとしてきた部下の気持ちを踏みにじっちゃうんですか…

係)はよやれ。何が部下の気持ちだよ。

な)OH Nils!

係)(イライラ)

な)え、ええと。

IFは短いからまだしもELSEは4文字っすよ。IFだったらDIFでもいいだろうにEFでもいいだろうに。DFにしたる。

       IF GRADE = "A"
           IF SCORE >= 90 AND ATTEND >= 90
               MOVE "Honor Student" TO TITLE
           DF
               MOVE "Achiever" TO TITLE
           END-IF
       DF
           IF GRADE = "B"
               IF SCORE >= 80 AND ATTEND >= 85
                   MOVE "Steady Worker" TO TITLE
               DF
                   IF SCORE >= 70 AND ATTEND < 85
                       MOVE "Average" TO TITLE
                   DF
                       MOVE "Needs Effort" TO TITLE
                   END-IF
               END-IF
           DF
               MOVE "Needs Effort" TO TITLE
           END-IF
       END-IF

な)ほらー見やすい!

係)お前何言ってんだ?(イラッ)

な)いや、やりたかっただけで…

読みやすさの真実:IFは“人間の積み重ね”を可視化する

係)いいか、EVALUATEで1画面だったものが、IFで書くと3画面になる。

でも、これが、“人間が条件を積むときの実態”だ。

な)……これ、読める人すごくないっすか?

係)COBOLはな、“読める人”を育てる言語なんだ。

だから、書くときに「次に読む人」のために整える。

——EVALUATEはその整え方の進化版。

おむすび

な)え、じゃあ……IFで見せたのって、ただの嫌がらせじゃなかったんすか?

係)あたりまえだろ。愛情だよ。

な)単に意地が悪いだけと思ってました…

係)意地が悪いだけで終わらせるなよ!

な)だって、一回壊れろとか言ってたじゃないですか。

係)それは本音だ。

な)え!?

係長のワンポイント

IF は“条件を積み上げた人間の思考”をそのまま縦に伸ばす構文だ。
ELSE が増えるほど読みづらくなるのは、分岐が本来“枝分かれの木”だからだ。
EVALUATE はこの“縦の積み重ね”を“横へ整理”して見える化した進化版。
だから EVALUATE → IF に戻ると地獄、IF → EVALUATE に行くと悟りになる。
分岐が濁ったら迷わずEVALUATE──それがCOBOLで生き残るコツだ。

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

この記事を書いた人

コメント

コメントする