カテゴリ: COBOL 更新日: 2025/06/20

COBOLのDATA DIVISIONを完全解説!初心者にもわかるデータ定義の基本構造

DATA DIVISIONの基本構造を学ぼう
DATA DIVISIONの基本構造を学ぼう

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

生徒

「COBOLでデータを扱うには、どうやって変数を作るんですか?」

先生

「COBOLでは、DATA DIVISIONという部分でデータや変数を定義するんですよ。」

生徒

「DATA DIVISIONってなんだか難しそうですね…」

先生

「大丈夫。DATA DIVISIONの構造はとてもシンプルです。一緒に見ていきましょう!」

1. DATA DIVISIONとは?

1. DATA DIVISIONとは?
1. DATA DIVISIONとは?

COBOLのプログラムは、いくつかの「ディビジョン(部門)」に分かれています。その中で、DATA DIVISION(データ部)は、プログラムが使うデータや変数を定義するための場所です。

簡単に言えば、「このプログラムで使う荷物(データ)をあらかじめ用意しておく倉庫のような場所」と考えてください。プログラムが始まる前に、何のデータを使うかをここで準備しておくのです。

2. DATA DIVISIONの基本構造

2. DATA DIVISIONの基本構造
2. DATA DIVISIONの基本構造

DATA DIVISIONの中には、さらにいくつかの「セクション(節)」があり、それぞれ役割があります。代表的なものは以下の2つです。

  • WORKING-STORAGE SECTION(ワーキングストレージ・セクション):プログラム内で使う一時的な変数を定義する場所。
  • FILE SECTION(ファイル・セクション):ファイルから読み込むデータや、ファイルに書き出すデータの構造を定義する場所。

この記事では、初心者向けにまず「WORKING-STORAGE SECTION」について詳しく解説します。

3. WORKING-STORAGE SECTIONで変数を定義する

3. WORKING-STORAGE SECTIONで変数を定義する
3. WORKING-STORAGE SECTIONで変数を定義する

WORKING-STORAGE SECTIONでは、プログラムの中で一時的に使う「変数」を宣言します。変数とは、数字や文字などの値を一時的に記憶しておく箱のようなものです。

COBOLでは、変数を定義する時に「レベル番号」や「ピクチャ文字列(PICTURE)」といったルールを使います。

次のようなコードを書いて、変数を定義します:


DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME     PIC A(20).
01 USER-AGE      PIC 99.

この例では、「USER-NAME」という名前の変数に最大20文字のアルファベットを、「USER-AGE」という変数に2桁の数字を入れる準備をしています。

4. PIC(ピクチャ)とは何か?

4. PIC(ピクチャ)とは何か?
4. PIC(ピクチャ)とは何か?

PICとは、「ピクチャ文字列(PICTURE clause)」の略で、変数にどんなデータを入れるのかを指定するものです。

  • 9:数字(0〜9)を1文字ぶん表す。
  • A:英字(アルファベット)を1文字ぶん表す。
  • X:文字なら何でも1文字ぶん表す(数字もアルファベットもOK)。

たとえば、PIC 9(3)なら、3桁の数字を入れられる変数を意味します。

5. 実際のCOBOLプログラムで使ってみよう

5. 実際のCOBOLプログラムで使ってみよう
5. 実際のCOBOLプログラムで使ってみよう

WORKING-STORAGE SECTIONで変数を定義したあと、PROCEDURE DIVISION(処理部)でその変数を使うことができます。以下は、ユーザーの名前と年齢を表示するプログラムの例です。


IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME     PIC A(20) VALUE "YUI".
01 USER-AGE      PIC 99     VALUE 25.

PROCEDURE DIVISION.
    DISPLAY "名前:" USER-NAME.
    DISPLAY "年齢:" USER-AGE.
    STOP RUN.

このプログラムを実行すると、次のように表示されます。


名前:YUI
年齢:25

6. 入れ子構造(階層)の使い方

6. 入れ子構造(階層)の使い方
6. 入れ子構造(階層)の使い方

COBOLでは、変数に階層構造を持たせることができます。これは、ひとつのデータの中に小さなデータが入っているようなイメージです。たとえば、住所を定義する時に使います。


01 ADDRESS.
   05 POSTAL-CODE    PIC 9(7).
   05 PREFECTURE     PIC A(10).
   05 CITY           PIC A(10).

このように、01の下に05を使うことで、「住所」の中に「郵便番号」「都道府県」「市区町村」といった情報をまとめて管理できます。

7. VALUE句で初期値を設定

7. VALUE句で初期値を設定
7. VALUE句で初期値を設定

変数を定義する時にVALUEを使うことで、最初から決まった値を入れておくことができます。これを「初期値」といいます。


01 COUNTER     PIC 9(3) VALUE 100.

このようにしておくと、プログラムの最初にCOUNTERには100が入っている状態になります。

8. よくある間違いと注意点

8. よくある間違いと注意点
8. よくある間違いと注意点

初心者がよく間違えるポイントもいくつか紹介しておきます。

  • PIC句の文字数が多すぎる:使う文字数を考えて適切な長さを設定しましょう。
  • VALUE句が合わない:文字列と数字を間違えるとエラーになります。
  • レベル番号の使い方:01の下には05、10…と小さい数字を順番に使いましょう。

ルールに従えばエラーも減り、プログラムがスムーズに動きます。

カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.2
Java&Spring記事人気No2
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
COBOLのINDEXED BY句を使ったインデックス管理の基本をやさしく解説!