EGL の import 文および use 文によって、
コード要素の可視性を拡張します。
EGL の
import 文および
use 文は、
以下の状態の場合に、広く使用されています。
- 論理パーツ (「プログラム」や「ライブラリー」など) またはデータ・パーツ (「レコード」または「DataItem」など) を import して、現行パッケージのパーツであるかのようにそれらを参照できるようにします。
- パッケージ全体をインポートして、パッケージが含むすべてのパーツを現行パッケージのパーツであるかのように参照できるようにします。
- 現行パッケージ内のライブラリーを使用して、
そのライブラリーから使用する関数名または変数名から、ライブラリーの接頭部をドロップできるようにします。
- 現行パッケージ内のフォーム・グループを use して、
このグループのフォームに対して非修飾でアクセスできるようにします。
- データ・テーブルを使用することができるため、プログラムがデータ・テーブルのフィールドに直接アクセスすることができます。
- import 文と use 文を結合して、
別のパッケージのライブラリー内の関数または変数を参照できます。
詳しくは、importおよび useを参照してください。
暗黙的インポートおよび使用
EGL で定義されているパーツは、import しなくてもすべて直接参照することができます。
システム・ライブラリーまたは EGL 定義の列挙型関数は、
use しなくても直接参照できます。
したがって、これらのパーツは暗黙的に インポートおよび使用することになります。
例えば、この暗黙的
使用により、以下のようにライブラリーを参照せずに
sysLib.writeStdOut() システム関数を呼び出すことができます。
writeStdOut("Progam complete.");
例
カスタマー・リレーション・マネージメント (CRM) パッケージのデータ定義と関数を使用して、受け取り勘定 (AR) パッケージ内のカスタマー情報にアクセスすることができます。
次のコードを使用して、パッケージ
com.companyb.crmpackage 内のライブラリー
CustomerLib から関数
getCustomer() を呼び出すことができます。
package com.companyb.arpackage;
import com.companyb.crmpackage.*; // CustomerLib ライブラリーのホーム
program CustomerTest type BasicProgram
use CustomerLib; // マイ・スコープにこれらの関数を追加します
function main()
getCustomer();
end
end
以下の例の特徴は重要です。
- 行 import com.companyb.crmpackage.*; は、
EGL に対して、CRMPackage 全体を現行論理パーツのスコープに収めることを指示します。参照したパーツのみが、コードに追加されます。
- use 文をコメント化すると、
CustomerLib.getCustomer() 内でのように、関数名にライブラリー名を追加しない限り、プログラムを生成できません。
- 後で CustomerTest プログラムでローカル関数 getCustomer() を定義すると、
EGL は、com.companyb.crmpackage.CustomerLib 内の同じ名前の関数に優先してその関数を呼び出します。
同様に、ARPackage と CRMPackage の両方に CustomerLib という名前のライブラリーがある場合、
EGL はローカル (ARPackage) のバージョンを使用します。