🧩 今日の学び
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か」ってだけの硬派な世界なんだよ。
な)係長は硬派なヤンキー世代ですもんね。リーゼントですもんね。
盗んだバイクでってやつですよね。自首しましょうよー。
係)はぁ…
流れを追うとこうだ。
- 最初は EOF-FLAG = “N” → EOF-YES は偽。
- READ INFILE でファイルを1レコード読む。
- まだデータがあるなら処理続行。
- データが無くなったら SET EOF-YES TO TRUE で EOF-FLAG が “Y” になる。
- EOF-YES が真になったらループを抜ける。
な)あ!
係)お、なんか理解したか?
な)はい!
ストイックって係長が言ったとき、ストマックでギャグ作ればよかったんですね!だから、あのため息!
係)もう、社史編纂部へいけよ。
おむすび
な)でもでも、真になる、なんてどこにもかいてないじゃないっすかー、またからかってー。
係)あのな、次のコードにかいてあんだよ。よく見ろよ。
READ-INFILE.
READ INFILE
AT END
SET EOF-YES TO TRUE
よく見てみろここに真になるところがなんとなくでもみえるだろ?
たぬきは嘘つかねーんだよ!
な)根に持ってた…

コメント