ANS85 

INITIALIZE 文

INITIALIZE 文では選択したデータ項目を指定の値に設定できます。

一般形式

構文規則

  1. identifier-1 は、字類が英字または英数字または数字

    ISO2002MF またはオブジェクトまたはポインターISO2002ENTMF または各国文字

    である必要があります。

  2. ISO2002MF REPLACING 指定の category-name として記述された DATA-POINTER、OBJECT-REFERENCE、または PROGRAM-POINTER 指定ごとに、identifier-2 を指定する必要があります。
  3. ISO2002MF REPLACING 指定で記述されたデータ ポインター、オブジェクト参照、およびプログラム ポインターの各項類に対して、送り出し側作用対象として identifer-2 を持ち、受け取り側作用対象として指定項類の項目を持つ SET 文が、有効である必要があります(「SET 文」を参照)。

    ISO2002MF REPLACING 指定で記述されたデータ ポインター、オブジェクト参照、またはプログラム ポインター以外の各項類に対して、送り出し側項目として identifer-2 または literal-1 を持ち、受け取り側作用対象として指定された項類の項目を持つ MOVE 文が有効である必要があります(「MOVE 文」を参照)。

    ENT 各項類に対して、送り出し側項目として identifer-2 または literal-1 を持ち、受け取り側作用対象として指定された項類の項目を持つ MOVE 文が有効である必要があります。

  4. REPLACING 指定が記述されている場合、literal-1、または identifier-2 で参照されるデータ項目が送り出し側作用対象になります。

    ISO2002ENTMF REPLACING 指定が記述されていない場合、送り出し側作用対象は INITIALIZE 文の一般規則に従って決定されます。

  5. identifier-1 によって参照されるデータ項目は、受け取り側領域になります。
  6. REPLACING 指定内では、同じ項類は繰り返し指定できません。
  7. identifier-1 によって参照されるデータ項目または identifier-1 に従属するデータ項目の記述には、OCCURS 句の DEPENDING 指定が含まれていてはなりません。

    VSC2 identifier-1 によって参照されるデータ項目の位置が可変であってはなりません。つまり、同じレコード記述内にあって OCCURS 句の DEPENDING 指定があるデータ項目の後ろに、identifier-1 を置くことはできません。ただし、OCCURS 句のある項目に identifier-1 が従属する場合はこの限りではありません。

    MF identifier-1 によって参照されるデータ項目は、位置が可変であってもかまいません。

  8. identifier-1 によって参照されるデータ項目のデータ記述項に、RENAMES 句を含めてはなりません。
  9. VSC2MF 数字の一意名または定数を指定できる任意の箇所で、浮動小数点数のデータ項目または定数を使用できます。
  10. category-list は、次のいずれかになります。
    • ALPHABETIC
    • ALPHANUMERIC
    • ALPHANUMERIC-EDITED
    • BOOLEAN
    • ISO2002MF DATA-POINTER
    • ENTVSC2MF DBCS
    • ISO2002ENTMF NATIONAL
    • ISO2002ENTMF NATIONAL-EDITED
    • NUMERIC
    • NUMERIC-EDITED
    • ISO2002MF OBJECT-REFERENCE
    • ISO2002MF PROGRAM-POINTER

一般規則

  1. category-name 内の必要語は、本書内で定義したデータの項類を表します(「COBOL 言語の概念」の章の「データの字類および項類」を参照)。

    ISO2002ENTMF VALUE 指定で ALL が記述されている場合は、category-name に示されているすべての項類が指定されているように機能します。

  2. identifier-1 が基本項目を参照するか集団項目を参照するかにかかわらず、INITIALIZE 文の実行の効果は、受け取り側作用対象として基本データ項目を持つ一連の暗黙的な MOVE 文または SET 文が実行された場合と同様になります。これらの暗黙的な文の送り出し側作用対象 (sending-operand) は一般規則 4 で定義され、受け取り側作用対象 (receiving-operand) は一般規則 3 で定義されています。

    受け取り側作用対象の項類がデータ ポインター、オブジェクト参照、またはプログラム ポインターの場合、暗黙的な文は次のようになります。SET receiving-operand TO sending-operand

    それ以外の場合、暗黙的な文は次のようになります。MOVE sending-operand TO receiving-operand

  3. 暗黙的な各 MOVE 文または SET 文の受け取り側作用対象は、次のステップを順番に適用して決定されます。
    1. まず、次のデータ項目は受け取り側作用対象として除外されます。
      1. ISO2002ENTMF MOVE 文の有効な受け取り側作用対象でない一意名

        ISO2002MF  (指定された方言が MF15 または ISO2002 である場合は、項類がデータ ポインター、オブジェクト参照、またはプログラム ポインターのデータ項目を除きます)

      2. FILLER 指定が記述されていない場合、明示的または暗黙的な FILLER 句を持つ基本データ項目。
      3. データ記述項に REDEFINES 句または RENAMES 句が含まれている、あるいはデータ記述項に REDEFINES 句が含まれているデータ項目に従属する、identifier-1 に従属する基本データ項目。ただし、identifier-1 自体に REDEFINES 句が含まれていてもよく、REDEFINES 句を含むデータ項目に identifier-1 が従属していてもかまいません。
      4. 集団表項目では、FASTINIT 指令が有効な場合、第 1 表要素の空白詰め項目、データ ポインター、オブジェクト参照、またはプログラム ポインターの既存の内容が、表の残りの部分に伝播されます。
    2. さらに、次のいずれかに該当する場合、基本データ項目は受け取り側項目候補となります。
      1. identifier-1 によって明示的に参照されている。
      2. identifier-1 によって参照されている集団データ項目内に含まれる。基本データ項目が表要素である場合、基本データ項目の各出現は受け取り側作用対象候補となります。
    3. 最後に、各受け取り側作用対象候補は、次の 1 つ以上を満たす場合、受け取り側作用対象になります。
      1. VALUE 指定が記述されており、基本データ項目の項類が VALUE 指定で指定または暗黙指定された項類のいずれかであり、次の 1 つ以上を満たす。
        1. 基本データ項目の項類がデータ ポインター、オブジェクト参照、プログラム ポインターのいずれかである。
        2. データ項目形式または表形式の VALUE 句が基本データ項目のデータ記述項で指定されている。
      2. REPLACING 指定が記述されており、基本データ項目の項類が REPLACING 指定で記述された項類のいずれかである。
      3. DEFAULT 指定が記述されている。
      4. REPLACING 指定も VALUE 指定も記述されていない。
  4. 暗黙的な各 MOVE 文または SET 文の送り出し側作用対象は、次のように決定されます。
    1. データ項目が VALUE 指定によって受け取り側作用対象として適格である場合:
      1. ISO2002MF 受け取り側作用対象の項類がデータ ポインターまたはプログラム ポインターの場合、送り出し側作用対象は定義済みのアドレス NULL になります。この場合、INITPTR コンパイラ指令を設定する必要があります。
      2. ISO2002MF 受け取り側作用対象の項類がオブジェクト参照の場合、送り出し側作用対象は定義済みオブジェクト参照の NULL になります。この場合、INITPTR コンパイラ指令を設定する必要があります。
      3. それ以外の場合は、送り出し側作用対象は、データ項目のデータ記述項で指定された VALUE 句の定数によって決定されます。データ項目が表要素の場合は、初期化される反復に対応する VALUE 句の定数によって送り出し側作用対象が決定されます。実際の送り出し側作用対象は、MOVE 文で受け取り側作用対象に移動された場合に、VALUE 句の適用によって生成されるデータ項目の初期値と同じ結果を生成する定数です。
    2. データ項目が VALUE 指定では受け取り側作用対象として適格でないが、REPLACING 指定によって適格である場合、送り出し側作用対象は、REPLACING 指定で記述された項類に関連付けられている literal-1 または identifier-2 になります。
    3. データ項目が一般規則 4a および 4b に従って適格でない場合、使用される送り出し側作用対象は、次のように受け取り側作用対象の項類によって決まります。
      受け取り側作用対象 表意定数
      英字 表意定数の英数字の SPACE
      英数字 表意定数の英数字の SPACE
      英数字編集 表意定数の英数字の SPACE
      データ ポインター 定義済みのアドレス NULL
      各国文字 表意定数の各国文字の SPACE
      各国文字編集 表意定数の各国文字の SPACE
      数字 表意定数の ZERO
      数字編集 表意定数の ZERO
      オブジェクト参照 定義済みオブジェクト参照の NULL
      プログラム ポインター 定義済みのアドレス NULL
  5. すべての場合において、identifier-1 によって参照されるデータ項目の内容は、INITIALIZE 文に記述されている順番 (左から右) に、初期化されます。その過程で集団項目が出現した場合には、その集団の中で記述されている順に、基本項目が初期化されます。可変反復データ項目の場合、初期化される反復の数は、受け取り側データ項目の OCCURS 句の規則によって決定されます。
  6. identifier-1 と identifier-2 が同じ記憶領域を指す場合には、両者が同じデータ記述項に定義されていたとしても、INITIALIZE 文の実行結果は不確定です(「手続き部」の章の「作用対象の重複」を参照)。