🧩今日の学び
・PERFORM THRUは開始段落から終了段落までを“通しで実行する”ため、段落名の設計が命になる
・全角スペースは目に見えないが、検索・比較・デバッグを確実に破壊する静かな地雷
・COBOLが求めるのは自由さではなく「後から読める英語」であり、それが現場を救う
なるお)いやー昨日晩飯食ったあと晩飯食ったら、さすがに眠くなって大変でしたよ。4時頃お腹空いて起きちゃいましたよー。
係長)なにいってんだ?入院してくるか?
な)大丈夫ですよ、脳髄は砂糖水ですし。
係)はいはい、そんだけ糖分あるんだったら大丈夫だな。
じゃ今日のコードだ。
テーマは——PERFORM…THRU(スルー)。ほれ。
PERFORM INIT-PARA THRU END-PARA
STOP RUN.
INIT-PARA.
DISPLAY "Initializing..."
MOVE 1 TO CNT.
NEXT-PARA.
PERFORM UNTIL CNT > 3
DISPLAY "CNT = " CNT
ADD 1 TO CNT
END-PERFORM
DISPLAY "Loop done."
END-PARA.
DISPLAY "Program finished."
な)なんじゃこれ!
なんでNEXTなんて出ちゃってるの?
そういえば、段落って適当なの入れてもいいんです?
係長顔怖い
とか?
係)お前ね…そんな段落名いれて何になるってんだ!
な)はひ!
係)それに、後で誰がデバッグすると思ってんだ?
な)係長…?
係)そうだよ!!
なんで俺の悪口をずっと見続けなきゃならねんだよ!
PERFORM THRUと段落名の自由:通るけど読めない地獄
係)段落名ってのはな、たしかに自由につけられる。
数字から始まらなければ、ほとんどなんでもOKだ。
な)日本語もOKなんすか?
係)日本語で書いといて、なに言うんだよ…
な)いや使えるなら、「係長顔以外も怖い」「なるお最高」とかだとやる気にならないです?
係)なんで俺の方は悪口になってんだよ。
たしかに今どきのコンパイラなら、文字コード的には通ることもある。
だがな——通っても読めねぇんだよ。
COBOLはな、「読める英語で書く」ってのが文化なんだよ。
日本語や絵文字を段落に入れたら、後で地獄見る。
な)え、なんで地獄になるんです?
みんなハッピーじゃないっす?
係)この流れで俺がハッピーになるかよ。
地獄ってのはな、「誰も読めないソースを、誰かが直さなきゃならない」世界だ。
たとえばだ、
お前がいつものノリで「愛と恋の違いEND-PARA.」とか書くだろ。
半年後、別のやつがそのコード開く。
「……なんだこれ」
——ってなって、そいつの目が死ぬ。
「愛と恋の違いEND-PARA.」を探して検索しても、全角スペースが混じっててヒットしないしな。
な)後任がムスカ化するのはいいんですけど、「全角スペースが混じっててヒットしない」ってどういうことです?ヒットするんじゃないです?
全角スペースという見えない悪魔:検索できない未亡人
係)それはな……“見えない悪魔”がいるからだ。
な)うわっ、出た!COBOL地獄に潜む甘い罠ってやつっすか!?
気づかなければずっと甘いだけっていうあれっすか?
でも、狸も化かした相手が気が付かなければ、たぬき汁にされることもなかったんじゃないのかなー。
てかうさぎのほうがうまいんじゃないっすかね。
係)その意味のない話を全部聞くまで俺は待たないといけないのか?
いいか、全角スペースってのは “目に見えないバグ”だ。
な)……え、いや、たかが、スペースっすよ、たぬきに化かされてます?
係)たぬきもういいから!
COBOL界ではな、“半角スペース”と“全角スペース”は別の宇宙に住んでる。
な)はぁ??
係長ってスピリチュアル信仰だったんすね。
目に見えるものは虚構てやつですか?目を閉じたら現実が動き出すっすか?
係)うるっさいな。
見た目は同じでも、中身のコードが違う。
全角スペースは0x8140とか、2バイトぶんの重たい息をしてる。
一方で半角スペースは0x20。軽い。
だから、コンピュータからしたら別人なんだ。
な)あなたは半角スペースじゃない!全角よ!
半角のふりをしてあたしに近づいて、何をするつもりなの!?
っていうデブの人権批判ですか。そうですか…。
係)お前デブのくせにデブネタ使って、勝手に落ち込むなよ。めんどくさい。
さらに恐ろしいのは、全角スペースは目視で気づかれない。
タブでもない、空白でもない、でも確実に“そこにいる”。
な)あ、そっか「 」これだと全角か半角か確かにわからないっすね…
係)でな、「愛と恋の違いEND-PARA.」って書いてるつもりでも、実際には「愛と恋の違いのEND-PARA」になってることもある。
この“見えない間”が地獄を呼ぶ。
な)失った半角を思っている未亡人に全角が割り込んでくる…
許せないっすよ!おれ!
半角はいなくなってしまっても、彼女の心の中の半角はまだあのときの半角のままですよ!
係)お、おう…
ま、まぁ、COBOLは古い現場だと、まだEBCDIC(エビディック)っていう独自コード使ってるからな、日本語とか絵文字入れた瞬間、「表示不能文字 □□□□」とか出て、印字すらできないぞ。
な)“全角文字”って同じ全角仲間じゃないですか!
スペースだけ迫害対象とか、これもう人権問題ですよ!俺は擁護しますよ!全角擁護団体を立ち上げますよ!
係長、入会費30,000円ください!
意味のある全角、意味のない全角:COBOLが怒る理由
係)お前さっき全角のこと許せないとか言ってなかったか?
全角文字はな、ちゃんと「意味」を持ってるんだ。
「山」とか「川」とか「なるおあほ」とかな。
機械にとっても「お、こいつ2バイト文字だな」ってわかる。
な)なんでここで悪口!?
係)でも全角スペースは意味がないのに容量だけ食う。
“中身がないくせに場所だけ取る”んだよ。
誰のことだかわかるよな?なぁ。
な)え……課長とか?
係)あのな…お前が言ったんだからな!
COBOLにとっちゃ、“空白”ってのは、区切り(delimiter)っていう神聖な印なんだ。
その区切りを偽装する全角スペースは、例えるなら「偽の改札口」だ。
行き先は“コンパイルエラー地獄”。
しかも誰も気づかず、半年後に炎上だな。
おむすび
な)あれ、なんか、さっきの未亡人設定あってます?
係)ムカつくがな。
な)んで、「愛と恋の違いEND-PARA.」ってなんです?
係)…そこはいいから…(顔が真っ赤)
な)愛と恋は違う by 係長…と メモメモ
係)なにメモってんだよ!
係長のワンポイント
PERFORM THRU は「指定した段落名の“範囲”を丸ごと実行する」命令だ。
だから段落名が読めないと、処理の流れも一気に読めなくなる。
全角スペースは見えないくせに“別文字”扱いされ、検索もデバッグも地獄を見る。
通るかどうかと、保守できるかどうかは別問題──COBOLはそこを容赦しない。
段落名は英語・半角・意味が伝わるもの、それだけ守れば未来は平和だ。

コメント