🧩今日の学び
・SORTでは、入力用のFD、作業用のSD、出力用のFDという3つの役割を分けて考える必要がある。
・FD名やレコード名は自由に付けられるが、INPUTやOUTPUTのように役割が伝わる名前にすると読みやすくなる。
・GIVING OUTPUT-FILEを書くなら、ソート後のデータを受け取るOUTPUT用FDも用意する必要がある。
なるお)んじゃ、これでソーティングができるんすね
係長)まだだ。
な)えーまだなんかあるんすか?もう腹八分目なんですけど?
係)だったら、まだ入るだろうが!
な)それ拷問!至福拷問ですからー!食糧人類みたいなうますぎ液じゃなくて、うますぎ白飯を流し込んでくださいよ!
係)喉詰まるだろ…
FD名は「役割」で決めよう!
係)いいか、SDの方は良いとして、お前がFDをこうしたから分かりづらいんだよ。
FD NARUO-FILE.
01 NARUO-RECORD.
05 INPUT-SALE-DATE PIC X(10).
05 INPUT-ITEM-NAME PIC X(20).
05 INPUT-AMOUNT PIC 9(5).
な)自己主張は必要だって、アンディが言ってたんで、NARUOにしたんすけど…
係)だれなんだよ!
そうじゃなくて、自己主張よりFD名や変数は何に使われるのかを想定して名前をつけろって話だよ。
な)ほほー
係)で、何ならいいと思うんだ?
な)ほ?
係)あのな…
NARUO-FILEだと何に使うのか全然わからんだろ。
だからそこをわかるようにしろって話だよ。
な)何って…
係)なんかいきなり鈍いな…なんで満腹じゃないと頭も回らないんだよ…。
NARUO-FILEはどういうときに使った?
な)データを受け取る?
係)つまり、外のファイルからデータを受け取る用(INPUT)ってことだろ?
な)あーそゆこと
係長のことだから、アンディのありとあらゆる悪口が羅列されるのかと思ってました。
係)だから誰なんだよ!
SORTは入力だけでは終わらない
係)それで、受け取る準備をしたら、受け取ったデータをソートする、これがSD。
そしてソートしたデータを渡す準備もしないといけないだろ?
GIVING OUTPUT-FILE
ここでOUTPUT-FILEにデータを渡しているだろ?
SORT SORT-FILE
ON ASCENDING KEY SORT-AMOUNT
USING NARUO-FILE
GIVING OUTPUT-FILE.
気づいてなかったのか?
な)あー100%ぐらい気づいてないっす…
係)まったく。
だからどうなるって話をしてるんだよ。
な)OUTPUT-FILEのFDを作る的な……感じで、浜辺を走り出す青春…?
係)なんで意味のない文章を続けるんだよ!
FD作るでいいだろうに。
な)あ、合ってたんじゃないっすか!怒ってるから!
係)どこが怒ってんだよ!
な)ほんとにもう!もっと柔和な顔に整形してくださいよ!でへでへ顔になってくださいよ!
係)どういうことだよ!
な)だとするとー
係)説明無いのかよ…
な)はい、そこうるさい!
係)ぐっ!
な)NARUO-FILEをOUTPUT-FILE版にすれば良いって感じかしら。
ついでに、本物のNARUO-FILEもINPUT系に寄せてと⋯
まずINPUTに修正と。
FD INPUT-FILE.
01 INPUT-RECORD.
05 INPUT-SALE-DATE PIC X(10).
05 INPUT-ITEM-NAME PIC X(20).
05 INPUT-AMOUNT PIC 9(5).
そんでOUTPUTを追加っと。
FD OUTPUT-FILE.
01 OUTPUT-RECORD.
05 OUTPUT-SALE-DATE PIC X(10).
05 OUTPUT-ITEM-NAME PIC X(20).
05 OUTPUT-AMOUNT PIC 9(5).
FD・SDはどんな順番で並べればいい?
んー…係長?
FDとかSDとかの並びってどうなんです?
FDはFDでまとめちゃって良いんすかね?INPUTとOUTPUTの順番逆でもいいんす?
係)オールOKだ。
な)そなんすねー、きっちり系だったのに、ちゃらんぽらん系にもなるこぼるん…
係)FDはFDでまとめておいた方が読みやすいというところはあるが、順番を追うという考え方もある。
とはいえ、INPUTとOUTPUTが逆になると、後で見たときに、混乱する可能性あるだろ?
だから並びはきちんと順序立てておいたほうがいいぞ。
な)ほーい
DATA DIVISIONがついに完成!
んじゃDATA部あわせちゃって
FD INPUT-FILE.
01 INPUT-RECORD.
05 INPUT-SALE-DATE PIC X(10).
05 INPUT-ITEM-NAME PIC X(20).
05 INPUT-AMOUNT PIC 9(5).
SD SORT-FILE.
01 SORT-RECORD.
05 SORT-SALE-DATE PIC X(10).
05 SORT-ITEM-NAME PIC X(20).
05 SORT-AMOUNT PIC 9(5).
FD OUTPUT-FILE.
01 OUTPUT-RECORD.
05 OUTPUT-SALE-DATE PIC X(10).
05 OUTPUT-ITEM-NAME PIC X(20).
05 OUTPUT-AMOUNT PIC 9(5).
という並びのほうが順序になってて好きかなーって
これでいいす?
係)ふぅ…ようやく良くなったな。
これでSORTを動かす準備は全部終わったってわけだ。
次はようやくPROCEDURE DIVISIONを書いて実際にSORTを実行するぞ。
おむすび
な)えーまだ終わってないのー?
係)ここまでは準備しただけだっての。
な)おれ、FD作るだけのFD課所属でいいですから⋯
係)何を作るのかわからなければ、FDは作れないだろ!
どうでもいいこと言ってないで、PROCEDUREへいくぞ!
な)あはーん!PROCEDURE課はブラックすぎるからー!!
係)この程度でコード分担しようとすんな!なにがFD課だよ!このぐらい1人で書け!
な)ひゅーん…ほんとまだまだ明治体質…
係)だからなんで明治なんだよ!
(次回に続く)
係長のワンポイント
FDは「ファイルを宣言する」のではなく、ファイルの役割を定義するものだ。
そのため、名前も「INPUT」「OUTPUT」のように役割が伝わることが大切になる。
よくある誤解は、好きな名前を付けても動けば問題ないという考え方だ。
しかし、役割が分からない名前は、後から見た人が処理の流れを理解しづらくなる。
役割に沿った命名を心掛けることで、プログラムの可読性や保守性は大きく向上する。
COBOLは動くプログラムを書く言語ではなく、処理の役割を明確に設計する言語だ。


コメント