【COBOL学習|初心者向け】COBOLの基本!VALUE句で変数の初期値をスマートに設定しよう

1. 導入:なぜVALUE句が重要なのか

COBOLでプログラムを書く際、変数を宣言した直後に「とりあえず0を入れておきたい」「初期値としてスペースを埋めておきたい」ということはよくあります。もしVALUE句を使わない場合、メモリ上にはゴミデータ(以前の処理で残った値)が入っている可能性があります。VALUE句を適切に使うことで、プログラム開始時の変数の状態を確実にし、バグを未然に防ぐことができます。

2. 基礎知識:VALUE句の役割

VALUE句は、データ項目(変数)に対して初期値を割り当てるための構文です。主にプログラムのワーキングストレージ(WORKING-STORAGE SECTION)で定義する際、PIC句(データ型と桁数)の後に続けて記述します。
ここでのポイントは「プログラムが実行(ロード)される瞬間に値がセットされる」という点です。いちいちMOVE文で「0」を代入するコードを書く手間が省け、コードの可読性も向上します。

3. 実装と解決策

VALUE句を使用する際は、定義するデータ型に注意が必要です。数値項目(PIC 9)には数値を、文字項目(PIC X)にはシングルクォーテーションで囲った値を指定します。また、集団項目にVALUE句を指定すると、その配下のすべての項目がその値で初期化されるため、構造体の初期化にも非常に便利です。

4. サンプルプログラム

以下のコードをコピーして、ご自身の環境で試してみてください。

IDENTIFICATION DIVISION.
PROGRAM-ID. VALUE-SAMPLE.

WORKING-STORAGE SECTION.

  • 数値項目の初期化

05 WS-COUNT PIC 9(3) VALUE 100.

  • 文字項目の初期化

05 WS-NAME PIC X(10) VALUE ‘COBOL’.

  • 集団項目を一括でスペースで初期化

05 WS-GROUP.
10 WS-ITEM-A PIC X(5) VALUE SPACES.
10 WS-ITEM-B PIC X(5) VALUE SPACES.

PROCEDURE DIVISION.
DISPLAY “初期値 WS-COUNT: ” WS-COUNT.
DISPLAY “初期値 WS-NAME : ” WS-NAME.

  • 処理後の変更

MOVE 999 TO WS-COUNT.
DISPLAY “変更後 WS-COUNT: ” WS-COUNT.

STOP RUN.

5. 応用・注意点

現場でよくある失敗として「VALUE句で設定した値を、プログラムの途中で初期値に戻したい」というケースがあります。注意してほしいのは、VALUE句はあくまでプログラム起動時(メモリ確保時)に一度だけ働くということです。
プログラムの実行中に変数の値を初期値に戻したい場合は、再度MOVE文で値を代入するか、初期値用の定数項目を用意してMOVEする方法をとる必要があります。また、VALUE句とREDEFINES句を併用する場合、初期値は親項目(上位の定義)で指定する必要があるというルールも覚えておくと良いでしょう。基本をしっかり押さえて、堅牢なCOBOLプログラムを作成してくださいね。

コメント

タイトルとURLをコピーしました