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.
Weitere Informationen hierzu finden Sie in
Einführung in ExternalType-Abschnitte.
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
Tabelle 1. Überlegungen zur Kompatibilität für ExternalType-Abschnitte| Plattform |
Problem |
| COBOL-Generierung |
Benutzererstellte ExternalType-Abschnitte werden nicht unterstützt. |