2 番目の規則のセットは、EGL が変数参照を解決する方法を決定します。詳細については、『変数および定数の参照』を参照してください。
最も単純なケースでは、それぞれのパーツを別々のパッケージで宣言せずに、単一パッケージ内に順次定義します。以下のリストは同じ階層レベルにある一連のパーツを示しています (詳細は省略されています)。
Function: Function01 Function: Function02 Function: Function03 Record: Record01
同じレベルにあるパーツは相互に使用可能です。例えば、Function01 は他の関数のいずれかまたは両方を呼び出すことができます。また、Record01 は 3 つのそれぞれの関数で変数に 対する typedef として使用できます。
Program: Program01 Function: Function01 Function: Function02 Function: Function03 Record: Record01
最後に、ユーザーのコードにテキスト書式または印刷書式が含まれている場合には、 これらの書式を含む書式グループにアクセスするには、使用宣言が必要です。使用宣言は、データ・テーブルまたはライブラリーをアクセスする場合にも推奨されます。詳しくは、『使用宣言』を参照してください。
ほとんどの開発では、複数のパッケージで共有するパーツが使用されています。これらの規則が有効になります。
my.package.myPart
前述のとおり、例 my.package.myPart のような形式で、パーツの参照時にパッケージ名を指定できます。現行プロジェクトは、EGL ビルド・パスにリストされているプロジェクトのいずれかとして扱われます。
この場合の各 import ステートメントは、特定のパッケージ内の特定のパーツを明示的に参照します。このような明示的 import ステートメント で指定されたパーツは、現行パッケージの同じ名前のパーツをオーバーライドするよう動作します。
2 つの異なるプロジェクト内に同じ名前のパッケージが存在する場合、指定された明示型の import ステートメントは、EGL ビルド・パスを使用して最初の検索を行い、必要なパーツが見つかると検索を停止します。 (パーツは、あるプロジェクト内のパッケージに対して固有である必要があります。) 2 つの異なるプロジェクト内で同じ名前のパッケージが存在してもエラーではありませんが、混乱を招くことになりお勧めできません。
同じパーツ名を指定した 2 つの明示型 import ステートメントがある場合、エラーが発生します。
この場合の各 import ステートメントは、指定パッケージ内のすべてのパーツを参照し、ワイルドカード import ステートメント と呼ばれます。
2 つの異なるプロジェクト内に同じ名前のパッケージが存在する場合、指定されたワイルドカード import ステートメントは、EGL ビルド・パスを使用して最初の検索を行い、必要なパーツが見つかると検索を停止します。 (パーツは、あるプロジェクト内のパッケージに対して固有である必要があります。)
複数のワイルドカード import ステートメントが同じ名前のパーツを検索すると、エラーが発生します。
この場合の各 import ステートメントは、特定のパッケージ内の特定のパーツを明示的に参照します。このような明示的 import ステートメント で指定されたパーツは、現行パッケージの同じ名前のパーツをオーバーライドするよう動作します。
2 つの異なるプロジェクト内に同じ名前のパッケージが存在する場合、指定された明示型の import ステートメントは、EGL ビルド・パスを使用して最初の検索を行い、必要な関数が見つかると検索を停止します。 (関数は、あるプロジェクト内のパッケージに対して固有である必要があります。) 2 つの異なるプロジェクト内で同じ名前のパッケージが存在してもエラーではありませんが、混乱を招くことになりお勧めできません。
同じパーツ名を指定した 2 つの明示型 import ステートメントがある場合、エラーが発生します。
この場合の各 import ステートメントは、指定パッケージ内のすべてのパーツを参照し、ワイルドカード import ステートメント と呼ばれます。
2 つの異なるプロジェクト内に同じ名前のパッケージが存在する場合、指定されたワイルドカード import ステートメントは、EGL ビルド・パスを使用して最初の検索を行い、必要なパーツが見つかると検索を停止します。 (パーツは、あるプロジェクト内のパッケージに対して固有である必要があります。)
複数のワイルドカード import ステートメントが同じ名前のパーツを検索すると、エラーが発生します。