名前の解決

プログラム B というプログラムが直接的または間接的に別のプログラム A というプログラムの中に含まれる場合、 両方のプログラムは同一ユーザー定義語を使用してオブジェクトを定義できます。 (オブジェクトには、例えば、条件名、データ名、ファイル名、レコード名、関数名、またはタイプ名などが含まれます。) そのような重複した名前をプログラム B で参照するときには、次の規則を使用して参照オブジェクトを判別します。
  1. 参照オブジェクトは、プログラム B で定義されたすべての名前セットから、また、プログラム A に直接含まれる定義されたすべてのグローバル名、 さらに直接的または間接的にプログラム A を含むプログラムで定義されたすべてのグローバル名から識別されます。 この名前のセットを使用するときには、修飾に関する通常の規則や参照の固有に関する他のすべての規則が適用されます。 これは 1 つまたは複数のオブジェクトが識別されるまで続きます。
  2. 1 つのオブジェクトだけが識別される場合は、それが参照オブジェクトです。
  3. 複数のオブジェクトが識別される場合、適切な修飾によってオブジェクトの参照をそれぞれ固有なものにしないかぎり、ただ 1 つのオブジェクトだけがプログラム B に対してローカルな名前を持つことができます。 プログラム B に対してローカルな名前を持つオブジェクトが 1 つあるか、または何もないとき、次の規則が適用されます。
    • 名前がプログラム B で宣言される場合、プログラム B は参照オブジェクトです。
    • また、プログラム A が別のプログラムの中に含まれる場合、参照オブジェクトは次のとおりです。
      • 名前がプログラム A で宣言される場合、プログラム A のオブジェクトが参照オブジェクトです。
      • 名前がプログラム A で宣言されるのではなく、プログラム A を含んだプログラムで宣言される場合、その収容プログラムのオブジェクトが参照オブジェクトです。 この規則は、単一の有効なオブジェクトが見つかるまでさらに大きな範囲の収容プログラムに適用されます。
    • 参照されたオブジェクトが関数である場合は、その関数定義によって、時にはプログラマーが、その特定の参照のために関数の値を判別する 1 つまたは複数の引数の値を設定または指定することを要求されます。 関数 ID という用語は、COBOL ソース・プログラムの手続き部内の組み込み関数を指すのに使用されます。 関数によって示されるデータ項目は、関数名とその引数 (ある場合) によって固有に識別されます。
関連情報