COBOL言語の「VALUE句」とは?初期値設定の方法を知ろう | 用語辞典

COBOL(コボル)言語の予約語VALUE句を使った命令文の書き方とは

辞典・辞書-VALUE-イメージ

COBOL(コボル)言語のVALUE句とは?

COBOLでは、データ項目の値を初期化しておきたい場合や、値が固定の場合はVALUE句を使用して初期値や定数を設定しておくと便利です。

本記事では、COBOLにおけるVALUE句について基本的な使い方やルール、注意点などをご紹介します。

書き方:

レベル番号 [データ項目名] PIC [PICTURE定義] VALUE [設定値].

設定値は、データ項目の初期値になります。予め値が決まっている場合は定数として使用します。VALUE句の設定値はPICTURE句で指定した形式やサイズの範囲内で指定する必要があります。

データ項目の形式やサイズなどを設定するPICTURE句については「COBOL言語の「PICTURE句」とは?基本事項を解説します! |用語辞典」で詳しく解説しています。

以下にVALUE句を使用した簡単なサンプルを紹介します。

辞典・辞書-VALUE-サンプル

実行結果:

辞典・辞書-VALUE-実行結果

サンプルでは、集団項目の配下の項目WORK-START-1に指定したサイズ分の文字列を、VALUE句を使用して初期値として設定しています。

続けて集団項目のWORK-DATAにVALUE句で初期値を設定しておくと、配下の項目WORK-DATA-STRには英数字形式の値"ABCDE"、WORK-DATA-NUMには数値形式の値123が設定されます。

VALUE句のCOBOL(コボル)言語における基本事項やルールについて

  1. データ項目、PIC、PICTURE定義、VALUEの各要素間の改行有無は自由に設定できます。
  2. VALUE句で設定する初期値や定数は、数値形式なら数値定数を指定し、英数字形式なら文字定数で指定する必要があります。
  3. VALUE句で英数字編集形式、数字編集形式を使用する場合は全て文字定数で指定する必要があります。
  4. 定数のサイズは、集団項目の配下のデータ項目全体の長さ以下に設定する必要があります。
  5. VALUE句の数字定数の値は、PICTURE句で指定されている値の範囲内で収める必要があります。

COBOL(コボル)言語のVALUE句を扱う上での注意点

  1. ファイル節では、VALUE句を使用してデータ項目の設定はできません。
  2. 集団項目にVALUE句を設定すると、その配下の項目でVALUE句の設定はできません。配下の項目にVALUE句を設定してもコンパイルエラーにはなりませんが、配下のVALUEで指定した値は反映されません。
  3. REDEFINES句による再定義の記述項には、VALUE句の指定はできません。しかし、VALUE句で指定した項目をREDEFINES句で初期化することは可能です。

VALUE句を使ったCOBOL(コボル)プログラムの活用法

開発するプロジェクトによっては初期化の定義が曖昧な場合もあり、VALUE句を使用しないで手続き部で初期化を行うこともあります。

基本的にデータ項目の初期化処理は必須ではありませんが、VALUE句で行ったほうが初期化していることが明確となります。

可読性やメンテナンスの面でも、初期化処理はVALUE句を使用して行ったほうが安全と言えるでしょう。

以下にVALUE句を使用した、さまざまな初期化方法を紹介します。

   
  1. IDENTIFICATION   DIVISION.
  2. PROGRAM-ID. VALUE_SAMPLE02.
  3.  
  4. ENVIRONMENT   DIVISION.
  5. CONFIGURATION   SECTION.
  6. DATA   DIVISION.
  7.  WORKING-STORAGE     SECTION.
  8. *>配下のデータ項目をZEROで初期化する
  9.   01 WORK-DATE.
  10.   03 WORK-YEAR   PIC 9(4) VALUE ZERO.
  11.   03 WORK-MONTH   PIC 9(2) VALUE ZERO.
  12.   03 WORK-DAY PIC 9(2) VALUE ZERO.
  13. *>集団項目で値を初期化する
  14.   01 WORK-DATA   VALUE "ABCDE12345/".
  15.  03 WORK-DATA-1   PIC X(5).
  16. 03 WORK-DATA-2   PIC 9(5).
  17. 03 WORK-DATA-3   PIC X(1).
  18.   *>VALUE句で初期化した値をREDEFINES句で書き換える
  19.   01 WORK-STR.
  20.  03 WORK-DATA-STR   PIC X(10) VALUE "ABCDEFGHIJ".
  21. 03 WORK-DATA-STR-R   REDEFINES WORK-DATA-STR.
  22.   05 WORK-STR-1 PIC XXXXX.
  23.   05 WORK-STR-2 PIC XXXXX.
  24.  
  25. PROCEDURE DIVISION.
  26.   MAIN   SECTION.
  27.  
  28. *>結果を出力する
  29.   DISPLAY "WORK-YEAR = "WORK-YEAR.
  30.   DISPLAY "WORK-MONTH = "WORK-MONTH.
  31.   DISPLAY "WORK-DAY = "WORK-DAY.
  32.  
  33.   DISPLAY "WORK-DATA-1 = "WORK-DATA-1.
  34.   DISPLAY "WORK-DATA-2 = "WORK-DATA-2.
  35.   DISPLAY "WORK-DATA-3 = "WORK-DATA-3.
  36.  
  37.   DISPLAY "WORK-STR-1 = "WORK-STR-1.
  38.   DISPLAY "WORK-STR-2 = "WORK-STR-2.
  39.  
  40. STOP RUN.
    

実行結果:

辞典・辞書-VALUE-実行結果:

サンプルでは、集団項目WORK-DATEの配下のデータ項目に数値の0を表すZEROを指定して初期化を行ったり、集団項目WORK-DATAでは指定した文字列を配下のデータ項目で英数字形式や数値形式を指定して初期化しています。

また、集団項目WORK-STR配下の項目WORK-DATA-STR-Rでは、初期化した値をREDEFINES句を使用して再定義しています。

REDEFINES句については「COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典」で詳しく解説しています。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門