修飾子

有効範囲内に、同時に同じ名前を 2 つ持つことはできません。 しかし、別のパーツからアクセス可能な識別子のほとんどは、論理的にコンテナーの内部にあるメモリー領域を参照します (Program のような、メインの論理パーツ)。 そのような場合、ドット構文を使用して、その識別子を格納しているコンテナーの名前で名前を修飾します。 この方法で、以下の識別子を修飾することができます。
  • レコード内のフィールド
  • 書式内のフィールド
  • ライブラリー内の変数または関数
  • パッケージ内のパーツ
例えば、変数 customerBalancemyCustomer というレコード変数内にある場合、 コードでは、次のように、その変数をレコードのフィールドとして参照します。
  myCustomer.customerBalance
同じ識別子が 2 つの有効範囲内にある場合、その識別子への非修飾参照は、すべて最もローカルな有効範囲への参照となります。修飾子を使用して、振る舞いをオーバーライドすることができます。ライブラリー customerLib にアクセスするための use 宣言のあるプログラムについて考えます。このプログラムとライブラリーは、それぞれが getCustomer() という名前の関数を宣言しています。次のようにして、変数名を修飾することができます。
  • プログラム内の関数が修飾子なしで getCustomer() を 呼び出す場合、EGL はローカル (プログラム) バージョンを呼び出します。
  • 関数名をライブラリーの名前で修飾する場合、EGL はライブラリーから関数を呼び出します。
      customerLib.getCustomer();
  • パーツ名にパッケージ名 (customerPackage など) を前書きする場合、パーツを import 文中で参照していなくても、EGL は別のパッケージからライブラリーやデータ・テーブルを呼び出すことができます。
      customerPackage.customerLib.getCustomer();

    パッケージ名は常に論理パーツ名を修飾し、変数、定数、関数名の名前の直前に置くことはできません。 ローカル ID がデータ・テーブルまたはライブラリーの存在するパッケージと異なるパッケージ内にある場合は、ローカル ID をデータ・テーブル名またはライブラリー名と同じものにすることができます。データ・テーブル名またはライブラリー名を参照するには、パッケージ名を組み込みます。

詳しくは、式におけるネーム解決を参照してください。