【COBOL 書き1-12-3】データ受け取るFDとデータを渡すFDと〜こぼるんの裏の顔

🧩今日の学び
SORTでは、入力用のFD、作業用のSD、出力用のFDという3つの役割を分けて考える必要がある。
FD名やレコード名は自由に付けられるが、INPUTOUTPUTのように役割が伝わる名前にすると読みやすくなる。
GIVING OUTPUT-FILEを書くなら、ソート後のデータを受け取るOUTPUT用FDも用意する必要がある。

なるお)んじゃ、これでソーティングができるんすね

係長)まだだ。

な)えーまだなんかあるんすか?もう腹八分目なんですけど?

係)だったら、まだ入るだろうが!

な)それ拷問!至福拷問ですからー!食糧人類みたいなうますぎ液じゃなくて、うますぎ白飯を流し込んでくださいよ!

係)喉詰まるだろ…

FD名は「役割」で決めよう!

係)いいか、SDの方は良いとして、お前がFDをこうしたから分かりづらいんだよ。

📝 COBOL 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にデータを渡しているだろ?

📝 COBOL 現状のSORT
SORT SORT-FILE
    ON ASCENDING KEY SORT-AMOUNT
    USING NARUO-FILE
    GIVING OUTPUT-FILE.

気づいてなかったのか?

な)あー100%ぐらい気づいてないっす…

係)まったく。

だからどうなるって話をしてるんだよ。

な)OUTPUT-FILEのFDを作る的な……感じで、浜辺を走り出す青春…?

係)なんで意味のない文章を続けるんだよ!

FD作るでいいだろうに。

な)あ、合ってたんじゃないっすか!怒ってるから!

係)どこが怒ってんだよ!

な)ほんとにもう!もっと柔和な顔に整形してくださいよ!でへでへ顔になってくださいよ!

係)どういうことだよ!

な)だとするとー

係)説明無いのかよ…

な)はい、そこうるさい!

係)ぐっ!

な)NARUO-FILEOUTPUT-FILE版にすれば良いって感じかしら。

ついでに、本物のNARUO-FILEINPUT系に寄せてと⋯

まずINPUTに修正と。

📝 COBOL INPUT系FDさらに修正後
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を追加っと。

📝 COBOL OUTPUT系FD追加
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とかの並びってどうなんです?

FDFDでまとめちゃって良いんすかね?
INPUTOUTPUTの順番逆でもいいんす?

係)オールOKだ。

な)そなんすねー、きっちり系だったのに、ちゃらんぽらん系にもなるこぼるん…

係)FDFDでまとめておいた方が読みやすいというところはあるが、順番を追うという考え方もある。

とはいえ、INPUTOUTPUTが逆になると、後で見たときに、混乱する可能性あるだろ?

だから並びはきちんと順序立てておいたほうがいいぞ。

な)ほーい

DATA DIVISIONがついに完成!

んじゃDATA部あわせちゃって

📝 COBOL 最終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は動くプログラムを書く言語ではなく、処理の役割を明確に設計する言語だ。

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

この記事を書いた人

コメント

コメントする

CAPTCHA