COBOLのDATA DIVISIONを完全解説!初心者にもわかるデータ定義の基本構造
生徒
「COBOLでデータを扱うには、どうやって変数を作るんですか?」
先生
「COBOLでは、DATA DIVISIONという部分でデータや変数を定義するんですよ。」
生徒
「DATA DIVISIONってなんだか難しそうですね…」
先生
「大丈夫。DATA DIVISIONの構造はとてもシンプルです。一緒に見ていきましょう!」
1. DATA DIVISIONとは?
COBOLのプログラムは、いくつかの「ディビジョン(部門)」に分かれています。その中で、DATA DIVISION(データ部)は、プログラムが使うデータや変数を定義するための場所です。
簡単に言えば、「このプログラムで使う荷物(データ)をあらかじめ用意しておく倉庫のような場所」と考えてください。プログラムが始まる前に、何のデータを使うかをここで準備しておくのです。
2. DATA DIVISIONの基本構造
DATA DIVISIONの中には、さらにいくつかの「セクション(節)」があり、それぞれ役割があります。代表的なものは以下の2つです。
- WORKING-STORAGE SECTION(ワーキングストレージ・セクション):プログラム内で使う一時的な変数を定義する場所。
- FILE SECTION(ファイル・セクション):ファイルから読み込むデータや、ファイルに書き出すデータの構造を定義する場所。
この記事では、初心者向けにまず「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(ピクチャ)とは何か?
PICとは、「ピクチャ文字列(PICTURE clause)」の略で、変数にどんなデータを入れるのかを指定するものです。
- 9:数字(0〜9)を1文字ぶん表す。
- A:英字(アルファベット)を1文字ぶん表す。
- X:文字なら何でも1文字ぶん表す(数字もアルファベットもOK)。
たとえば、PIC 9(3)なら、3桁の数字を入れられる変数を意味します。
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. 入れ子構造(階層)の使い方
COBOLでは、変数に階層構造を持たせることができます。これは、ひとつのデータの中に小さなデータが入っているようなイメージです。たとえば、住所を定義する時に使います。
01 ADDRESS.
05 POSTAL-CODE PIC 9(7).
05 PREFECTURE PIC A(10).
05 CITY PIC A(10).
このように、01の下に05を使うことで、「住所」の中に「郵便番号」「都道府県」「市区町村」といった情報をまとめて管理できます。
7. VALUE句で初期値を設定
変数を定義する時にVALUEを使うことで、最初から決まった値を入れておくことができます。これを「初期値」といいます。
01 COUNTER PIC 9(3) VALUE 100.
このようにしておくと、プログラムの最初にCOUNTERには100が入っている状態になります。
8. よくある間違いと注意点
初心者がよく間違えるポイントもいくつか紹介しておきます。
- PIC句の文字数が多すぎる:使う文字数を考えて適切な長さを設定しましょう。
- VALUE句が合わない:文字列と数字を間違えるとエラーになります。
- レベル番号の使い方:01の下には05、10…と小さい数字を順番に使いましょう。
ルールに従えばエラーも減り、プログラムがスムーズに動きます。
まとめ
ここまでDATA DIVISIONの基本構造やWORKING-STORAGE SECTIONの役割、PIC句の意味、階層構造の使い方、初期値の設定など、COBOLで欠かせないデータ定義の基礎を丁寧に確認してきました。あらためて振り返ってみると、DATA DIVISIONはただの宣言場所ではなく、プログラム全体を安定して動かすための基盤としてとても重要な場所だと実感できます。特にレベル番号やPIC句の組み合わせ方は、COBOLならではの独特な表現ですが、慣れてくると非常に論理的で使いやすい仕組みです。また、実際の開発現場でよく利用される住所データの階層構造や初期値設定なども、知っておくとコードの見通しがよくなり、後から見返したときに理解しやすい形に整理できます。 さらに、初心者がつまずきやすいVALUE句の使い方や文字数設定などの注意点も押さえておけば、実際のコーディングで不必要なエラーに悩まされることが少なくなるでしょう。DATA DIVISIONはただ「変数を書くだけ」の場所ではなく、「どのデータをどう扱うか」をあらかじめ丁寧に準備しておく大切な工程です。この部分をしっかり理解することで、PROCEDURE DIVISIONでの処理が格段に書きやすくなり、COBOL全体の構造も自然と整理されていきます。 また、プログラム全体を俯瞰して考える癖をつけることで、より複雑なレコード構造やファイル定義もスムーズに扱えるようになります。特に業務システムでは、顧客情報、売上データ、住所情報など、複雑で長い項目を一つのレコードとして扱う場面が多く、そのような場合にレベル番号で階層化しておくと、処理や編集が非常にやりやすくなります。DATA DIVISIONを理解することは、COBOLの基礎力を確実に高める第一歩です。 以下では、今回学んだ内容を応用したサンプルプログラムを載せておきます。DATA DIVISIONの構造とPROCEDURE DIVISIONでの表示処理がどのようにつながるかを確認し、実際の動きをイメージしやすい形にまとめました。
DATA DIVISION応用サンプル
以下の例では、名前と住所、年齢を階層構造を使って定義し、初期値も設定しておきます。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-DATA.
05 USER-NAME PIC A(20) VALUE "TARO".
05 USER-AGE PIC 99 VALUE 31.
05 USER-ADDRESS.
10 POSTAL-CODE PIC 9(7) VALUE 1234567.
10 PREFECTURE PIC A(10) VALUE "TOKYO".
10 CITY PIC A(10) VALUE "MINATO".
PROCEDURE DIVISION.
DISPLAY "名前:" USER-NAME.
DISPLAY "年齢:" USER-AGE.
DISPLAY "郵便番号:" POSTAL-CODE.
DISPLAY "都道府県:" PREFECTURE.
DISPLAY "市区町村:" CITY.
STOP RUN.
このように階層構造を使えば、一つのまとまりであるデータを見やすく整理できます。現場のCOBOLプログラムでも、このように複数項目をひとつにまとめた構造がよく登場します。階層を正しく使うことで、メンテナンスのしやすさや可読性も大きく向上します。 また、PIC句で指定する文字数は、必要以上に増やすとメモリを無駄に消費したり、表示が揃わなくなる原因にもなりますので、データの性質に合わせた適切な長さを考える習慣も大切です。実際のプログラムでは桁数の整合性が非常に重要で、業務データと一致していないと予期しない動きをする場合があります。 VALUE句についても、数字型の変数には数字を、文字型には文字列を設定するように気をつけておくと安心です。とくに数字に文字を設定したり、桁数が一致していない初期値を指定してしまうと、実行時に正しく動作しなくなったり、意図しない結果が出てしまう原因になります。 最後に、DATA DIVISIONはただ書くだけではなく、プログラム全体の構造を整える役割があることをぜひ覚えておきましょう。これが理解できると、COBOLのプログラムを読む力も一気にレベルアップしていきます。
生徒
「DATA DIVISIONって難しいと思っていたけど、仕組みがわかると意外とシンプルなんですね。」
先生
「そうなんです。最初にしっかり変数の準備をすることで、後の処理がとても楽になりますよ。」
生徒
「PIC句も最初は覚えられるか不安でしたけど、数字と文字の違いとか、桁の意味を意識すれば理解できますね。」
先生
「その通りです。レベル番号や階層構造も慣れれば自然と使いこなせますし、実務でもとても役に立つ部分です。」
生徒
「これからいろいろなプログラムを書くとき、DATA DIVISIONの丁寧な準備を意識してみます!」
先生
「その意識は必ず役に立ちますよ。次のステップに進むための大事な基礎がしっかり身につきましたね。」