COBOLのVALUE句とは?初心者でもわかる定数値の設定と初期化の基本
生徒
「COBOLでは、あらかじめ決めた値を変数に入れておく方法ってあるんですか?」
先生
「うん、COBOLではVALUE句を使うことで、定数のように最初から値を入れておくことができるんだよ。」
生徒
「それって、プログラムの中でどう使うんですか?」
先生
「じゃあ、COBOLのVALUE句の基本的な使い方と、初期化の方法を見てみよう!」
1. VALUE句とは?
COBOL(コボル)のVALUE句とは、変数に最初から決めておいた値(定数値)を入れておくための書き方です。これを「初期化(しょきか)」と呼びます。
たとえば、名前や年齢など、プログラムのスタート時点で既に決まっている情報をVALUE句を使って定義しておくことで、後でその変数を使いやすくなります。
VALUE句は、DATA DIVISION(データディビジョン)という部分の中に書きます。ここでは、プログラムが使う変数やデータの情報をまとめて定義します。
2. VALUE句の基本的な書き方
まず、VALUE句を使う位置はWORKING-STORAGE SECTION(ワーキング・ストレージ・セクション)というところです。これは、プログラム中で使う変数を定義する場所です。
以下は、VALUE句を使って文字データや数値データを初期化する簡単な例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. VALUE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC X(10) VALUE 'TANAKA'.
01 USER-AGE PIC 99 VALUE 25.
PROCEDURE DIVISION.
DISPLAY "名前:" USER-NAME
DISPLAY "年齢:" USER-AGE
STOP RUN.
この例では、USER-NAMEという変数に「TANAKA」、USER-AGEという変数に「25」をVALUE句で最初から入れています。
つまり、このプログラムが始まると同時に、自動的に「TANAKA」と「25」がそれぞれの変数に入っている状態になります。
3. VALUE句を使うと何が便利なの?
プログラムでは、何度も同じ値を使うことがあります。毎回同じ値を入力するのではなく、最初からVALUE句で定義しておくと、作業がとても楽になります。
また、VALUE句を使うと「間違えにくくなる」というメリットもあります。人間は何度も同じものを入力するとき、ミスをしやすくなります。でも、VALUE句で定義しておけば、一度だけ入力するだけで済みます。
4. VALUE句とPIC句の関係
COBOLでは、変数を定義するときにPIC(ピクチャ)句を使って、データの形式(文字なのか数字なのか)や長さを決めます。
VALUE句は、このPIC句とセットで使われます。
たとえば、PIC X(10)なら、文字を最大10文字まで入れられる変数になります。そこにVALUE 'TANAKA'と書くことで、「TANAKA」という文字が最初から入るというわけです。
5. 実行結果を見てみよう
さきほどのサンプルを実行すると、以下のように表示されます。
名前:TANAKA
年齢:25
このように、VALUE句で設定した定数値が、プログラムの実行と同時に画面に表示されることがわかります。
6. VALUE句の注意点
- VALUE句で設定できる値は、あらかじめ決めておく必要があります。
- プログラムの実行中に変更される可能性がある場合は、定数ではなく「変数」として扱いましょう。
- VALUE句で設定した文字列は、
PIC句で指定した長さに収まるように気をつけましょう。
7. 他にもよく使われるVALUE句の例
以下に、よく使われるパターンをいくつか紹介します。
01 GREETING-MSG PIC X(20) VALUE "こんにちは、世界!".
01 DEFAULT-COUNT PIC 9(3) VALUE 100.
01 YES-FLAG PIC X VALUE "Y".
01 NO-FLAG PIC X VALUE "N".
このように、初期表示のメッセージや、ON・OFFのフラグ、デフォルトの数値などをVALUE句で設定しておくと便利です。
8. VALUE句の実用的な活用方法
例えば、社員管理プログラムを作るときに、部署名や役職名など、決まった情報を事前に設定しておくことができます。
また、よく使う固定メッセージ(たとえば「入力してください」や「エラーです」など)をVALUE句で定義しておけば、プログラム全体で一貫性が保てます。
まとめ
COBOLのプログラムにおいて、VALUE句は定数のように使える非常に便利な機能です。プログラムの実行前にあらかじめ特定の値を変数に入れておきたいときに、このVALUE句を使えば、毎回代入処理を書く必要がなくなります。特に、固定のメッセージや初期値、フラグなど、プログラム中で頻繁に使う値を設定しておくことで、ミスの防止やメンテナンスのしやすさに大きく貢献します。
また、VALUE句はPIC句と密接に関係しており、データの型や長さに合わせて適切に定義することが重要です。たとえば、PIC X(10)の変数に20文字の文字列をVALUEで設定しようとすると、文字が切れてしまう可能性があるため、必ずサイズに合った値を指定する必要があります。
実務で使う場合には、部署コードや定型の挨拶文、よくあるエラーメッセージなどをVALUE句で一括して定義しておくと、複数の処理で統一感を持たせることができ、プログラムの可読性も上がります。
たとえば以下のように、社員の部署コードや入社時のデフォルト値などをまとめて定義しておけば、新人登録の処理や確認画面などでも同じ値を使い回すことができます。
01 DEPT-CODE PIC X(3) VALUE "HRD".
01 JOIN-MSG PIC X(25) VALUE "新しい社員を登録しました".
01 INIT-SALARY PIC 9(5) VALUE 20000.
01 FLAG-ACTIVE PIC X VALUE "Y".
こうした形でVALUE句を積極的に使うことで、プログラムの保守性も大きく向上しますし、後から誰が見ても「この変数はどんな意味を持つのか」が一目で分かるようになります。
また、VALUE句は「書けば終わり」ではなく、その後のプログラムの中でDISPLAYやIF文と組み合わせて活用していくのが基本です。実際に画面に表示したり、条件分岐に使ったりと、利用の幅は広いのです。
最後に、注意点としてはVALUE句で設定する値は「プログラム開始時に入っている状態」であるため、動的に変えたい場合には向いていないということです。その場合は通常のMOVE文などで値を代入するほうが柔軟です。
COBOLの基礎を学ぶ上で、このVALUE句は避けて通れない大切な要素の一つです。今回の記事を通して、「あらかじめ定められた値をどう扱うか」「その値をどう設計すれば使いやすいか」といった観点でも、プログラミングの考え方を少しずつ深めていけるのではないでしょうか。
生徒
「なるほど、VALUE句を使うと最初から値を入れておけるんですね!しかも、固定のメッセージとかにも使えるなんて便利です!」
先生
「そうだね。プログラムの冒頭で定義しておくことで、後から変更もしやすくなるし、間違いも減らせるよ。」
生徒
「あと、PIC句と一緒に書くっていうのもポイントですね。文字数を超えないように気をつけなきゃ!」
先生
「そうそう。PIC句で定めたサイズに合わせてVALUE句の値を設定しないと、想定通りに動かなくなることもあるからね。」
生徒
「これから社員登録のプログラムとか作るときにも使えそうです!定型のメッセージとか、部署名とかに活かせそう!」
先生
「そうだね。日常的に使う定数データはVALUE句で管理するとスッキリしたプログラムになるよ。今日の理解、ばっちりだね!」