ExternalType パーツは、EGL を外部言語要素にマップします。
以下のいずれかのステレオタイプを ExternalType パーツとともに使用できます。
- JavaObject (Java™ コードにアクセスする場合)。詳しくは、『
Java コードの外部型』を参照してください。
- JavaScriptObject (JavaScript コードにアクセスする場合)。詳しくは、『
JavaScript コードの外部型』を参照してください。
- HostProgram (IBM® i に関するホスト・プログラムにアクセスする場合)。詳しくは、『Web サービスである IBM i プログラムへのアクセス』を参照してください。
ExternalType パーツには、以下の特性があります。
- ExternalType が提供する EGL マッピング。これは、フィールドおよびコンストラクターを
含むように汎化されます。
- ExternalType パーツはコードに直接アクセスできない。
EGL が型検査を実行できるように、プロトタイプを提供する必要があります。
- ExternalType 定義はストレージを予約しません。
このパーツに基づく変数を宣言する
必要があります。
- ExternalType パーツで使用される多くの概念は、Java や C# などのオブジェクト指向言語に由来しています。
- ExternalType パーツを使用して、イベント処理用の関数ポインターの配列を
作成することができます。EGL テキスト・レポートは、通常、この目的のために ExternalType パーツを
使用します。EGL テキスト・レポートを参照してください。
- ExternalType 関数:
- ExternalType に基づく変数を作成し、ドット構文を使用してメソッドの名前に変数名を付加します ( externalTypeVariable.methodName())。
- 関数が static とマークされている場合は、
ExternalType パーツの名前とドット構文 (typeName.methodName()) を使用してこの関数を呼び出します。
- java.io.Serializable
インターフェースを実装する Java クラスに ExternalType パーツをマッピングできますが、ExternalType パーツは
事前定義済みの順序付け可能な ExternalType を拡張する必要があります。
ExternalType パーツは以下のコンポーネントで構成されます。
- 変数宣言
- 以下の変数は、外部言語要素内のパブリック変数へのアクセスを提供します。
- 関数プロトタイプ
- 外部型内のメソッド呼び出しまたは関数呼び出しを表します。
- コンストラクター・プロトタイプ
- EGL new 文を使用して、この外部型の変数を構成する構文を定義します。
詳しくは、『
ExternalType パーツの概要』を参照してください。
構文
- typeName
- パーツ・タイプに割り当てる名前。この型の変数を作成する文では、この名前を使用します。
- externalType
- extends 文節は、この型が継承する関数や変数プロトタイプを含む、別の ExternalType 定義を参照します。
- stereotype
- JavaObject、JavaScriptObject、または HostProgram のいずれかの種類。
- variableDeclaration
- このプロトタイプ宣言は、外部型の変数を表します。
ストレージが割り当てられていないため、これらの宣言にはイニシャライザーを使用できません。
EGL 構文を使用し、ネイティブ型に対応する EGL プリミティブ型を変数のベースにします。ネイティブ型の 1 つの例については、EGL プリミティブ型の Java へのマッピングを参照してください。
- static
- このキーワードは、外部型に基づく変数とは別に指定された関数または変数が存在し、
構文 typeName.functionName() を使用すると、その関数を参照できることを示します。
- functionPrototype
- このプロトタイプ宣言は、外部型の関数を表します。
この宣言に実際のコードは組み込まず、EGL 構文を使用してパラメーターと戻り値を指定してください。パラメーターとして渡すプリミティブ型には、in 修飾子を含める必要があります。
- parameters
- これらは、EGL が new 文を使用してこの型の変数を作成するために必要とする
パラメーターです。new 文内のパーツ名には
typeName を使用してください (『new 演算子』を参照)。
例
以下の例は、関数プロトタイプを使用した
ExternalType パーツを示します。
ExternalType TaxModule type JavaObject
// public 変数を定義します
adjustedGrossIncome FLOAT;
companyName STRING;
// 関数プロトタイプを定義します
function calculateTax (adjIncome FLOAT in) returns (FLOAT);
// コンストラクター・プロトタイプを定義します
constructor (taxAuthority STRING);
end
// 前述のコンストラクターを新しい式で呼び出します
myTaxModule TaxModule = new TaxModule("NC") {
adjustedGrossIncome = 60135.00,
companyName = "CompanyB" };
myTax = myTaxModule.calculateTax (myIncome);
互換性
表 1. ExternalType パーツの互換性に関する考慮事項| プラットフォーム |
問題 |
| COBOL 生成 |
ユーザー作成 ExternalType パーツはサポートされません。 |