VALUE 句

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

書き方 1 の一般形式


*

書き方 2 の一般形式


*
MF 

書き方 3 の一般形式

ISO2002MF 

書き方 4 の一般形式


*

書き方 5 の一般形式

NETJVM 
*

すべての書き方に関する構文規則

  1. 符号付き数値定数を指定した場合、その記述項の左辺は符号付き数値データ項目とする。
  2. 記述項の左辺の項類が数値の場合、VALUE 句内のすべての定数は数値とし、PICTURE 句または USAGE 句で指定した値の範囲内の値とする。その用途が浮動短精度 (FLOAT-SHORT) または浮動長精度 (FLOAT-LONG) 以外の場合、この値はゼロ以外の桁の切り捨てを要求できない。この値では、PICTURE 文字記号「P」に対応する各位置の数値をゼロとする。
  3. 項目の字類が英字または英数字である場合、VALUE 句の定数は英数字定数とする。基本項目の VALUE 句内の英数字定数は、PICTURE 句で明示的に指定したサイズ以下とする。英数字の集団項目の VALUE 句内の英数字定数は、集団項目のサイズ以下とする。
  4. 項目の字類が各国文字である場合、VALUE 句の定数は各国文字定数とする。基本項目の VALUE 句内の各国文字定数は、PICTURE 句で明示的に指定したサイズ以下とする。各国文字の集団項目の VALUE 句内の各国文字定数は、集団項目のサイズ以下とする。

書き方 1 および 4 の構文規則

  1. REDEFINES 句を含むデータ記述項、または REDEFINES 句を含む記述項に属する記述項では、VALUE 句を指定できない。
  2. VALUE 句を集団レベルで指定した場合、定数の項類は集団項目と同じとするか、その項類の受け取り側項目に対する MOVE 文で使用できる表意定数とする。VALUE 句は、その集団内の下位レベルでは指定できない。
  3. VALUE 句を集団レベルで指定した場合、その集団内の下位項目は JUSTIFIED または SYNCHRONIZED 句で記述できない。また、英数字集団項目に属するすべてのデータ項目は、明示的または暗黙的に USAGE DISPLAY で記述する必要がある。

書き方 1 の構文規則

  1. OSVS VALUES ARE は書き方 1 で使用できる。
  2. OSVSVSC2MF VALUE 句は、外部浮動小数点数データ項目では使用できない。

    MF VALUE 句は、外部浮動小数点数データ項目で使用できる。

  3. OSVSVSC2MF VALUE 句は、USAGE COMP-1 または USAGE COMP-2 で定義した項目である内部浮動小数点数データ項目で使用できる。この場合、literal-1 は、浮動小数点定数、表意定数 ZERO、または値ゼロを表す数値定数とする。

書き方 2 の構文規則

  1. THRU および THROUGH は同等である。
  2. 1 つのデータ項目には、任意の数の書き方 2 の記述項を書ける。
  3. 書き方 2 は、条件名と関連付けた場合にのみ使用できる。
  4. 条件名記述項では、VALUE 句は必須である。条件名記述項で使用できるのは、VALUE 句および条件名自体のみである。
  5. literal-2 は literal-3 未満とする。
  6. OSVSVSC2MF 書き方 2 は、内部浮動小数点数データ項目と関連付ける条件変数を定義するために使用できる。外部浮動小数点数データ項目の定義には使用できない。この場合、literal-2 および literal-3 は、浮動小数点定数、表意定数 ZERO、または値ゼロを表す数値定数とする。

    MF 書き方 2 は、外部浮動小数点数データ項目と関連付ける条件変数を定義するために使用できる。

  7. ISO2002MF literal-4 は、literal-2 から literal-3 の範囲内のどの値とも異なる値とする。つまり literal-4 には、literal-2 以上かつ literal-3 以下の値は指定できない。
MF 

書き方 3 の構文規則

  1. MF 一意名は、78 レベル項目を宣言する前にすべて定義する。identifier-1 または identifier-3 (LENGTH パラメーター) のどちらかが集団項目である場合、その集団の定義は、78 レベル項目を宣言する前に完了している必要がある。これは、レベル番号が 78 以下の別のデータ項目を含めることで完了させる。
ISO2002MF 

書き方 4 の構文規則

  1. ISO2002MF 書き方 4 (レベル 78) では、項目を ENUM 定義で指定した場合は、VALUE 句を省略できる。
  2. ISO2002MF VALUE 句を含むデータ記述項は、OCCURS 句を含むか、OCCURS 句を含むデータ記述項に従属しているものとする。
  3. ISO2002MF subscript-1 および subscript-2 は、整数の数値定数とする。
  4. ISO2002MF 1 つの FROM 指定では、記述項の左辺、またはその上位の記述項の左辺の各 OCCURS 句に 1 つの subscript-1 を指定する。この指定は、記述項の左辺への添え字付き参照を指定した順番と同じとする。subscript-1 の各インスタンスには、そのインスタンスに関連付けた OCCURS 句で指定した最大反復回数を超える値は指定できない。
  5. ISO2002MF TO を指定した場合、記述項の左辺、またはその上位の記述項の左辺の各 OCCURS 句に 1 つの subscript-2 を指定する。この指定は、記述項の左辺への添え字付き参照を指定した順番と同じとする。subscript-2 の各インスタンスには、そのインスタンスに関連付けた OCCURS 句で指定した最大反復回数を超える値は指定できない。1 つの TO 指定で subscript-2 を指定する場合、subscript-2 に関連付けた表要素は、対応する subscript-1 に関連付けた表要素と同じ登場箇所またはその次の登場箇所でなければならない。
NETJVM 

書き方 5 の構文規則

  1. NETJVM 書き方 5 は、USAGE CONDITION-VALUE と関連付けた場合にのみ使用できる。

書き方 1、2、および 4 の一般規則

  1. VALUE 句は、項目のデータ記述内、またはその項目を含む階層内のデータ記述内の他の句と競合してはならない。以下の規則が適用される。
    1. 定数がデータ項目の値を定義する場合、その定数は標準桁寄せ規則に従ってデータ項目内で桁寄せされる。「COBOL 言語の概念」の章の「標準桁寄せ規則」トピックを参照。
    2. 項目の項類が、英字、英数字、英数字編集、または数字編集である場合、VALUE 句内の定数はすべて文字とする。定数は、データ項目が英数字として記述されている場合と同様にデータ項目内で桁寄せされる。「COBOL 言語の概念」の章の「標準桁寄せ規則」トピックを参照。PICTURE 句内の編集文字は、データ項目のサイズに含まれる (「PICTURE 句」トピックを参照)。ただし、そのデータ項目の初期値には影響を与えない。したがって、編集された形式の編集済みデータ項目に関連付けた定数の値を指定することは、プログラマーの責任である。

      MF 項目が数字編集である場合、その値は数値定数または文字定数になる。値が数値定数である場合、項目に含まれる値は、数値定数を数字編集項目に転記した場合と同じとなる。

    3. 初期化は、BLANK WHEN ZERO または JUSTIFIED 句の指定とは無関係に行われる。

データ項目の一般規則 (書き方 1)

  1. データ項目の記述項での VALUE 句の使用に関する規則は、データ部のどの節で使用するかによって異なる。
    1. 作業場所節

      ISO2002MF および局所記憶節

      では、データ項目の初期値を指定するために VALUE 句を使用できる。この場合、実行時要素が初期状態になった時点で、データ項目の値は VALUE 句で指定された値に設定される。項目の記述内で VALUE 句を使用しない場合、そのデータの初期値は不定になる。

    2. ファイル節、連絡節

      OS390 および局所記憶節

      では、VALUE 句はデータ項目の記述項で使用できるが、この句が有効になるのは、記述項に適用される INITIALIZE 文が実行された場合のみである。

  2. OSVSVSC2MF 
  3. VALUE 句を集団レベルで記述項に指定した場合、その集団に含まれる個々の基本項目または集団項目は考慮されずに、その集団領域が初期化される。
  4. VSC2MF  表意定数 NULLは、USAGE POINTER または USAGE PROCEDURE-POINTER で定義したデータ項目の VALUE 句でのみ指定できる。この種のデータ項目の VALUE 句で指定できる値は、表意定数 NULL のみである。これを指定することで、ポインターがデータ項目を指さないように設定できる。
  5. ANS85 OCCURS 句を含むデータ記述項、または OCCURS 句に属する記述項で指定した VALUE 句により、関連付けたデータ項目のすべての登場箇所に、指定した値が割り当てられる。
  6. ANS85 可変反復データ項目に関連付けたデータ項目のデータ記述項で VALUE 句を指定すると、そのデータ項目の初期化処理は、可変反復データ項目に指定した OCCURS 句で DEPENDING ON 指定が参照するデータ項目の値を、OCCURS 句で指定した最大反復回数の値に設定した場合と同じになる。データ項目は、以下の場合に可変反復データ項目と関連付けられる。
    1. そのデータ項目が集団項目であり、その中に可変反復データ項目が含まれる。
    2. そのデータ項目自体が可変反復データ項目である。
    3. そのデータ項目が可変反復データ項目に属する。

    VALUE 句を DEPENDING ON 指定が参照するデータ項目に関連付けた場合、その値は、可変反復データ項目の初期化後にそのデータ項目に配置されるものと見なされる。

  7. ISO2002 字類がオブジェクトであるデータ項目は、null に初期化される。初期値が有効になるのは、VALUE 句が有効になった時点、およびデータ項目の記憶域が割り当てられた時点である。
  8. ISO2002 字類がポインターであるデータ項目は、null に初期化される。初期値が有効になるのは、VALUE 句が有効になった時点、およびデータ項目の記憶域が割り当てられた時点である。

条件名に関する規則 (書き方 2)

  1. 条件名記述項では、VALUE 句は必須である。条件名記述項で使用できるのは、VALUE 句および条件名自体のみである。条件名の性質は、条件変数の性質によって暗黙的に決まる。
  2. 書き方 2 は、条件名と関連付けた場合にのみ使用できる。THRU 指定を使用する場合、literal-2 は literal-3 未満とする。
  3. FALSE 指定が有意であるのは、関連付けた条件名が「SET 条件名 TO FALSE」文で参照される場合のみである。「SET 文」トピックを参照。

定数名に関する規則 (書き方 3)

  1. MF constant-expression-1 は以下の形式で記述する。

  2. MF 書き方 3 は、定数名記述項でのみ使用できる。
  3. MF literal-5 を指定した後に演算子を記述しない場合、定数名の性質は literal-5 と等しい。そうでない場合、定数名の性質は整数と等しい。
  4. MF  算術演算子または論理演算子は、任意の数だけ使用できる。かっこを使用しない限り、演算結果は厳密に左から右の順番で整数演算として評価される。かっこで囲まれた式は、式全体での使用に先行して、厳密に左から右の順番で評価される。つまり、かっこ以外のすべての演算子は、定数式内で同じ優先順位を持つ。式の結果は 64 ビットで計算される。DIALECT"RM" 指令が有効である場合、式の結果は 32 ビットで計算される。中間結果がゼロ未満である場合、最終結果は不定となる。integer-1 の代わりに定数名を使用してもよい。
  5. MF 論理演算 AND、OR、EXCLUSIVE OR、および NOT は、2 進表現のビットごとに作用する。
  6. MF identifier-1 または identifier-3 の LENGTH は、それぞれ identifier-1 または identifier-3 に割り当てられた記憶領域のサイズである。一意名が集団項目である場合、その長さは下位のデータ項目をすべて含んだサイズになる。SIZE は、定数式で LENGTH の同意語としても使用できる。
  7. MF literal-1 または literal-2 が表意定数である場合、LENGTH OF は 1 として計算される。
  8. MF literal-1 または literal-2 が浮動小数点定数以外の数値定数である場合、LENGTH OF は、先行ゼロを含む数値定数の桁数の結果となる。符号および小数点 (指定されている場合) はカウントされない。literal-1 または literal-2 が浮動小数点定数の場合、LENGTH OF は、符号文字 (指定されているかどうかにかかわらず)、仮数および指数の桁 (先行ゼロを除く)、小数点、「E」または「e」文字、および指数記号 (指定されているかどうかにかかわらず) の結果となる。
  9. MF NEXT が返す値は、前のデータ宣言の後にある記憶域の次のバイトのオフセットである。これは、次のデータ宣言の開始のオフセットではない。このデータ宣言が OCCURS 句で定義した表のものである場合、NEXT が返す値は、表の最初の要素の後にある記憶域の次のバイトのオフセットである。
  10. MF identifier-2 または identifier-4 の START は、それぞれ identifier-2 または identifier-4 が開始するオフセットである。
  11. MF 規則 21 および 22 に関して、オフセットは以下のとおり定義される。
    • 一意名が EXTERNAL レコードまたは LINKAGE レコードの一部である場合、オフセットは関連付けた 01 レベルの起点から数える。
    • 一意名を局所記憶節で定義した場合、オフセットは局所記憶節の起点から数える。
    • それ以外の場合、オフセットはデータ部の起点から数える。
  12. MF オフセットは別の COBOL 実装に移植できないため、この翻訳単位外の特定の値に依存すべきではない。
  13. DATE-COMPILED は、翻訳を開始した日付を表す整数値を YYYYMMDD 形式で提供する。YYYY は年、MM は月、DD は日を表す。

表規則 (書き方 4)

  1. ISO2002MF 書き方 2 の VALUE 句は、表要素を literal-6 の値に初期化する。初期化される表要素は、subscript-1 で示される。連続する表要素は、順番どおりに、一連の literal-6 の値に初期化される。連続する表要素は、表の最小次元を表す添え字を 1 ずつ増分していくことによって参照される。増分する前の添え字への参照が、対応する OCCURS 句で指定した最大反復回数と等しい場合、その添え字は 1 に設定され、表内で次に大きい次元の添え字が 1 増分される。
  2. ISO2002MF TO を指定した場合、直前の規則に記載の初期化処理中に、登場するすべての literal-6 が、指定された順序でソースとして再利用される。この反復は、subscript-2 が示す表要素を初期化するまで行われる。
  3. ISO2002MF TO を指定しない場合、対応する各 subscript-1 に関連付けた表の最大反復回数として各 subscript-2 で TO を指定した場合と同様になる。
  4. ISO2002MF 複数の FROM 指定が同じ表要素を参照する場合、VALUE 句の最後の FROM 指定で定義した値が表要素に割り当てられる。
NETJVM 

書き方 5

  1. NETJVM TRUE を指定した場合、関連付けた条件値のデータ項目は true に設定される。FALSE を指定した場合、関連付けた条件値のデータ項目は false に設定される。

  1. VALUE 句の NEXT 指定の使用例については、「定数名の NEXT 指定」セクションを参照。