【COBOL 読み2-11-1】PERFORM THRUの全角に隠された罠〜愛と恋の違いと未亡人

🧩今日の学び
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はそこを容赦しない。
段落名は英語・半角・意味が伝わるもの、それだけ守れば未来は平和だ。

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

この記事を書いた人

コメント

コメントする