カテゴリ: COBOL 更新日: 2025/10/11

COBOLのDDステートメントでファイルとデータセットを指定する方法を完全ガイド!初心者でも理解できる実践解説

DDステートメントでファイルとデータセットを指定する方法
DDステートメントでファイルとデータセットを指定する方法

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

生徒

「先生、COBOLのプログラムで外部のファイルやデータセットを使いたいときって、どうやって指定するんですか?」

先生

「それには、JCL(ジョブ制御言語)の中でDDステートメントを使います。このDDステートメントが、プログラムと外部ファイルをつなぐ役割をします。」

生徒

「DDステートメントってなんですか?難しそうです…」

先生

「大丈夫、簡単に言うと“住所表”のようなものです。プログラムが『このファイルを使いたい』と指定したら、DDステートメントが『それはこの場所ですよ』と案内してくれるんです。」

1. DDステートメントとは?

1. DDステートメントとは?
1. DDステートメントとは?

COBOLプログラムでは、実際にデータを読み書きするファイルやデータセットを直接プログラムの中でパス(場所)指定することは少なく、JCL(Job Control Language)のDDステートメントを通じて指定します。DDとは「Data Definition(データ定義)」の略で、これはプログラムと実際のデータの橋渡しをする重要な仕組みです。

例えば、あなたが図書館で本を借りるとき、書架の番号や棚の位置を教えてもらわないと探せませんよね。それと同じで、COBOLプログラムも、データセット(大きなデータの箱)の場所を教えてもらわないと使えません。この「場所を教える役」がDDステートメントです。

2. JCLでのDDステートメントの基本構造

2. JCLでのDDステートメントの基本構造
2. JCLでのDDステートメントの基本構造

DDステートメントはJCL内で以下のように書きます。


//MYDATA   DD  DSN=USER01.SAMPLE.DATA,DISP=SHR
  • //MYDATA → DD名(プログラム内で参照するための名前)
  • DD → 「データ定義」を意味するキーワード
  • DSN=USER01.SAMPLE.DATA → 実際のデータセット名(DSNは「Data Set Name」)
  • DISP=SHR → データセットの利用方法(SHRは「共有」)

この例では「MYDATA」というDD名で、USER01.SAMPLE.DATAというデータセットを共有モードで使うことを意味しています。

3. COBOLプログラムでDD名を使う方法

3. COBOLプログラムでDD名を使う方法
3. COBOLプログラムでDD名を使う方法

COBOLプログラムでは、SELECT文でDD名を指定します。こうすることで、プログラムが実際にどのデータセットを使うのかをJCL側で切り替えられるようになります。


SELECT INFILE ASSIGN TO MYDATA
    ORGANIZATION IS LINE SEQUENTIAL.

この例では、COBOLプログラムの中でINFILEというファイルをMYDATAというDD名に割り当てています。つまり、プログラムがINFILEを開こうとすると、JCLのDDステートメントで指定されたデータセットが開かれる仕組みです。

4. DISPパラメータの使い方

4. DISPパラメータの使い方
4. DISPパラメータの使い方

DISPは「Disposition(ディスポジション)」の略で、データセットをどのように扱うかを指定します。よく使う設定は次の通りです。

  • DISP=SHR → 他のジョブと共有して読み込み(既存データセット用)
  • DISP=NEW → 新しく作成する
  • DISP=OLD → 単独で使用(排他アクセス)

例えば、新しいレポートファイルを作成する場合はDISP=NEWを使い、既存データを参照するだけならDISP=SHRを使います。

5. 簡単な実行例

5. 簡単な実行例
5. 簡単な実行例

次の例では、JCLとCOBOLプログラムを使ってデータセットの内容を表示します。

JCL側


//STEP01   EXEC PGM=COBPROG
//MYDATA   DD  DSN=USER01.SAMPLE.DATA,DISP=SHR
//SYSOUT   DD  SYSOUT=*

COBOL側


IDENTIFICATION DIVISION.
PROGRAM-ID. COBPROG.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT INFILE ASSIGN TO MYDATA
        ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD INFILE.
01 IN-REC PIC X(80).
PROCEDURE DIVISION.
    OPEN INPUT INFILE
    PERFORM UNTIL EOF
        READ INFILE
            AT END SET EOF TO TRUE
            NOT AT END DISPLAY IN-REC
        END-READ
    END-PERFORM
    CLOSE INFILE
    STOP RUN.

6. DDステートメントを理解すると便利になる理由

6. DDステートメントを理解すると便利になる理由
6. DDステートメントを理解すると便利になる理由

DDステートメントを使うと、プログラムを修正せずに、使用するデータセットを簡単に切り替えることができます。たとえば、本番環境とテスト環境で違うファイルを使う場合、JCLのDDステートメントだけを変更すれば、同じCOBOLプログラムで異なるデータを扱えるのです。

これは、大量のデータ処理やシステム運用で非常に便利で、COBOLプログラムを効率的に活用できる重要なテクニックです。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法