ANS85 

INITIALIZE(初期化)文

INITIALIZE(初期化)文は、選択されたデータ項目を指定された値に設定する。

一般形式

構文規則

  1. 一意名-1 の字類は、英字、英数字、数字、

    各国語型、オブジェクト、またはポインタ

    でなければならない。

  2. DATA-POINTER指定、OBJECT-REFERENCE指定、およびPROGRAM-POINTER指定のいずれかをREPLACING指定で項類名として使用した場合は、一意名-2 を指定しなければならない。

  3. REPLACING指定で使用したデータポインタ、オブジェクト参照、およびプログラムポインタの各項類については、一意名-2 を含むSET文が送出し側作用対象として、また、指定された項類の項目が受取り側作用対象として、有効でなければならない。(手続き部 - SEARCH - WRITEの章のSET(設定)文節を参照。)

    REPLACING指定で使用した、データポインタ、オブジェクト参照、およびプログラムポインタ以外の各項類については、一意名-2 または定数-1を含むMOVE文が送出し側作用対象として、また、指定された項類の項目が受取り側作用対象として、有効でなければならない。手続き部 - MERGE - OPEN の章のMOVE(転記)文節を参照。)

  4. REPLACING指定を使用した場合は、定数-1または一意名-2が参照するデータ項目が送出し側作用対象となる。

    REPLACING指定を使用しない場合は、INITIALIZE文の一般規則に従って、送出し側作用対象が決定される。

  5. 一意名-1が参照するデータ項目は受取り側領域となる。

  6. REPLACING指定内では、同じ項類は繰り返し指定できない。

  7. 一意名-1によって参照されるデータ項目またはその下位に属するデータ項目のデータ記述には、OCCURS句のDEPENDING指定が含まれていてはならない。

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

    一意名-1によって参照されるデータ項目は、位置が可変であってもよい。

  8. 一意名-1によって参照されるデータ項目のデータ記述項に、RENAMES句を含めてはならない。

  9. 数字の一意名または定数を指定できるところでは、どこでも浮動小数点数のデータ項目または定数を使用できる。

一般規則

  1. 項類名中のキーワードは、本書の中で定義したデータの項類に対応する。(COBOL言語の概念の章のデータの字類と項類節を参照。)

    VALUE指定でALLが示されている場合、項類名のリスト中のすべての項類が指定されていると見なされる。

  2. 一意名-1によって参照されるデータ項目が基本項目であっても集団項目であっても、INITIALIZE文の実行の結果は、各文の受取り側作用対象が基本項目である、一連のMOVE文またはSET文が実行されたものと同様である。これらの文の送出し側作用対象は一般規則 4 で、また、受取り側作用対象は一般規則 3 で定義される。

    受取り側作用対象の項類がデータポインタ、オブジェクト参照、またはプログラムポインタである場合の明示文は、以下の通り。

    SET 受取り側作用対象 TO送出し側作用対象

    そうでない場合の明示文は、以下の通り。

    MOVE 送出し側作用対象 TO 受取り側作用対象

  3. 暗黙的に指定された各MOVE文またはSET文中の受取り側作用対象は、以下の手順を順に実行することにより決定される。

    1. まず、以下のデータ項目が、受取り側作用対象としては除外される。

      1. MOVE文の有効な受取り側作用対象でない、あらゆる一意名。ただし、項類がデータポインタ、オブジェクト参照、またはプログラムポインタであるデータ項目を除く。

      2. FILLER指定が使用されない場合は、明示的または暗黙的なFILLER句を含む基本データ項目。

      3. データ記述項にREDEFINES句またはRENAMES句を含む一意名-1、またはデータ記述項にREDEFINES句を含むデータ項目のいずれかの下位項目である、あらゆる基本データ項目。ただし、この一意名-1自体がREDEFINES句を含んでいてもよい。または、REDEFINES句を含むデータ項目の下位項目であってもよい。

    2. 次に、以下のいずれかに該当する場合は、基本データ項目が受取り側作用対象となる可能性がある。

      1. 一意名-1 が明示的に基本データ項目を参照している。

      2. 一意名-1が参照する集団データ項目に基本データ項目が含まれる。基本データ項目が表要素の場合、出現する各基本データ項目が受取り側作用対象となる可能性がある。

    3. 最後に、可能性のある項目のうち、以下の条件の1つ以上が真であるものが受取り側作用対象となる。

      1. VALUE指定が使用されており、基本データ項目の項類がVALUE指定で明示的または暗黙的に指定された項類のどれかである。さらに、以下の条件のいずれかが真である。

        1. 基本データ項目の項類が、データポインタ、オブジェクト参照、またはプログラムポインタである。

        2. データ項目形式または表形式のVALUE句が基本データ項目のデータ記述項で指定されている。

      2. REPLACING指定が使用され、基本データ項目の項類が、REPLACING指定で指定された項類のどれかである。

      3. DEFAULTが使用されている。

      4. REPLACING指定もVALUE指定も使用されていない。

  4. 暗黙的な各MOVE文およびSET文の送出し側作用対象は、以下のように決定される。

    1. データ項目が、VALUE指定を含んでいるために受取り側作用対象とされた場合、

      1. 受取り側作用対象の項類がデータポインタまたはプログラムポインタであれば、送出し側作用対象は定義済みの番地 NULL となる。

      2. 受取り側作用対象の項類がオブジェクト参照であれば、送出し側作用対象は定義済みのオブジェクト参照 NULL となる。

      3. 上記のどちらでもない場合は、データ項目もデータ記述項で指定されたVALUE句中の定数により、送出し側作用対象が決定される。データ項目が表要素であれば、初期化される対象に対応する、VALUE句中の定数により、送出し側作用対象が決定される。実際の送出し側作用対象は定数で、MOVE文で受取り側作用対象に転記されたときに、VALUE句の適用により生成されるデータ項目の初期値と同じ値を結果をもたらす。

    2. データ項目が、VALUE指定を含んでいないが、REPLACING指定を含んでいるために受取り側作用対象とされた場合、送出し側作用対象は、REPLACING指定で指定された項類に関連づけられた定数-1または一意名-2となる。

    3. データ項目が、一般規則 4a または 4b により、送出し側作用対象とされない場合、使用される送出し側作用対象は、以下の表に従い、受取り側作用対象の項類により変わる。

      受取り側作用対象 表意定数
      英字 表意定数英数字 SPACES
      英数字 表意定数英数字 SPACES
      英数字編集 表意定数英数字 SPACES
      データポインタ 定義済みの番地 NULL
      各国語型 表意定数各国語型 SPACES
      各国語型編集 表意定数各国語型 SPACES
      数字 表意定数 ZEROES
      数字編集 表意定数 ZEROES
      オブジェクト参照 定義済みのオブジェクト参照 NULL
      プログラムポインタ 定義済みの番地 NULL

  5. すべての場合において、一意名-1によって参照されるデータ項目の内容は、INITIALIZE文に書かれている順番(左から右)に、初期化される。その過程で集団項目が出てきた場合には、その集団の中で記述されている順に、基本項目が初期化される。可変出現データ項目については、初期化された出現回数は、受取り側データ項目のOCCURS句の規則により決定される。

  6. 一意名-1と一意名-2が同じ記憶領域を指す場合には、INITIALIZE文の実行結果はどうなるかわからない。両者が同じデータ記述項に定義されていたとしても、そのことは変わらない。(手続き部の章の作用対象の重なり節を参照。)