【COBOL 読み3-11-4】DIVISIONを思い出せ!今なら理解が深まるはず

🧩今日の学び
ENVIRONMENTは「どこにあるか」、DATAは「何者か」を決めるために分離されている
FDは人が責任を持って触る領域、SDSORT専用で人が触ってはいけない領域
・環境と中身を分けた設計こそが、COBOLが長く現場で生き残った理由

係長)もういいか?

なるお)そうやって圧かけないでくださいよ!もう!その顔で圧かけるからいっつも怖がられるんすよ!誰も話しかけてこないんすよ!

もっと優しく、ソフトに、カインドリーに、My Girl的にお願いしますよ!

係)どういう接し方だよ…

な)良いんですよ!細かいことは!

係)おまえが細かく言い出したんだろ!

で、なんだってんだ?

な)まだわかんないとこあるって話ですよ!

係)だったらそう言えよ!

な)もっとウェルカム雰囲気出してくださいよ。もっと笑顔で、もっとニヒルに。

って良いんですよ!係長の顔のことはどうでも!

係)だったら顔のこと持ち出すなよ!

な)水掛け論ですね…残念です。

係)どこにも水掛けの要素ねーからな!お前の一方的な断罪からな!

な)えっとですね、FDとかSDって書いてますけど、なんかよくわかんないすけど…

係)それを言うのになんで人の顔を悪く言う必要性があったんだよ!

ったく、だったら、この前に示したコードを読んでみろ。

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).
目次

ENVIRONMENTとDATAは「外」と「中」を分けるためにある

な)いやそうじゃなくって、そもそもENVIRONMENT DIVISIONDATA DIVISIONにファイルの関係を分けて書くのかがわかんないって話っす…。

係)…あーそういうことか。そこが分からんまま来てたのか。

な)なんとなく、設定するというか定義するとというか、そんな場所なんだなってのはわかるんすけど、今回みたいになんで分けてんのかとかがまったくわかんないっす…。

係)たしかに、DIVISIONとか、お前が何もわかってないときの話だったな。天才すぎるとかぬかしてたときの話だもんな。なぁ?

な)なんか恥ずかしいんですけど…

係)お前にも恥ずかしいなんて感情あったんだな!意外な一面だな!

な)うっさい…

係)くくく。まとめるとこういうことだ。

ENVIRONMENT DIVISIONは「この世界では、どの名前で生きるか」
DATA DIVISIONは「その中身は何者か」

ふふふ。

な)笑いすぎっすよ!

係)まだ楽しませてもらうからな ニヤニヤ

な)それニヤハラっすからね!

係)なんだよニヤハラって!だったら、お前は腹ハラだな!

な)…デブって言ってます…?

環境を変えてもコードを変えない、それがCOBOLの思想

係)そんで、もう少し具体的に言うとこうなる。

ENVIRONMENT DIVISION

INPUT-FILEという名前のやつは実際には"input.csv"って場所にいるぞ

住民票・勤務先・所属みたいなもんで、

  • OS
  • ファイル名
  • 環境(PCかホストか)

といった、外の世界との約束を書く場所だ。

DATA DIVISION

INPUT-FILEってやつの中身はITEM-IDが3文字で、ITEM-NAMEが10文字だ。

つまりは、身体検査・設計図のようなもんで、

  • レコード構造
  • 桁数
  • 並び

といった、中身の定義を書く場所だ。

なぜ分けるのかというとだな…

理由① 環境を変えてもコードを変えたくない

今日はASSIGN TO "input.csv".

明日はASSIGN TO INPUTDD.

といったときでもDATA DIVISIONは一切変えなくて済む。

理由② 中身が同じなら、置き場所はどうでもいい

  • CSV
  • テープ
  • ディスク
  • JCLのDD名

データの形が同じなら、処理は同じ

ここがCOBOLの思想であって、50年生き残った理由だ。

FDとSDは「人が触る 、人が触るな」の違い

FDSDの違い、ここで整理するぞ

FD(File Description)

「人間が読む・書くファイル」

  • READ
  • WRITE
  • OPEN
  • CLOSE

全部 人間(プログラマ)が操作する

SD(Sort Description)

「SORT専用、立ち入り禁止区域」

  • READしない
  • WRITEしない
  • OPENもしない

SORT文だけを触る

なぜSORT-FILEだけ別枠なのかというと、SORTは「途中経過を誰にも見せない」処理だからだ。

  • 並べ替え途中のデータ
  • 一時ファイル
  • ゴミみたいな中間状態

人が触ると壊れる。だからSDを使うってわけだ。

おむすび

全体を一気に見るとこうだ

ENVIRONMENT DIVISION:名前と置き場所(外の世界)

DATA DIVISION:中身と形(内側の世界)

PROCEDURE DIVISION:動かし方(振る舞い)

わかったか天才。

な)ほんと性格も悪いっすよね。

係)顔も悪いって言いたいのかよ。

な)そんなことじゃないっすよー。

係長の将来を考えると悲しくなってくるんすよ…この子ほんとにこんなんで世の中渡っていけるのかしら、と心配に…。

係)なんで親目線になってんだよ!

係長のワンポイント

ENVIRONMENTは「どこにあるか」を決める場所だ。
DATAは「それが何者か」を決める場所だ。
この2つを分けたから、環境が変わっても処理は生き残る。
FDSDの違いも、「人が責任を持つか、触るなか」の線引きにすぎない。
COBOLは古い言語じゃない──責任分界が最初から設計された言語だ

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

この記事を書いた人

コメント

コメントする

目次