ExternalType-Abschnitt
ExternalType-Abschnitte stellen eine Zuordnung von EGL zu externen Sprachelementen her.
Sie können jeden der folgenden Stereotypen mit dem ExternalType-Abschnitt verwenden:
- JavaObject für den Zugriff auf Java™-Code; weitere Informationen finden Sie unter "Externer Typ für Java-Code".
- JavaScriptObject für den Zugriff auf JavaScript-Code; weitere Informationen finden Sie unter "Externer Typ für JavaScript-Code".
- HostProgram für den Zugriff auf Hostprogramme unter IBM® i; weitere Informationen finden Sie unter "Auf IBM i-Programme als Web-Services zugreifen".
Ein ExternalType-Abschnitt weist folgende Merkmale auf:
- Die EGL-Zuordnung, die der externe Typ (ExternalType) bereitstellt, wird generalisiert, um auch Felder und Konstruktoren zu berücksichtigen.
- ExternalType-Abschnitte können nicht direkt auf Code zugreifen. Sie müssen Prototypen zur Verfügung stellen, sodass EGL die Typüberprüfung vornehmen kann.
- Eine ExternalType-Definition reserviert keinen Speicher. Sie müssen eine Variable deklarieren, die auf dem Abschnitt basiert.
- Viele Konzepte, die mit dem ExternalType-Abschnitt verwendet werden, stammen aus objektorientierten Sprachen, wie z. B. Java und C#.
- ExternalType-Abschnitte können verwendet werden, um Gruppen von Funktionszeigern für die Behandlung von Ereignissen zu erstellen. EGL-Textberichte verwenden normalerweise ExternalType-Abschnitte für diesen Zweck. Lesen Sie dazu EGL-Textberichte.
- ExternalType-Funktionen:
- Erstellen Sie eine Variable, die auf dem externen Typ (ExternalType) basiert, und hängen Sie den Variablennamen unter Verwendung von Punktsyntax an den Namen der Methode an (externalTypeVariable.methodName()).
- Wenn die Funktion als static markiert ist, rufen Sie die Funktion mit dem Namen des ExternalType-Abschnitts und Punktsyntax auf (typeName.methodName()).
- Sie können einen ExternalType-Abschnitt einer Java-Klasse zuordnen, die die Schnittstelle java.io.Serializable implementiert, aber der ExternalType-Abschnitt muss den vordefinierten externen Typ 'Serializable' erweitern.
Ein ExternalType-Abschnitt besteht aus den folgenden Komponenten:
- Variablendeklarationen
- Diese ermöglichen den Zugriff auf öffentliche Variablen im externen Sprachelement.
- Funktionsprototypen
- Diese stellen Methodenaufrufe oder Funktionsaufrufe im externen Typ dar.
- Konstruktorprototypen
- Diese definieren die Syntax für das Erstellen einer Variablen dieses externen Typs mithilfe einer EGL-Anweisung new.
Syntax

- Typname
- Der Name, den Sie dem Abschnittstyp zuordnen. Verwenden Sie diesen Namen in der Anweisung, die eine Variable dieses Typs erstellt.
- externer Typ
- Die Klausel extends bezieht sich auf eine andere ExternalType-Definition, die Funktions- und/oder Variablenprototypen enthält, die dieser Typ übernimmt.
- Stereotyp
- Eine der folgenden Arten: JavaObject, JavaScriptObject oder HostProgram.
- Variablendeklaration
- Diese Prototypdeklaration stellt eine Variable in dem externen Typ dar. Es wird kein Speicher zugeordnet, d. h., Sie können Initialisierungsoperatoren mit diesen Deklarationen verwenden. Verwenden Sie die EGL-Syntax und erstellen Sie die Variable auf der Basis von EGL-Primitive-Typen, die nativen Typen entsprechen. Ein Beispiel für native Typen finden Sie in EGL-Basiselemente zu Java zuordnen.
- static
- Dieses Schlüsselwort gibt an, dass die angegebene Funktion oder Variable neben einer Variablen besteht, die auf dem externen Typ basiert, und dass Sie mit der Syntax typeName.functionName() auf sie verweisen können.
- Funktionsprototyp
- Diese Prototypdeklaration stellt eine Funktion in dem externen Typ dar. Verwenden Sie keinen Code in der Deklaration, sondern geben Sie Parameter und Rückgabewerte unter Verwendung der EGL-Syntax an. Primitive-Typen, die Sie als Parameter übergeben, müssen den Änderungswert in enthalten.
- Parameter
- Dies sind die Parameter, die EGL benötigt, um eine Variable dieses Typs mit der Anweisung new zu erstellen. Verwenden Sie Typname für den Abschnittsnamen in der Anweisung new; siehe new (Operator).
Beispiel
Das folgende Beispiel zeigt einen ExternalType-Abschnitt mit Funktionsprototypen:
ExternalType TaxModule type JavaObject
// Definition öffentlicher Variablen
adjustedGrossIncome FLOAT;
companyName STRING;
// Definition des Funktionsprototyps
function calculateTax (adjIncome FLOAT in) returns (FLOAT);
// Definition des Konstruktorprototyps
constructor (taxAuthority STRING);
end
// Aufruf des obigen Konstruktors in neuem Ausdruck
myTaxModule TaxModule = new TaxModule("NC") {
adjustedGrossIncome = 60135.00,
companyName = "CompanyB" };
myTax = myTaxModule.calculateTax (myIncome);
Kompatibilität
| Plattform | Problem |
|---|---|
| COBOL-Generierung | Benutzererstellte ExternalType-Abschnitte werden nicht unterstützt. |