Steuerung zu IMS BMP- und z/OS-Batchumgebungen übertragen

Übertragungen zu IMS BMP- und z/OS-Batchumgebungen werden wie folgt implementiert:

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.

Übertragung von EGL-Programmen zu EGL-Programmen mithilfe von "transfer to program"

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.

Übertragung von EGL-Programmen zu EGL-Programmen mithilfe von "transfer to transaction"

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.

Übertragung zu Nicht-EGL-Programmen mithilfe von "transfer to program" oder "transfer to transaction"

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:

  • Legen Sie die Eigenschaft "isExternal" auf YES in der Anweisung "transfer" fest.
  • Geben Sie die Option "externallyDefined" im Verbindungsoptionsabschnitt in den Verbindungsinformationen für das Element "transferToProgram" oder "transferToTransaction" an.

Übertragung von Nicht-EGL-Programmen zu EGL-Programmen mithilfe von OS XCTL

Ü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.

Standardverbindungskonventionen

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.

Abbildung 1. Parameter mithilfe von OS XCTL übergeben: Beispiel 1
Parameter mithilfe von OS XCTL übergeben

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.

Standardverbindungsopitionen mit Unterstützung von FREEMAIN im EGL-Programm

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.

Abbildung 2. Parameter mithilfe von OS XCTL übergeben: Beispiel 2
Parameter mithilfe von OS XCTL übergeben
Hinweis: Das höchstwertige Bit muss für einen der folgenden Zeiger aktiviert sein:
  • Zeiger zum Arbeitsspeicher, wenn "dliLib.psbData" nicht übergeben wird
  • Zeiger zu "dliLib.psbData", wenn "dliLib.psbData" übergeben wird

Feedback