カテゴリ: COBOL 更新日: 2025/12/29

COBOLのDD文を完全ガイド!初心者でもわかるファイル指定とJCL連携

DD文の基本とファイルの指定方法
DD文の基本とファイルの指定方法

先生と生徒の会話形式で理解しよう

生徒

「COBOLのプログラムと一緒に使われるJCLで、ファイルを指定するって聞いたんですが、正直よく分かりません…。」

先生

「それは“DD文”のことですね。COBOLでファイルを読むときや書くときに、JCL側でそのファイルがどこにあるかを指定する大事な仕組みですよ。」

生徒

「COBOLのプログラムだけじゃなくて、JCLの設定も必要ってことですか?」

先生

「その通りです。では、DD文の基本やファイル指定のポイントを、全くの初心者でも分かるように説明していきましょう。」

1. DD文とは?

1. DD文とは?
1. DD文とは?

DD文は、JCL(ジョブコントロールランゲージ)の中で使われるデータ定義(Data Definition)のことを指します。COBOLのプログラムでは、ファイルを論理名で扱いますが、その論理名と実際のファイルの場所や種類を結びつけるのがDD文の役割です。ファイルの入り口を案内する“看板”のようなもので、どのデータセットを読み書きするかをJCL側で指定します。大規模システムでは多くのファイルを扱うため、DD文の理解が欠かせません。

2. DD文の基本構造を理解しよう

2. DD文の基本構造を理解しよう
2. DD文の基本構造を理解しよう

DD文は、JCL内で//DD名 DD …という形式で記述します。ここで書かれるDD名は、COBOLのFD文やSELECT文で指定した論理ファイル名と一致している必要があります。さらにDD文では、使用するデータセット名、ファイルの種類、レコードの長さ、割り付け方法などを設定できます。初めての人には情報が多く感じられますが、一つ一つの要素は役割が明確で理解しやすいものです。特にプログラムと現物のファイルをつなぐためには必須の知識なので、ここでしっかり押さえておくことが大切です。

3. 代表的なDD文の例とその意味

3. 代表的なDD文の例とその意味
3. 代表的なDD文の例とその意味

実際に使用されるDD文を見て、何を指定しているのかを理解してみましょう。以下は入力ファイルを指定するシンプルな例です。


 //INFILE   DD DSN=USER.DATA.INPUT,
 //            DISP=SHR

ここでは“INFILE”というDD名のデータセットを指定しています。DSNはデータセット名で、DISP=SHRは読み取り専用で共有利用する設定を意味します。COBOL側でこのINFILEを使って読み込みを行う場合、SELECT文でこの論理名を結びつけ、FILE CONTROL句でプログラムに認識させる必要があります。初めは慣れませんが、構造を理解すれば自然に読み解けるようになります。

4. COBOLとDD文の連携の仕組み

4. COBOLとDD文の連携の仕組み
4. COBOLとDD文の連携の仕組み

COBOLプログラムでは、SELECT文やFD文を利用して論理名を定義します。この論理名とDD文のDD名が一致すると、プログラムとデータセットが結びつきます。例えば、COBOL側でINFILEを指定し、JCL側でもINFILEを記述すると対応が取れる仕組みです。これはプログラムがどのデータを使うかを外部から設定できる柔軟な方法であり、本番環境では非常に強力です。同じプログラムでも異なるデータを簡単に入れ替えられるため、運用作業が効率化されます。


SELECT IN-FILE ASSIGN TO INFILE.
FD IN-FILE.
01 IN-REC PIC X(80).

5. 出力ファイルを指定するDD文の例

5. 出力ファイルを指定するDD文の例
5. 出力ファイルを指定するDD文の例

出力ファイルを作る場合には、DISP=NEWやCATALOGといった指定が必要になります。以下は新規ファイルを作成する例です。


 //OUTFILE DD DSN=USER.DATA.OUTPUT,
 //           DISP=(NEW,CATLG,DELETE),
 //           SPACE=(CYL,(1,1)),
 //           RECFM=FB,LRECL=80

この設定では新しくデータセットを作成し、正常終了時はカタログに登録、異常時は削除されるように設定しています。LRECLやRECFMといった指定はレコードの長さや形式を示し、COBOL側のFD文で指定したレコードサイズと一致させる必要があります。こうした細かい設定が正しくないと、プログラムは動いてもファイルが作成されなかったり、文字化けが発生することがあるため注意が必要です。

6. 実行時にファイルが正しく読み書きされる仕組み

6. 実行時にファイルが正しく読み書きされる仕組み
6. 実行時にファイルが正しく読み書きされる仕組み

ジョブが実行されると、JCLに書かれたDD文がOSによって解釈され、COBOLプログラムに対応するデータセットが割り当てられます。そのため、プログラム内部にファイルの物理名を直接書かなくても、外部設定で柔軟に切り替えができるわけです。これはメインフレーム環境の強みの一つで、運用担当者がJCLだけを変更して別データを処理できるメリットがあります。ファイル処理を理解すると、システム全体の動きもより深く理解できるようになります。

7. 簡単な入出力の動作例

7. 簡単な入出力の動作例
7. 簡単な入出力の動作例

以下はINFILEから読み込み、OUTFILEに書き出すCOBOLの例です。


SELECT IN-FILE ASSIGN TO INFILE.
SELECT OUT-FILE ASSIGN TO OUTFILE.

FD IN-FILE.
01 IN-REC PIC X(80).

FD OUT-FILE.
01 OUT-REC PIC X(80).

READ IN-FILE
    AT END MOVE "END" TO OUT-REC
END-READ.

WRITE OUT-REC.

実行結果のイメージは次のようになります。


END
カテゴリの一覧へ
新着記事
New1
C#
C#のデリゲートとは?メソッドを変数のように扱う基本を解説
New2
C#
C#の文字列型(string)を完全解説!連結・分割・検索の方法を紹介
New3
C#
C#非同期処理の進捗状況を表示!IProgressの使い方を初心者向けに解説
New4
C#
C#の文字列フォーマット方法!String.Format・補間文字列の使い方
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.3
Java&Spring記事人気No3
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.5
Java&Spring記事人気No5
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.6
Java&Spring記事人気No6
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.7
Java&Spring記事人気No7
COBOL
COBOLのMOVE文を完全ガイド!初心者でもわかるデータ移送の基本
No.8
Java&Spring記事人気No8
C#
C#でファイルのエンコーディングを指定する方法(UTF-8・Shift-JISなど)