VALUE(値)句

機能

VALUE(値)句は、定数の値、作業場書項目および局所記憶項目の初期値、条件名に関連する値を定義する。

  1. VALUE句のNEXT指定の使用例は、 言語リファレンス - 追加トピックの章の定数名のNEXT指定節に掲載されている。

一般形式

形式 1

形式 2

形式 3

形式 4

構文規則

すべての形式
  1. 符号付き数字定数を指定する場合は、記述項の左辺は符号付き数字データ項目でなければならない。

  2. 記述項の左辺の項類が数字である場合は、VALUE句中の定数はすべて数字でなければならず、その値は、PICTURE句またはUSAGE句が示す値の範囲内でなければならない。用途がFLOAT-SHORTおよびFLOAT-LONG以外である場合は、この値が、切り捨てやゼロ以外の数字を要求するものであってはならない。この値は、PICTURE文字符号 'P'に対応する各位置では数字のゼロでなければならない。

  3. 項目の字類が英字または英数字の場合は、VALUE句中の定数は英数字定数でなければならない。基本項目のVALUE句中の英数字定数は、 明示的なPICTURE句で示されたサイズを越えてはならない。英数字集団項目のVALUE句中の英数字定数は、その集団項目のサイズを越えてはならない。

  4. 項目の字類が各国語型の場合は、VALUE句中の定数は各国語型定数でなければならない。基本項目のVALUE句中の各国語型定数は、 明示的なPICTURE句で示されたサイズを越えてはならない。各国語型集団項目のVALUE句中の各国語型定数は、その集団項目のサイズを越えてはならない。

形式 1 および 4
  1. VALUE句は、REDEFINES句を含むデータ記述項、およびREDEFINES句を含む記述項の下位の記述項のいずれでも指定してはならない。

  2. 集団レベルでVALUE句を指定した場合は、定数がその集団項目と同じ項類でなければならない。または、その項類の受取り側項目へのMOVE文で許可された表意定数でなければならない。この集団内の下位のレベルでは、VALUE句を指定できない。

  3. 集団レベルでVALUE句を指定した場合は、その集団内の下位のレベルをJUSTIFIED句または SYNCHRONIZED句で記述してはならない。 また、英数字集団項目の下位にあるすべてのデータ項目は、明示的または暗黙的にUSAGE DISPLAYで記述しなければならない。

形式 1
  1. 形式 1でVALUES AREを使用できる。

  2. 外部浮動小数点数データ項目には、VALUE句を指定できない。

    外部浮動小数点数データ項目に、VALUE句を指定できる。

  3. USAGE COMP-1 または USAGE COMP-2を指定した内部浮動小数点数データ項目に、VALUE句を指定できる。この場合の定数-1は、浮動小数点定数、表意定数ZERO、値ゼロを表す数字定数のどれかとする。
形式 2
  1. THRUとTHROUGHは同義語であり、どちらを書いてもよい。

  2. 1つのデータ項目に、形式 2の記述項をいくつでも書ける。

  3. 形式 2は、条件名に関してだけ使用できる。

  4. 条件名記述項では、VALUE句を必ず書く。条件名記述項に書けるのは、VALUE句と条件名自体である。

  5. 定数-2は、定数-3より小さくする。

  6. 形式 2は、内部浮動小数点数データ項目に対応する条件変数を定義するのに使用する。外部浮動小数点数データ項目には使用できない。この場合、定数-2 および定数-3は、浮動小数点定数、表意定数ZERO、値ゼロを表す数字定数のどれかとする。

    形式 2を使用して、外部浮動小数点数データ項目に対応する条件変数を定義できる。

  7. 定数-4は、定数-2から定数-3の範囲内のどの値とも等しくてはならない。つまり、定数-4は定数-2以上かつ定数-3以下であってはならない。

形式 3

  1. 一意名は、78レベル項目の宣言の前に、すべて定義しておく。一意名-1または一意名-3(LENGTHパラメータ)のどちらかが集団項目である場合、その集団の定義は、78レベル項目の宣言の前に、レベル番号がそれ以下の別のデータ項目が次にくることによって完結されていること。

形式 4
  1. VALUE句を含むデータ記述項は、OCCURS句を含んでいるか、またはOCCURS句を含むデータ記述項の下位でなければならない。

  2. 添え字-1および添え字-2は、整数の数字定数でなければならない。

  3. 1つのFROM指定には、1個の添え字-1が含まれなければならない。この添え字-1は、その記述項またはその上位の記述項の左辺にある各OCCURSに対して指定される。ここでOCCURS句は、記述項の左辺に指定される添え字付き参照と同じ順序で指定されるものとする。添え字-1の各インスタンスは、それに関連づけられたOCCURS句の中での出現回数の最大値を越えてはならない。

  4. TOを指定した場合が、各OCCURS句に対し、1個の添え字-2が含まれなければならない。この添え字-2は、その記述項またはその上位の記述項の左辺にある各OCCURSに対して指定される。ここでOCCURS句は、記述項の左辺に指定される添え字付き参照と同じ順序で指定されるものとする。添え字-2の各インスタンスは、それに関連づけられたOCCURS句の中での出現回数の最大値を越えてはならない。 1個のTO指定中の添え字-2は、添え字-2の表要素は同じ反復であるか、対応する添え字-1の表要素の次の反復であるという仕様でなければならない。

一般規則

形式 1、2 および 4
  1. VALUE句は、それを指定した対象の項目またはその項目を含む集団項目のデータ記述に書いた他の句と矛盾してはならない。下記の規則が適用される。

    1. 定数がデータ項目の値を定義する場合、その定数は、標準桁寄せ規則に従ってデータ項目に収められる。(COBOL言語の概念の章の標準桁寄せ規則節を参照。)

    2. 項目の項類が英字、英数字、英数字編集、数字編集である場合、VALUE句内の定数はすべて文字とする。これらの定数をデータ項目中に収めるときの扱いは、そのデータ項目が英数字として定義されている場合と同様である。(COBOL言語の概念の章の標準桁寄せ規則節を参照。) PICTURE句内の編集文字は、データ項目の大きさに含められる。(前述のPICTURE(形式)句節を参照。) しかし、そのデータ項目の初期値を定めるものではない。したがって、編集済みの形式での編集データ項目に対する定数はの値を指定するのは、プログラマーの責任である。

      項目の項類が数字編集である場合、VALUE句内の定数は数字定数でも文字定数でもよい。VALUE句内の定数が数字定数である場合、項目に収められる値は数字定数を数字編集項目に転記したのと同じとなる。

    3. 初期化は、BLANK WHEN ZEROまたはJUSTIFIEDの指定とは無関係に行われる。
データ項目(形式 1)
  1. VALUE句の使用に関する規則は、データ部のどの節で使用するかによって異なる。

    1. ファイル節内では、VALUE句は条件名記述項内でだけ使用する。

    2. 作業場書節

      および局所記憶節

      内では、条件名記述項の中にVALUE句を指定する。 また、データ項目の初期値を指定するために、VALUE句を使用できる。この場合、 ランタイム要素が初期状態になった時に、データ項目の値はVALUE句で指定された値に設定される。データ記述項内でVALUE句を指定しないと、そのデータの初期値はどうなるかわからない。

    3. 連絡節内では、VALUE句は条件名記述項内でだけ使用する。

  2. ファイル節、連絡節 、

    および局所記憶節内

    のデータ記述項の中で、VALUE句を使用できる。ただし、注記にとどまる。

  3. 集団レベルの記述項でVALUE句を指定すると、集団領域は、その集団に含まれる個々の基本項目および集団項目に対して配慮することなく初期化される。

  4. 表意定数のNULLは、USAGE POINTERまたはUSAGE PROCEDURE-POINTERを指定したデータ項目のVALUE句内にだけ指定できる。この種のデータ項目のVALUE句内に指定できる値は、このNULLだけである。NULLを指定すると、ポインタは他のデータ項目を指さないことが保証される。

  5. OCCURS句が含まれるデータ記述項またはその下位に属するデータ記述項の中でVALUE句を使用すると、反復される各データ項目に指定した値が割り当てられる。

  6. 可変反復データ項目に関連するデータ項目のデータ記述項の中で、VALUE句を指定すると、DEPENDING ON指定によって参照されるデータ項目の値がOCCURS句によって指定される反復回数の最大値と等しいものとして、そのデータ項目が初期化される。下記の場合に、データ項目は可変反復データ項目と関連する。

    1. VALUE句を指定したデータ項目が集団項目であり、その中に可変反復データ項目が含まれる。

    2. VALUE句を指定したデータ項目自体が、可変反復データ項目である。

    3. VALUE句を指定したデータ項目が、可変反復データ項目の下位に属する。

    DEPENDING ON指定によって参照されるデータ項目にVALUE句が関連する場合、可変反復データ項目が初期化された後で、VALUE句で指定された値がそのデータ項目に入られるものとみなされる。

  7. 字類がオブジェクトのデータ項目は、ヌルに初期化される。初期値は、VALUE句が効力を持つ時、およびデータ項目の記憶域が割り当てられた時に効力を持つ。

  8. 字類がポインタのデータ項目は、ヌルに初期化される。初期値は、VALUE句が効力を持つ時、およびデータ項目の記憶域が割り当てられた時に効力を持つ。

条件名に関する規則 (形式 2)
  1. 条件名記述項には、VALUE句を必ず指定する。条件名記述項に書けるのは、VALUE句と条件名自体だけである。条件名の性質は、対応する条件変数の性質によって暗黙的に決まる。

  2. 形式 2 は、条件名に関連してだけ使用できる。THRU指定を書くときは、定数-2は定数-3よりも小さくする。

  3. FALSE句は、対応する条件名がSET 条件名 TO FALSE 文を参照する場合にだけ意味を持つ。(手続き部 - SEARCH - XML PARSE の章のSET(設定)文節を参照。)

定数名に関する規則 (形式 3)

  1. 形式 3は、定数名記述項にだけ使用できる。

  2. 定数-5を指定して演算子が続かない場合、 定数名の性質は定数-5と同様となる。そうでない場合、定数名の性質は整数と同様となる。

  3. 任意の数の算術演算子または論理演算子を使用できる。式は左から右へ整数演算として評価される。式の中にかっこは使用できない。中間結果にゼロ未満のものがあると、最終結果はどうなるかわからない。整数-1の代わりに定数名を使用できる。

  4. 論理演算のANDとORは、2進表現のビットごとに作用する。

  5. 一意名-1 または一意名-3のLENGTHは、一意名-1または一意名-3に割り当てられた記憶領域の大きさである。一意名が集団項目である場合、その長さは下位のデータ項目をすべて含んだものである。

  6. NEXTから返される値は、前のデータ宣言の後にある記憶域の次のバイトの相対番地である。このデータ宣言がOCCURS句によって定義された表のものであると、NEXTから返される値は、表の最初の要素の後に起こる記憶域の次のバイトの相対番地である。

  7. 一意名-2 または一意名-4のSTARTはそれぞれ、一意名-2または一意名-4が始まる相対番地である。

  8. 規則18と19に関して、相対番地を下記のように定義する。

    • 一意名がEXTERNALレコードまたはLINKAGEレコードの一部であるならば、相対番地は対応する01レベルの始点から数える。

    • 一意名がLOCAL-STORAGE中に定義されている場合、相対番地はLOCAL-STORAGE SECTION の始点から数える。

    • それ以外の場合、相対番地はDATA DIVISIONの始点から数える。

  9. 相対番地は別のCOBOL製品との間で移植性がない。相対番地は翻訳単位を超えた特定の値に依存すべきではない。

表に関する規則 (形式 4)
  1. 形式 2のVALUE句は、定数-6の値となる表要素を初期化する。初期化された表要素は、添え字-1で識別される。それに続く表要素は順番に初期化され、続いて現れる定数-6の値として初期化される。これらの表要素は、1つずつ増えていく番号をつけた添え字により参照される。この添え字は表の最小次元を表す。番号をつける前の添え字への参照が、対応するOCCURS句により指定された最大反復回数と同じであると、添え字の番号は1に設定され、それに次いで次元の小さい表の添え字が次の番号となる。

  2. TOが指定されている場合は、出現する定数-6が、指定された順に、規則22で記述された初期化中の原文として再利用される。これは、添え字-2の表要素が初期化されるまで繰り返される。

  3. TOを指定しない場合は、TO指定が、対応する各添え字-1の表要素の最大出現回数として、各添え字-2で指定された場合と同様の動作となる。

  4. 複数のFROM指定が同じ表要素を参照している場合は、VALUE句中の最後のFROM指定で定義された値が表要素に割り当てられる。