【COBOL 読み3-11-5】予約語?定義語?その他?どれがなに?

🧩今日の学び
FDSDは名前ではなく、役割を固定するための予約語として文法に組み込まれている
INPUT-FILEなどは人が付けた名前で、消せるかどうかが予約語判定の近道になる
・COBOLは「名前は自由、役割は不自由」という思想で事故を未然に防いでいる

なるお)SDFDは予約語なんすか?

係長)ん? そうだな、FDSDもCOBOLの予約語だ。

だから、勝手に名前を変えたり、省略したりはできないぞ。

な)…そうなんすね…ふむむ…

係)ん…?

んーもう少し細かく説明するとこうなるぞ。

目次

FDとSDは「名前っぽいけど名前じゃない

FD(File Description)

FD INPUT-FILE.
  • 予約語
  • FILE SECTION専用
  • 「このファイルは人間が READ / WRITE します」という宣言

SD(Sort Description)

SD  SORT-FILE.
  • 予約語
  • FILE SECTION専用
  • 「このファイルはSORT専用で、人は触りません」という宣言

役割を文法で縛る、それがCOBOLの設計思想

ここがCOBOLらしいところなんだが、なんで別の予約語なのかというと、ファイルの「役割」を文法レベルで固定したかったからだ。

  • FDなのにSORTでしか使わない
  • SDなのにREADしちゃう

こういう事故を文法で起こさせないためだ。

もし間違えたらどうなるか。

例えば、SDREADしようとした場合。

READ SORT-FILE.

コンパイルエラー or 実行時エラーとなる。

COBOLはな、「それ、立場的にやっちゃダメだろ」ってところをかなり厳しく見てくる。

まとめるぞ。

  • FD/SD予約語
  • FILE SECTIONでしか使えない
  • FDは人が触るファイル
  • SDSORT専用の立入禁止区域
  • 文法で役割を縛るのがCOBOL

な)むー

係)なんなんだよ、さっきから。

な)いや、てか、そういう説明が今までなかったから、何が予約語で、どれが係長命名語なんか、わからなかったんですけど…。

係)…あー。そ、それはすまん、俺の進め方が悪かったな。

な)天才だからついていけてんですよ!

係)わかったわかった。一回、ちゃんと整理しておくか。

COBOLの言葉は3種類に分かれている

予約語(言語が決めた言葉)

  • COBOLが意味を持ってる
  • 勝手に名前を変えられない
  • 文法そのもの

FD
SD
SELECT
READ
WRITE
SORT
PERFORM

係)これは俺が決めたんじゃないからな。

ユーザー定義名(コードを書く人が決めた言葉)

  • ファイル名
  • 変数名
  • レコード名
  • 段落名
INPUT-FILE
ITEM-ID
SORT-ITEM-FILE
SEARCH-ALL-ITEM

係)これは全部、勝手に付けた名前だ。

な)あー「LOVE」とか言ってましたよね。

係)なんでそれは覚えてるんだよ…

コメント・ノリ(なるおゾーン)

  • 説明用
  • 感情

係)ここは文法とは無関係。好き勝手書けるお前が得意なところだ。

な)好き勝手に書いたら怒るくせに…

係)お前の好き勝手は洒落にならないんだよ!


でだ。

FD / SD はこう書くだろ。

FD INPUT-FILE.
SD SORT-FILE.

この見た目が

FD + 名前
SD + 名前

だからFDSDも名前っぽく見える」んだ。

でも実際はこうだ。

FD(予約語) + INPUT-FILE(お前が付けた名前)
SD(予約語) + SORT-FILE(お前が付けた名前)

じゃあ、どう見分けるかって話だ。

それ無しで意味が通るか

超シンプルな判定法として、「それ無しでCOBOLが意味を理解できるかどうか」ということだ。

例えば、

  • FDを消す → ファイル定義じゃなくなる
  • SDを消す → SORT専用じゃなくなる
  • INPUT-FILE を消す → 名前が無いだけ
  • ITEM-IDを消す → 別名つければOK

消せないやつが予約語となる。

簡単にまとめると、

  • FD/SD予約語
  • INPUT-FILE/SORT-FILE人間が付けた名前
  • COBOLは「役割」を予約語で縛る
  • 名前は自由、役割は自由じゃない

これで大丈夫…だろ?

おむすび

係)って、なんで今頃聞いてきたんだよ?初歩の初歩と言えるところなのに。

な)だって、最初のときは何がなんだかわからないし、どっかで一回聞いたことあったけど、どう聞けばいいかわからなかったので、よくわかんなかったしで。

今ならなんとなくちゃんとした言葉で聞けるかなって。

係)…お前も成長してんだな…

な)あれ?感動してます?

係)あぁ…やっぱり全然天才じゃなかったんだなって。

な)え!?

係長のワンポイント

FDSDは名前じゃない、役割を宣言するための予約語だ。
INPUT-FILESORT-FILEが名前に見えるのは、その後ろに立っているからにすぎない。
COBOLは「自由に名付けていい」と同時に、「勝手に振る舞うな」と言ってくる。
だから役割は予約語で縛り、名前だけを人間に任せている。
消せない言葉が予約語──そこに言語の意思がある

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

この記事を書いた人

コメント

コメントする

目次