INITIALIZE(初期化)文は、選択されたデータ項目を指定された値に設定する。
一般形式
構文規則
- 一意名-1 の字類は、英字、英数字、数字、
各国語型、オブジェクト、またはポインター
でなければならない。
-
DATA-POINTER指定、OBJECT-REFERENCE指定、およびPROGRAM-POINTER指定のいずれかをREPLACING指定で項類名として使用した場合は、一意名-2 を指定しなければならない。
-
REPLACING指定で使用したデータポインター、オブジェクト参照、およびプログラムポインターの各項類については、一意名-2 を含むSET文が送出し側作用対象として、また、指定された項類の項目が受取り側作用対象として、有効でなければならない。(手続き部 - SEARCH - WRITEの章のSET 文SET(設定)文節を参照。)
REPLACING指定で使用した、データポインター、オブジェクト参照、およびプログラムポインター以外の各項類については、一意名-2 または定数-1を含むMOVE文が送出し側作用対象として、また、指定された項類の項目が受取り側作用対象として、有効でなければならない。(手続き部 - MERGE - OPEN の章のMOVE(転記)文MOVE(転記)文節を参照。)
- REPLACING指定を使用した場合は、定数-1または一意名-2が参照するデータ項目が送出し側作用対象となる。
REPLACING指定を使用しない場合は、INITIALIZE文の一般規則に従って、送出し側作用対象が決定される。
- 一意名-1が参照するデータ項目は受取り側領域となる。
- REPLACING指定内では、同じ項類は繰り返し指定できない。
- 一意名-1によって参照されるデータ項目またはその下位に属するデータ項目のデータ記述には、OCCURS句のDEPENDING指定が含まれていてはならない。
一意名-1によって参照されるデータ項目の位置が可変であってはならない。つまり、同じレコード記述内にあってOCCURS句のDEPENDING指定があるデータ項目の後ろに、一意名-1を置くことはできない。ただし、OCCURS句のある項目の下位に一意名-1が属する場合は別である。
一意名-1によって参照されるデータ項目は、位置が可変であってもよい。
- 一意名-1によって参照されるデータ項目のデータ記述項に、RENAMES句を含めてはならない。
-
数字の一意名または定数を指定できるところでは、どこでも浮動小数点数のデータ項目または定数を使用できる。
一般規則
- 項類名中のキーワードは、本書の中で定義したデータの項類に対応する。(COBOL言語の概念の章のデータの字類と項類節を参照。)
VALUE指定でALLが示されている場合、項類名のリスト中のすべての項類が指定されていると見なされる。
- 一意名-1によって参照されるデータ項目が基本項目であっても集団項目であっても、INITIALIZE文の実行の結果は、各文の受取り側作用対象が基本項目である、一連のMOVE文またはSET文が実行されたものと同様である。これらの文の送出し側作用対象は一般規則 4 で、また、受取り側作用対象は一般規則 3 で定義される。
受取り側作用対象の項類がデータポインター、オブジェクト参照、またはプログラムポインターである場合の明示文は、以下のとおり。
SET 受取り側作用対象 TO送出し側作用対象
そうでない場合の明示文は、以下のとおり。
MOVE 送出し側作用対象 TO 受取り側作用対象
- 暗黙的に指定された各MOVE文またはSET文中の受取り側作用対象は、以下の手順を順に実行することにより決定される。
- まず、以下のデータ項目が、受取り側作用対象としては除外される。
- MOVE文の有効な受取り側作用対象でない、あらゆる一意名。ただし、項類がデータポインター、オブジェクト参照、またはプログラムポインターであるデータ項目を除く。
- FILLER指定が使用されない場合は、明示的または暗黙的なFILLER句を含む基本データ項目。
- データ記述項にREDEFINES句またはRENAMES句を含む一意名-1、またはデータ記述項にREDEFINES句を含むデータ項目のいずれかの下位項目である、あらゆる基本データ項目。ただし、この一意名-1自体がREDEFINES句を含んでいてもよい。または、REDEFINES句を含むデータ項目の下位項目であってもよい。
- 次に、以下のいずれかに該当する場合は、基本データ項目が受取り側作用対象となる可能性がある。
- 一意名-1 が明示的に基本データ項目を参照している。
- 一意名-1が参照する集団データ項目に基本データ項目が含まれる。基本データ項目が表要素の場合、出現する各基本データ項目が受取り側作用対象となる可能性がある。
- 最後に、可能性のある項目のうち、以下の条件の1つ以上が真であるものが受取り側作用対象となる。
- VALUE指定が使用されており、基本データ項目の項類がVALUE指定で明示的または暗黙的に指定された項類のいずれかである。さらに、以下の条件のいずれかが真である。
- 基本データ項目の項類が、データポインター、オブジェクト参照、またはプログラムポインターである。
- データ項目形式または表形式のVALUE句が基本データ項目のデータ記述項で指定されている。
- REPLACING指定が使用され、基本データ項目の項類が、REPLACING指定で指定された項類のいずれかである。
- DEFAULTが使用されている。
- REPLACING指定もVALUE指定も使用されていない。
- 暗黙的な各MOVE文およびSET文の送出し側作用対象は、以下のように決定される。
- データ項目が、VALUE指定を含んでいるために受取り側作用対象とされた場合、
- 受取り側作用対象の項類がデータポインターまたはプログラムポインターであれば、送出し側作用対象は定義済みの番地 NULL となる。
- 受取り側作用対象の項類がオブジェクト参照であれば、送出し側作用対象は定義済みのオブジェクト参照 NULL となる。
- 上記のどちらでもない場合は、データ項目もデータ記述項で指定されたVALUE句中の定数により、送出し側作用対象が決定される。データ項目が表要素であれば、初期化される対象に対応する、VALUE句中の定数により、送出し側作用対象が決定される。実際の送出し側作用対象は定数で、MOVE文で受取り側作用対象に転記されたときに、VALUE句の適用により生成されるデータ項目の初期値と同じ値を結果をもたらす。
- データ項目が、VALUE指定を含んでいないが、REPLACING指定を含んでいるために受取り側作用対象とされた場合、送出し側作用対象は、REPLACING指定で指定された項類に関連づけられた定数-1または一意名-2となる。
- データ項目が、一般規則 4a または 4b により、送出し側作用対象とされない場合、使用される送出し側作用対象は、以下の表に従い、受取り側作用対象の項類により変わる。
受取り側作用対象 |
表意定数 |
英字 |
表意定数英数字 SPACES |
英数字 |
表意定数英数字 SPACES |
英数字編集 |
表意定数英数字 SPACES |
データポインター |
定義済みの番地 NULL |
各国語型 |
表意定数各国語型 SPACES |
各国語型編集 |
表意定数各国語型 SPACES |
数字 |
表意定数 ZEROES |
数字編集 |
表意定数 ZEROES |
オブジェクト参照 |
定義済みのオブジェクト参照 NULL |
プログラムポインター |
定義済みの番地 NULL |
- すべての場合において、一意名-1によって参照されるデータ項目の内容は、INITIALIZE文に書かれている順番(左から右)に、初期化される。その過程で集団項目が出てきた場合には、その集団の中で記述されている順に、基本項目が初期化される。可変出現データ項目については、初期化された出現回数は、受取り側データ項目のOCCURS句の規則により決定される。
- 一意名-1と一意名-2が同じ記憶領域を指す場合には、INITIALIZE文の実行結果はどうなるかわからない。両者が同じデータ記述項に定義されていたとしても、そのことは変わらない。(手続き部の章の作用対象の重なり節を参照。)