【COBOL 読み1-9】チーズとたぬきがループするのは真?偽?

🧩 今日の学び
EOF-FLAGと88レベルの関係を、チーズ工場の比喩で理解。  
PERFORM UNTILとSET EOF-YESの流れも、笑いながら整理。  
COBOLの「真と偽」を、なるおと係長が掛け合いで学ぶ回。

今日のコード

       PROCESS-LOOP.
           PERFORM READ-INFILE
             UNTIL EOF-YES.

ループ全体像:PROCESS-LOOP と EOF-YES

なるお)プロセスチーズがループするってやつね。

でもチーズがループしてたら、大変だな。
食べても食べてもチーズが入ってくる。

いや開腹して、プロセスチーズをどんどん詰め込んで行くほうがループっぽいよね。

係長)なんで、例えが腹の中に直行すんだ?
でもまぁ、イメージとしては間違ってないな。

  • 「食べても食べても出てくる」=EOF-YESが立つまで延々繰り返す。
  • 「開腹して埋め込む」=READ-INFILEで次のレコードを突っ込む。

要するに、お前の脳内チーズ工場はコボルでいう PROCESS-LOOP そのものだ。

な)ええええ!間違ってないの!?やっぱり天才すぎ!?

係)なんで「間違ってない=天才」になるんだよ。
COBOLってのは発想がけっこうシンプルなんだ。

  • 「読めるまで繰り返す」→ループ
  • 「もう読めねぇ」→EOF-YESに旗立てる

これだけだからな。

な)え、じゃあ俺のチーズ例えもシンプルで天才ってことじゃないです?

係)だからなんで、いきなり天才になるんだよ。
チーズがループしてデブだってことは変わりはないが。

な)デブじゃないです…

えーと「EOF-YES」って何でしたっけ?
胃袋パンパンになったら「もう無理っす!」って信号出すやつ?

係)「もう食えねぇ(ファイル終わり)」ってとこでEOF-YESがTRUEになる。
そこまで無限にチーズ…いや、レコードを消化していくって流れよ。

あ)へーもうCOBOLはスイスっぽいすね!

係)はぁ??

な)だってチーズといえばスイス?

係)なんでコボルがチーズの国になってんだよ。
いや「EOF-YES」とか忘れてんだろ、お前。

な)(ぎくぅ!!)

そ、そんなわけないじゃないですか!係長の御言葉はすべて頭の中で反芻し、インプットとアウトプットを繰り返し、写経してますよ!当たり前じゃないですか!信じてない?信じてないっすよね!明日写経の写し持ってきますか?あ、でももう額に入れて飾っちゃったから、満員電車で押されてガラスが割れちゃうんで危ないですよね!やめましょう!やめましょう!あーよかったー、係長犯罪者になるとこでしたね!良かったですね!顔が怖いだけで犯罪者にならなくて!ハァハァ…

係)おめーが何も覚えてないってことだけはわかったわ。

な)全無視しないでくださいよ…

ループ全体像:PROCESS-LOOP と EOF-YES

係)いいんだよ、そんなことは。

ここの話だ。全然覚えてねーだろ。

       01  EOF-FLAG    PIC X VALUE "N".
           88 EOF-YES  VALUE "Y".
           88 EOF-NO   VALUE "N".

覚えてたらEOF-YESがチーズとか言うわけないな。

な)それは天才的解釈なんで…

係)EOF-FLAG ってのはただの1文字の箱。最初は “N” が入ってる。
そこに「88レベル条件名」をかぶせてんだよ。

中身が “Y” なら EOF-YES が真になる。
中身が “N” なら EOF-NO が真になる。

な)……え、じゃあ「EOF-YES」って変数じゃないんすか!?

係)そう、変数じゃなくて「条件名」みたいなもんだ。
「EOF-FLAG が ‘Y’ なら EOF-YES って名前で呼んでいい」ってな仕組みだ。

な)えー!じゃあ俺、「お腹いっぱい、幸せいっぱい、胸いっぱい」って旗を立てて「はいYESですー!」って勝手に伝えてあげただけ?

係)勝手に胃袋にするな。COBOLはもっとストイックだ。
「YかNか」ってだけの硬派な世界なんだよ。

な)係長は硬派なヤンキー世代ですもんね。リーゼントですもんね。
盗んだバイクでってやつですよね。自首しましょうよー。

係)はぁ…
流れを追うとこうだ。

  1. 最初は EOF-FLAG = “N” → EOF-YES は偽。
  2. READ INFILE でファイルを1レコード読む。
    • まだデータがあるなら処理続行。
    • データが無くなったら SET EOF-YES TO TRUE で EOF-FLAG が “Y” になる。
  3. EOF-YES が真になったらループを抜ける。

な)あ!

係)お、なんか理解したか?

な)はい!
ストイックって係長が言ったとき、ストマックでギャグ作ればよかったんですね!だから、あのため息!

係)もう、社史編纂部へいけよ。

おむすび

な)でもでも、真になる、なんてどこにもかいてないじゃないっすかー、またからかってー。

係)あのな、次のコードにかいてあんだよ。よく見ろよ。

 READ-INFILE.
           READ INFILE
               AT END
                   SET EOF-YES TO TRUE

よく見てみろここに真になるところがなんとなくでもみえるだろ?

たぬきは嘘つかねーんだよ!

な)根に持ってた…

― 目次(読みシリーズ)へ戻る ―

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

この記事を書いた人

コメント

コメントする