【COBOL 読み1-4】88は米寿でしょーに!条件ってなんなのよ?

今日のコード

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)が入る箱を作るってこったな。

ふぅ。
わかったてきたわかってきた。
ここから怒涛の攻撃が始まる予感…!

次からのコードに怒涛の変数宣言が見えるけど、気にしない、気にならない。
明日は明日の風が吹く。どうせ俺死んでるし。

———次の日の朝———

な)全然、生きてるし…

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

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

この記事を書いた人

コメント

コメントする