本文へスキップ
BecomeCoder

COBOLコース · 第3章 データを表す ― PICTURE句とレベル番号 · レッスン17

VALUE句と初期値 ― 定数・初期化の書き方

ローカル実施

導入

レッスン9からずっと VALUE "Hello, COBOL!" のような記述をさらっと使ってきました。ここで改めて VALUE句 の役割を整理しておきましょう。

説明

VALUE句は、変数を宣言すると同時に初期値を設定する仕組みです。

       01  WS-GREETING          PIC X(20)   VALUE "Hello!".
       01  WS-COUNT             PIC 9(3)    VALUE 0.
       01  WS-TAX-RATE          PIC V99     VALUE 0.10.
       01  WS-COMPANY-NAME      PIC X(30)   VALUE "Become Coder Inc.".
  • 文字列には ""(ダブルクォート)で値を指定します。
  • 数値はそのまま書きます(VALUE 0.VALUE 0.10. のように)。
  • VALUE句で初期化しなかった変数の中身は不定(保証されない) です。他の多くの言語のように「宣言しただけで自動的にゼロや空文字になる」とは限らないため、必要な変数には明示的に VALUE を付ける習慣が大切です。

集団項目に対しても、子項目それぞれにVALUE句を付けられます。

       01  WS-PERSON.
           05  WS-NAME          PIC X(10)   VALUE SPACES.
           05  WS-AGE           PIC 9(3)    VALUE ZEROS.

ここで SPACESZEROS という特別な予約語が登場しました。COBOLには、よく使う初期値のための便利な定数語が用意されています。

予約語意味
SPACES空白で埋める
ZEROSZEROESも可)ゼロで埋める
HIGH-VALUESその文字コードで表現できる最大値で埋める(ソート時の番人などに使う)
LOW-VALUES最小値(多くはヌル文字)で埋める

VALUE句は「宣言時に決まる初期値」であり、実行中に変わる値の代入は次章で学ぶ MOVE 文や算術命令で行います。「最初の値を決めるのがVALUE句、実行中に変えるのがMOVEなどの文」と覚えておきましょう。

試すには

WS-COUNT のVALUE句を書き忘れたまま DISPLAY WS-COUNT をしたらどうなるか、想像してみてください(多くの処理系では実行のたびに違うゴミの値が出ることがあります)。「初期化を忘れない」という習慣の大切さが、他の言語以上にCOBOLでは重要です。