カテゴリ: COBOL 更新日: 2025/12/26

COBOLのVALUE句とは?初心者でもわかる定数値の設定と初期化の基本

VALUE句を使った定数値の設定と初期化
VALUE句を使った定数値の設定と初期化

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

生徒

「COBOLでは、あらかじめ決めた値を変数に入れておく方法ってあるんですか?」

先生

「うん、COBOLではVALUE句を使うことで、定数のように最初から値を入れておくことができるんだよ。」

生徒

「それって、プログラムの中でどう使うんですか?」

先生

「じゃあ、COBOLのVALUE句の基本的な使い方と、初期化の方法を見てみよう!」

1. VALUE句とは?

1. VALUE句とは?
1. VALUE句とは?

COBOL(コボル)のVALUE句とは、変数に最初から決めておいた値(定数値)を入れておくための書き方です。これを「初期化(しょきか)」と呼びます。

たとえば、名前や年齢など、プログラムのスタート時点で既に決まっている情報をVALUE句を使って定義しておくことで、後でその変数を使いやすくなります。

VALUE句は、DATA DIVISION(データディビジョン)という部分の中に書きます。ここでは、プログラムが使う変数やデータの情報をまとめて定義します。

2. VALUE句の基本的な書き方

2. VALUE句の基本的な書き方
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句を使うと何が便利なの?

3. VALUE句を使うと何が便利なの?
3. VALUE句を使うと何が便利なの?

プログラムでは、何度も同じ値を使うことがあります。毎回同じ値を入力するのではなく、最初からVALUE句で定義しておくと、作業がとても楽になります。

また、VALUE句を使うと「間違えにくくなる」というメリットもあります。人間は何度も同じものを入力するとき、ミスをしやすくなります。でも、VALUE句で定義しておけば、一度だけ入力するだけで済みます。

4. VALUE句とPIC句の関係

4. VALUE句とPIC句の関係
4. VALUE句とPIC句の関係

COBOLでは、変数を定義するときにPIC(ピクチャ)句を使って、データの形式(文字なのか数字なのか)や長さを決めます。

VALUE句は、このPIC句とセットで使われます。

たとえば、PIC X(10)なら、文字を最大10文字まで入れられる変数になります。そこにVALUE 'TANAKA'と書くことで、「TANAKA」という文字が最初から入るというわけです。

5. 実行結果を見てみよう

5. 実行結果を見てみよう
5. 実行結果を見てみよう

さきほどのサンプルを実行すると、以下のように表示されます。


名前:TANAKA
年齢:25

このように、VALUE句で設定した定数値が、プログラムの実行と同時に画面に表示されることがわかります。

6. VALUE句の注意点

6. VALUE句の注意点
6. VALUE句の注意点
  • VALUE句で設定できる値は、あらかじめ決めておく必要があります。
  • プログラムの実行中に変更される可能性がある場合は、定数ではなく「変数」として扱いましょう。
  • VALUE句で設定した文字列は、PIC句で指定した長さに収まるように気をつけましょう。

7. 他にもよく使われるVALUE句の例

7. 他にもよく使われるVALUE句の例
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句の実用的な活用方法

8. 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句は「書けば終わり」ではなく、その後のプログラムの中でDISPLAYIF文と組み合わせて活用していくのが基本です。実際に画面に表示したり、条件分岐に使ったりと、利用の幅は広いのです。

最後に、注意点としてはVALUE句で設定する値は「プログラム開始時に入っている状態」であるため、動的に変えたい場合には向いていないということです。その場合は通常のMOVE文などで値を代入するほうが柔軟です。

COBOLの基礎を学ぶ上で、このVALUE句は避けて通れない大切な要素の一つです。今回の記事を通して、「あらかじめ定められた値をどう扱うか」「その値をどう設計すれば使いやすいか」といった観点でも、プログラミングの考え方を少しずつ深めていけるのではないでしょうか。

先生と生徒の振り返り会話

生徒

「なるほど、VALUE句を使うと最初から値を入れておけるんですね!しかも、固定のメッセージとかにも使えるなんて便利です!」

先生

「そうだね。プログラムの冒頭で定義しておくことで、後から変更もしやすくなるし、間違いも減らせるよ。」

生徒

「あと、PIC句と一緒に書くっていうのもポイントですね。文字数を超えないように気をつけなきゃ!」

先生

「そうそう。PIC句で定めたサイズに合わせてVALUE句の値を設定しないと、想定通りに動かなくなることもあるからね。」

生徒

「これから社員登録のプログラムとか作るときにも使えそうです!定型のメッセージとか、部署名とかに活かせそう!」

先生

「そうだね。日常的に使う定数データはVALUE句で管理するとスッキリしたプログラムになるよ。今日の理解、ばっちりだね!」

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法