import および use 文

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 内の同じ名前の関数に優先してその関数を呼び出します。 同様に、ARPackageCRMPackage の両方に CustomerLib という名前のライブラリーがある場合、 EGL はローカル (ARPackage) のバージョンを使用します。