In der folgenden Tabelle werden die verschiedenen Möglichkeiten der Implementierung der Übertragung erläutert.
| EGL-Anweisung | Von Programm | Zu Programm | Art der Implementierung |
|---|---|---|---|
| transfer to program | EGL | EGL | COBOL CALL |
| Nicht-EGL | OS XCTL | ||
| Nicht-EGL | EGL | ||
| transfer to transaction | EGL | EGL | |
| Nicht-EGL | |||
| Nicht-EGL | EGL |
Der EGL-Build-Server verknüpft ein EGL-COBOL-Laufzeit-Stubprogramm mit jedem generierten Hauptprogramm statisch. Dieser EGL-COBOL-Laufzeit-Stub aktiviert die EGL-Laufzeitumgebung und startet das erste Programm in der Ausführungseinheit. Der Stub erfüllt auch die Übertragungsanforderung als Antwort auf die Anweisung "transfer", die von einem beliebigen Programm in der Ausführungseinheit ausgegeben werden kann.
Wenn ein EGL-Programm die Anweisung "transfer to program" für die Übertragung der Steuerung zu einem anderen EGL-Programm verwendet, wird das übertragende EGL-Programm beendet und die Steuerung wird an den EGL-COBOL-Laufzeit-Stub zurückgegeben, der mit dem EGL-Programm verknüpft ist. Der Stub gibt für die EGL-Übertragung vom Programm einen statischen oder dynamischen Aufruf gemäß des Verbindungsoptionsabschnitts aus, der zum Zeitpunkt der Generierung angegeben wurde. Das EGL-COBOL-Laufzeit-Stubprogramm behält die Steuerung bei und die EGL-Laufzeitumgebung bleibt aktiv.
Wenn die EGL-Übertragung zum Programm wiederum die Anweisung "transfer to program" verwendet, wird die Steuerung wieder an das EGL-COBOL-Laufzeit-Stubprogramm zurückgegeben, das die angeforderte Übertragung bearbeitet.
In beiden Fällen startet die EGL-Übertragung zum Programm an der Hauptfunktion.
Wenn ein EGL-Programm die Anweisung "transfer to transaction" für die Übertragung der Steuerung zu einem anderen EGL-Programm verwendet, wird das übertragende EGL-Programm beendet und kehrt zum EGL-COBOL-Laufzeit-Stubprogramm zurück, das mit dem EGL-Programm verknüpft ist. Der Stub gibt das Makro OS XCTL aus, um eine Übertragung zum Zielprogramm durchzuführen. Sowohl COBOL als auch Rational COBOL Runtime für zSeries werden bereinigt und die Laufzeitumgebung wird immer wieder neu hergestellt, sobald ein OS XCTL-Makro verwendet wird. COBOL und Rational COBOL Runtime für zSeries verwenden die Beendigungs- und Initialisierungslogik für OS XCTL. Sie können die Erstellungsdeskriptoroption "synchOnTrxTransfer" auf YES festlegen, um die Festschreibungspunkte zu steuern.
Wenn ein EGL-Programm die Anweisung "transfer to program" oder "transfer to transaction" für die Übertragung der Steuerung zu einem Nicht-EGL-Programm verwendet, wird das übertragende EGL-Programm beendet und kehrt zum EGL-COBOL-Laufzeit-Stubprogramm zurück, das mit dem EGL-Programm verknüpft ist. Der Stub gibt das Makro OS XCTL aus, um eine Übertragung zum Nicht-EGL-Programm durchzuführen. Sowohl COBOL als auch Rational COBOL Runtime für zSeries bereinigen die Laufzeitumgebung, sobald ein OS XCTL-Makro verwendet wird. COBOL und Rational COBOL Runtime für zSeries verwenden die Beendigungslogik für OS XCTL. Das Nicht-EGL-Programm stellt seine eigene Laufzeitumgebung her und führt eine Initialisierungslogik durch, die von OS XCTL angefordert wird. Sie können die Erstellungsdeskriptoroption "synchOnTrxTransfer" auf YES festlegen, um die Festschreibungspunkte zu steuern.
Wenn das EGL-Programm mit einem PSB (Programmspezifikationsblock) gestartet wurde, werden sowohl der für die Übertragung angegebene Datensatz als auch die Struktur "dliLib.psbData" als OS XCTL-Parameter übergeben. Anderenfalls wird nur der Datensatz übergeben, der für die Übertragung angegeben wurde. Register 1 ist 0, wenn keine Parameter übergeben werden. Siehe "Standardverbindungskonventionen".
Es gelten spezielle Überlegungen, wenn Sie "dliLib.psbData" übergeben. Weitere Informationen finden Sie in "Format der Struktur 'dliLib.psbData'".
Das Zielprogramm kann eine FREEMAIN-Adresse für die vom EGL-Programm übergebenen Parameter ausgeben. Die FREEMAIN-Adresse ist die Adresse in Register 1. Die FREEMAIN-Länge ist der Wert im Längenfeld plus 100.
Sie müssen bei der Verwendung der Anweisung "transfer to program" oder "transfer to transaction" angeben, dass Sie eine Übertragung zu einem Nicht-EGL-Programm durchführen. Führen Sie dazu einen der folgenden Schritte durch:
Übertragungen von einem Nicht-EGL-Programm zu einem EGL-Programm in IMS BMP- und z/OS-Batchumgebungen können mit OS XCTL zum EGL-Programm implementiert werden. Die verschiedenen Möglichkeiten, Parameter mit dem Befehl OS XCTL zu übergeben, werden in den folgenden Abschnitten beschrieben.
Es werden ein oder zwei Parameter an das empfangene Programm mithilfe von OS XCTL übergeben. Der erste Parameter ist der Arbeitsspeicherpuffer. Dieser besteht aus einem binären 2-Byte-Längenfeld, das die Puffergröße (Arbeitsspeicher-Datenlänge plus 10) enthält, einem 8-Byte-Füllfeld und den Arbeitsspeicherdaten. Der zweite Parameter, der nur verwendet wird, wenn das EGL-Programm ein DL/I-Programm ist, ist die Struktur "dliLib.psbData". Im folgenden Diagramm wird das Format der Parameterliste dargestellt, die das übertragende Programm übergeben sollte.

Informationen zum Format der Struktur "dliLib.psbData" finden Sie in "Format der Struktur 'dliLib.psbData'". Register 1 kann auf "0" festgelegt werden, wenn nichts übergeben werden soll.
Wenn Rational COBOL Runtime für zSeries die FREEMAIN-Adresse für die Bereiche ausgeben soll, die an das EGL-Programm übergeben werden sollen, rufen Sie einen einzelnen Bereich für alle übergebenen Daten ab, deren Länge der Länge der Arbeitsspeicherdaten entspricht, falls Sie mehr als 110 Byte übergeben möchten (siehe Abbildung unten). Richten Sie die Parameterlistenzeiger im Bereich oben ein, geben Sie die Längen- und Füllfelder beim Offset 100 im Bereich ein und verschieben Sie die zu übergebenden Arbeitsspeicherdaten im Bereich am Offset 110. Geben Sie das Makro OS XCTL aus, wobei Register 1 auf den Beginn des Bereichs zeigt.

Wenn es sich beim EGL-Programm um ein DL/I-Programm handelt, kann das Nicht-EGL-Programm auch eine Übertragung zum EGL-Programm durchführen, indem eine Liste von PCBs als Parameter mithilfe von OS XCTL übergeben werden. Das EGL-Programm empfängt die Steuerung auf diese Weise, wenn es als DL/I z/OS-Batch-Job gestartet wird. Die PCBs müssen der PSB-Definition zugeordnet sein, die vom EGL-Programm erwartet wird.
Der Eingabedatensatz für das EGL-Programm wird gemäß des Datentyps initialisiert, wenn das EGL-Programm mit dieser Schnittstelle gestartet wird.