名前の階層の中に名前が存在し、その階層の中にある 1 レベルまたはそれ以上高いレベルの名前を指定することによってその名前が識別できる場合には、名前を固有にすることができます。 この場合の高いレベルの名前を修飾子と呼び、このような手順で名前を固有にすることを修飾と呼びます。
ユーザー指定の名前の後に 1 つまたは複数の句を書き、それぞれの句は語 IN または OF の後に修飾子を付けて構成することによって、修飾が指定されます。 (IN と OF は論理的に同じです。)
データ部の名前への参照 - 形式 1 .------------------------. V | >>-+-データ名-1-+----+--------------------+-+-------------------> '-条件名-----' '-+-IN-+--データ名-2-' '-OF-' >--+----------------------+------------------------------------>< '-+-IN-+--ファイル名-1-' '-OF-'
データ部の名前への参照 - 形式 2 >>-LINAGE-COUNTER--+----------------------+-------------------->< '-+-IN-+--ファイル名-2-' '-OF-'
どの階層においても、最高レベルに関連するデータ名は固有でなければならず、その名前を修飾することはできません。
名前を固有にするためには、十分の修飾を指定する必要がありますが、階層のすべてのレベルを指定する必要はありません。 たとえば、そのレコードに EMPLOYEE-NO フィールドの入ったファイルが 1 つまたは複数あるが、そのうち 1 つだけが MASTER-RECORD と名付けられたレコードをもっている場合、次のようになります。
関連情報
プログラム内で明示的に参照されるデータ部の名前は、 固有に定義されたものであるか、または修飾によって固有にされたもののいずれかでなければなりません。 参照されないデータ名は固有に定義する必要はありません。
レベル番号 01、あるいはファイル・セクション内の FD または SD レベル標識と関連しているデータ名は、データ階層内では最高レベルに位置します。 このようなデータ名を参照する場合は、そのデータ名は固有に定義されてい なければなりません。 なぜなら、そのようなデータ名を修飾することはでき ないからです。 レベル番号が 02 〜 49 のデータ項目は、データ階層内のレベルは順次下がっていき ます。 そのような項目を参照するときは、固有に定義されたものであるか、または修飾によって固有にできるもののいずれかでなければなりません。 レベル 77 のデータ名を参照するときは、そのデータ名を修飾することはできないので、必ず固有に定義しておかなければなりません。
明示的に参照される場合、セクション内では段落名を重複させることはできません。 段落名をセクション名で修飾する場合は、SECTION という語を書いてはなりません。 段落名をそれが書かれているセクション内で参照する場合は、修飾の必要はありません。プログラムに書かれる段落名またはセクション名は、他のプログラムからは参照できません。 セクションで説明しているセクション名は、段落名に対して使用可能な最高位の (そして唯一の) 修飾子であり、固有でなければなりません。
手続き部の名前への参照 - 形式 1 >>-段落名--+----------------------+---------------------------->< '-+-IN-+--セクション名-' '-OF-'
手続き部の名前への参照 - 形式 2 >>-セクション名------------------------------------------------><
コンパイル中に複数の COBOL ライブラリーを使用できる場合は、テキスト名は参照されるたびに修飾できます。
COPY ライブラリーへの参照 - 形式 3 >>-テキスト名--+-----------------------------------------+----->< | (1) | '-+----+--ライブラリー名-------ファイル名-' +-IN-+ '-OF-'
注:
COPY ライブラリーの参照の規則については COPY ステートメントを参照してください。
名前の修飾に関する規則を次に示します。
たとえば、次のとおりです。
01 FIELD-A 02 FIELD-B 05 SUB1 07 SUB2 02 FIELD-C 07 SUB1
階層には、同じかまたはより高いレベル番号が次に現れるまでのすべての従属記入項目が含まれます。 したがって、上記の例ではすべての記入項目が FIELD-A の階層に含まれます。 FIELD-B から FIELD-C の前までのすべての記入項目、ただし組み込まれているものではないものが FIELD-B の階層に含まれます。
FIELD-A の階層では、SUB1 を 2 回使用できます。 1 回は FIELD-B に従属するものとして、さらにもう 1 回は FIELD-C に従属するものとして使用できます。 SUB-1 を参照する場合には、SUB-1 OF FIELD-B または SUB-1 OF FIELD-C のように修飾しなければなりません。 FIELD-B または FIELD-C では、SUB1 は自分自身に従属することはできません。
+----------------------------------IBM 拡張----------------------------------+
形式 1 の COPY ステートメントでは、ファイル名の指定はオプショナルです。 ファイル名が指定されない場合のデフォルトは QCBLLESRC です。
+------------------------------End of IBM 拡張-------------------------------+