Mit der Anweisung 'transfer' wird die Steuerung von einem Hauptprogramm auf ein anderes übertragen und das Quellenprogramm beendet. Das Quellenprogramm kann optional einen Datensatz in den Eingabedatensatz des Zielprogramms übergeben. Die Anweisung 'transfer' ist in einem aufgerufenen Programm nicht gültig.
Details zum Laufzeitverhalten finden Sie im Abschnitt 'Kompatibilität' in diesem Thema.
Das Zielprogramm wird entweder von EGL generiert oder als 'extern definiert' angesehen. Informationen dazu, wie ein Programm als 'extern definiert' angegeben wird, finden Sie in der Beschreibung der Eigenschaft 'isExternal' im nächsten Abschnitt.

Wenn Sie eine Anweisung vom Typ 'transfer to transaction' codieren, ist 'transferToTransaction' das Element im Verbindungsabschnitt, und das Attribut ist 'externallyDefined'. Wenn Sie eine Anweisung vom Typ 'transfer to program' codieren, ist 'transferToProgram' das Element im Verbindungsabschnitt, und das Attribut ist 'linkType'.
Die nächste Tabelle gibt die Übertragungen an, die auf bzw. von EGL-generiertem Code gültig sind.
| Übertragendes Objekt | Zielobjekt |
|---|---|
| Ein EGL-Java™-Programm außerhalb von J2EE | Ein EGL-Java-Programm (Nicht-J2EE) |
| Ein EGL-Java-Programm in einem J2EE-Anwendungsclient | Ein EGL-Java-Programm in demselben J2EE-Anwendungsclient |
| Ein EGL-Java-Programm in einer J2EE-Webanwendung | Ein EGL-Java-Programm in derselben J2EE-Webanwendung |
| Ein EGL-CICS-COBOL-Programm | Ein EGL-CICS-COBOL-Programm |
| Ein in einer beliebigen Sprache geschriebenes und unter CICS ausgeführtes Nicht-EGL-Programm | |
| Ein EGL-z/OS Batch-Programm | Ein EGL-z/OS Batch-Programm |
| Ein in einer beliebigen Sprache geschriebenes und außerhalb von CICS unter z/OS ausgeführtes Nicht-EGL-Batch-Programm | |
| Ein Nicht-EGL-CICS-Programm in einer bestimmten Transaktion | Ein EGL-CICS-COBOL-Programm in derselben Transaktion |
| Ein Nicht-EGL-CICS-COBOL-Programm in derselben Transaktion | |
| Eine in einer beliebigen Sprache geschriebene CICS-Transaktion | Eine in einer beliebigen Sprache geschriebene CICS-Transaktion |
| Ein mit EGL generiertes IMS/VS-Programm in einer bestimmten Transaktion | Ein mit EGL generiertes IMS/VS-Programm in derselben Transaktion |
| Eine in einer beliebigen Sprache geschriebene IMS-Transaktion | Eine in einer beliebigen Sprache geschriebene IMS-Transaktion |
| Ein EGL-Programm unter IBM® i | Ein EGL-COBOL-Programm unter IBM i |
| Ein in einer beliebigen Sprache geschriebenes und unter IBM i ausgeführtes Nicht-EGL-Programm | |
| Ein in einer beliebigen Sprache geschriebenes und unter IBM i ausgeführtes Nicht-EGL-Programm | Ein EGL-COBOL-Programm unter IBM i |
| Ein in einer beliebigen Sprache geschriebenes und unter IBM i ausgeführtes Nicht-EGL-Programm |
Um eine Übertragung von mit EGL generiertem Java-Code auf nicht mit EGL generierten Java-Code durchzuführen, können Sie einen der folgenden Mechanismen verwenden: einen externen EGL-Typ, eine Java-Zugriffsfunktion oder 'vgLib.startTransaction'.
EGL unterstützt die Verwendung eines verzögerten Switch, sodass eine Transaktion ein Formular anzeigt und eine andere Transaktion aufgerufen wird, wenn der Benutzer dieses Formular übergibt. Details finden Sie unter 'show'.
transfer to program com.CompanyB.CustomerPackage.processCustomer;
| Plattform | Problem |
|---|---|
| Stapelumgebungen (z/OS-Haupt-Batch-Programm, IMS BMP oder Java-Haupttextprogramm oder -Haupt-Batch-Programm) | Die Anweisung 'transfer to transaction' startet ein Programm in derselben Ausführungseinheit. Das Verhalten vor
der Übertragung hängt von der Einstellung der Erstellungsdeskriptoroption 'synchOnTrxTransfer' ab:
Übertragungen zwischen einem z/OS Batch-Programm und einem IMS BMP-Programm werden nicht unterstützt. EGL verwendet das Betriebssystemmakro XCTL, um eine Übertragung von einem IMS BMP-Programm auf ein nicht mit EGL oder VisualAge Generator generiertes Programm auszuführen. |
| CICS für z/OS | Die Anweisung 'transfer to program' verursacht keinen Synchronisationspunkt, sofern kein
Programmspezifikationsblock (PSB) terminiert ist, wenn die Übertragung stattfindet und eine der folgenden Bedingungen erfüllt ist:
EGL implementiert die Anweisung 'transfer to program' mit dem CICS-Befehl XCTL und verwendet die Option COMMAREA dieses Befehls zwecks Übergabe des Datensatzes. Die Daten beginnen im ersten Byte des gemeinsamen CICS-Bereichs (COMMAREA), und die maximale Datensatzlänge beträgt 32763. Die Anweisung 'transfer to transaction' schreibt wiederherstellbare Ressource fest, schließt Dateien und Cursor und startet eine neue Transaktion. Der Zielname ist in diesem Fall eine CICS-Transaktions-ID. EGL implementiert die Anweisung mit dem CICS-Befehl START und verwendet die Option COMMAREA dieses Befehls zwecks Übergabe des Datensatzes. Die Datensatzdaten beginnen im ersten Byte des gemeinsamen CICS-Bereichs (COMMAREA), und die maximale Datensatzlänge beträgt 32763. |
| IMS BMP | Siehe Zeile 'Stapelumgebungen'. |
| IMS/VS |
Die Anweisung 'transfer to transaction' schreibt wiederherstellbare Ressource fest, schließt Dateien und Cursor und startet eine neue Transaktion. |
| Java | Mithilfe der Elemente 'transferToProgram' und 'transferToTransaction' des Verbindungsoptionsabschnitts kann der Paketname für das empfangende Programm bereitgestellt werden, wenn der Name nicht über import-Anweisungen oder explizit über Codepaketnamen bereitgestellt wird. Übertragungen auf nicht mit EGL generierte Programme werden nicht unterstützt. |
| JSF | Die Anweisung 'transfer to transaction' ist für Seitenhandler nicht gültig. Verwenden Sie stattdessen die Anweisung 'forward'. |
| Rich UI | Die Anweisung 'transfer' wird nicht unterstützt. |
| z/OS Batch | Siehe Zeile 'Stapelumgebungen'. |