【COBOL 読み3-11-2】FDとSDでファイルの戸籍を書け〜審判の日は近い

🧩今日の学び
SORTが動く前に必要なのは処理ではなく、FDSDによるファイル定義
・SD人間立入禁止の作業領域で、SORT文だけが触れる
・COBOLは「何をするか」より「何を信じてよいか」を先に決める言語

なるお)で?

係長)なにがだよ?

な)もっと説明あるんですよね?

ファイルからデータを取ってくるとか言ってますけど、ファイル指定しないといけないっすよね?そこの説明とかファイル操作とかも言ってたじゃないすかー。

係)あー、まぁそうだな。

なんで鋭くなってきてんだよ…ったく。

な)どういう悪口!?

係)素直に説明聞いて喜べよ。可愛くねーな!

)だから、どんな悪口なの!?

目次

SORTは勝手に動かない、先に「身元確認」がある

係)いいか、SORT文は「魔法」じゃない。

当たり前だが、勝手にどこかからデータが湧いてくるわけじゃない。

COBOLはな、処理より先に身元確認をさせる言語だからな。

「ファイル指定」、SORT 文の外側で、ちゃんと「ファイルの戸籍」を書いておくんだ。

まず、全体像をコードで見るとこうなるな。

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT INPUT-FILE
        ASSIGN TO "input.csv".
    SELECT OUTPUT-FILE
        ASSIGN TO "output.csv".
    SELECT SORT-FILE
        ASSIGN TO SORT-WORK.

DATA DIVISION.
FILE SECTION.
FD  INPUT-FILE.
01  INPUT-REC.
    05 ITEM-ID   PIC X(3).
    05 ITEM-NAME PIC X(10).

FD  OUTPUT-FILE.
01  OUTPUT-REC.
    05 ITEM-ID   PIC X(3).
    05 ITEM-NAME PIC X(10).

SD  SORT-FILE.
01  SORT-REC.
    05 ITEM-ID   PIC X(3).
    05 ITEM-NAME PIC X(10).

な)あ、嫌いなやつだ。

係)俺もお前が嫌いだから大丈夫だ。

な)え!?

係)ここが今日の核心だ

な)いやいや、いま言っちゃいけない心の声が…

係)うるさいな、邪魔すんな!

)えー!!

FDとSDは役割が違う、ファイルにも戸籍がある

係)いいか

INPUT-FILE / OUTPUT-FILE

  • FD(File Description)
  • 普通のファイル
  • READ / WRITE される存在

SORT-FILE

  • SD(Sort Description)
  • SORT専用
  • READWRITEもしない
  • SORT文からしか触れない

なぜSORT-FILEだけSDなのかというと、SORT-FILEは人間が触っちゃいけない領域だからだ。

  • どこにあるか知らなくていい
  • 何件あるか知らなくていい
  • いつ消えるかも知らなくていい

SORTが全部面倒を見る。

だからSDだ。

SORT文が裏でやっている本当の処理

SORT文が裏やってることはこうだ。

INPUT-FILEREADする

SORT-FILEに一時格納

キー順に整列

OUTPUT-FILEWRITE

READWRITEも書いてないだろ?でも動く。

な)だったらSORT-FILEの指定ってどこでやってんすか?全PCが繋がっていて、全PCで共有されていて、PCから脅迫されちゃう時代ってことっすか!ターミネーター4の時代っすか!?二度と見ないっすよ!

係)お、いい質問だな。

な)ですよね!そりゃ2がよすぎたんすから、3以降は蛇足になるってもんですよ!でも、審判の日が始まったところは好きですからね!

係)そっちじゃねーよ!なんの怒りなんだよ、ったく。

ファイルの指定は

  • PC(GnuCOBOL)では一時ファイル
  • メインフレームではJCLの世界

となる。

つまり、ここから先は「環境」の話になるからな。

な)だから嫌いなやつ!

係)知るか!

な)冷たい…。冷奴すか。でも冷奴って言うほど冷くないですよね。

係)じゃ食うなよ。

おむすび

係)まとめるぞ

  • ファイルはDIVISIONで宣言
  • SORT-FILESDで別枠
  • SORT文はファイル定義を信じて動く
  • ファイル指定は「処理」じゃなく「前提」

ということだな。

)わかったような、わかんないような、でもわかんないような。

係)つまりは、わかってないんだろ…。どこがわからないんだよ。

な)え、全部?

係)なんでだよ…

係長のワンポイント

FDは人間が触る戸籍、SDは人間立入禁止区域だ。
SORT-FILESDにするのは、自由に触らせないための設計判断だ。
READWRITEを書かなくても動くのは、裏で全部やっているからだ。
だからSORTは「書き方」より、置き場所と前提がすべてになる。
COBOLは処理より先に、身元確認をさせる言語だ。

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

この記事を書いた人

コメント

コメントする

目次