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.
Weitere Informationen hierzu finden Sie in Einführung in ExternalType-Abschnitte.

Syntax

Syntaxdiagramm für ExternalType-Abschnitt
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. Hinweise zur Kompatibilität für 'ExternalType'-Abschnitte
Plattform Problem
COBOL-Generierung Benutzererstellte ExternalType-Abschnitte werden nicht unterstützt.