今日のコード
WORKING-STORAGE SECTION.
*> --- 終端・汎用ワーク ---
01 EOF-FLAG PIC X VALUE "N".
88 EOF-YES VALUE "Y".
88 EOF-NO VALUE "N".
01 LINE-NO PIC 9(7) VALUE ZERO.
01 WS-MSG PIC X(80).
なるお)あれ?いけそうな予感。
WORKING-STORAGE SECTION.は
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
という流れだったから、DATAのところで扱うWORKING-STORAGEっていうセクション
01 EOF-FLAG PIC X VALUE "N".
88 EOF-YES VALUE "Y".
88 EOF-NO VALUE "N".
01は上位の箱とか言ってたよなー。だから88が下位の箱ってことかなー。
なんで88?米寿?
ばーちゃんち行くか。てか、ばーちゃん米寿じゃないような?
さておき
01が複数あったから88とかも何個も作っていいんか複数作るいみがわからんけど。
あれ?でもPIC Xがあったりなかったりする意味がわからん。
VALUEだからEOF-YES=Y、EOF-NO=N と分けてて、01のほうのEOF-FLAG=Nだよとということで、フラグでNを立てておくということかな?
88が気なる。米寿?条件?
係長)01はそれでいいが、88は違う。なんで88なんて中途半端な数をつけているかって話だ。米寿とかあほか。
88レベルは「条件名」ってやつだ。いわゆる「その値のときだけ呼べるスイッチ」ってとこだ。
そこだけ見てないで、その下を見てみろ。
01 EOF-FLAG PIC X VALUE "N".
88 EOF-YES VALUE "Y".
88 EOF-NO VALUE "N".
EOF-FLAG って箱があるだろ? 中身は “N” とか “Y” が入る。
で、「その中身が ‘Y’ のときは EOF-YES って名前で呼べるぞ」って約束してんだ。
逆に ‘N’ なら EOF-NO って名前で呼べる。
な)でもVALUE は”N” って決めちゃってるんだから、YとNを作ったとしても無駄じゃないんです?
係)VALUE “N” は「最初の状態」ってだけだ。
プログラムが動き出したら、中身は変わる。
ファイルの最後まで読んだら “Y” に変えたりな。
で、IF EOF-YES って書けば「最後まで読みました」って状態を判定できるし、IF EOF-NO なら「まだ読める」って状態になる。
これで “IF EOF-FLAG = ‘Y'” なんて書かなくていいからな。
な)へー無駄じゃないんすね。
でも、EOF-YESにYが入ったとして、EOF-FLAGになんで影響するんです?
係)88は01と別の変数じゃなくて、01の中身を「こう呼ぶ」って決めただけなんだよ。
な)はい…?
条件??
係)コードみてみろ。
01 EOF-FLAG PIC X VALUE "N".
88 EOF-YES VALUE "Y".
88 EOF-NO VALUE "N".
実体は EOF-FLAG って箱しかねーだろ。
88はその箱の中身が特定の値のときだけで「成立する条件名」ってこと。
な)えーと、つまり?
係)つまりこうだ。
EOF-FLAGにYが入っていれば、EOF-YES が真になる。
EOF-FLAGにNが入っていれば、EOF-NO が真になる。
逆に、EOF-YES が真(TRUE)となっていれば、EOF-FLAG に "Y" が入る。
ってわけだ、
な)あー!88は中身の別名だから、どっちから触っても連動するってことか。
係)そういうことだ。
88は変数じゃなくて状態を表すラベルってことだ。米寿じゃね―ぞ。
おむすび
01 LINE-NO PIC 9(7) VALUE ZERO.
01 WS-MSG PIC X(80).
な)これはまぁわかるかな。
9999999 まで入る箱(LINE-NO)の中に0が入っている状態。
WS-MSGで80桁の文字列(X)が入る箱を作るってこったな。
ふぅ。
わかったてきたわかってきた。
ここから怒涛の攻撃が始まる予感…!
次からのコードに怒涛の変数宣言が見えるけど、気にしない、気にならない。
明日は明日の風が吹く。どうせ俺死んでるし。
———次の日の朝———
な)全然、生きてるし…

コメント