Generierte EGL-Programme können Übertragungen zu oder von IMSADF-Programmen durchführen. Verzögerte Programm-zu-Programm-Nachrichtenumschaltungen können zwischen interaktiven IMSADF II-Programmen und segmentierten, interaktiven EGL-Programmen, die mit der auf YES festgelegten Erstellungsdeskriptoroption "spaADF" generiert wurden, durchgeführt werden. Darüber hinaus können sekundäre IMSADF II-Transaktionen von EGL-Batchprogrammen verarbeitet werden.
EGL kann zum Initialisieren von IMSADF II nicht verwendet werden, kann aber zum Empfangen der Steuerung vom IMSADF II-Transaktionstreiber sowie zum Zurückgeben der Steuerung an den IMSADF II-Transaktionstreiber genutzt werden. Dies wird nur unterstützt, wenn das IMSADF II-Programmsystem den IMSADF II-28-Byte-Arbeitspufferbereich mit einer Arbeitsdatenbank verwendet.
//*** RECORD=ADFWKDB ****
// The sample segment layout of the ADFWORK database default
// segment size is 6000 bytes. Use this DLISegment definition
// to retrieve data from and store data into the ADF work database.
// Refer to the IMSADF Application Development Guide
// Appendix E for details on which fields to update.
// ***********************
Record ADFWKDB type DLISegment {
keyItem = "LTERMNME"
}
3 LTERMNME char(8) ;
3 SPALEGTH smallint ;
3 * char(4) ;
3 SPATRANS char(8) ;
3 * char(397) ;
3 SPABITS hex(2) ;
3 * char(6) ;
3 SPAFIRST smallint ;
3 SPARTNCD int ;
3 SPASECTX smallint ;
3 * char(4) ;
3 SPAPGOPT smallint ;
3 SPASWITH char(2) ;
4 RDFSWITH smallint ;
3 SPATRX char(3) ;
3 SPACGTRX char(3) ;
3 * char(66) ;
3 SPASHOTR char(8) ;
3 * char(31) ;
3 SPAKEYID char(255) ;
3 SPAFLDSG char(5192) ;
end // end ADFWKDB
Rational COBOL Runtime für zSeries verwendet seine Arbeitsdatenbank nicht gemeinsam mit IMSADF II. Die beiden Datenbanken haben ein unterschiedliches Format. Änderungen an der IMSADF II-Arbeitsdatenbank haben keine Auswirkungen auf die Rational COBOL Runtime-Datenbank. Auch Änderungen durch das EGL-Programm an der Rational COBOL Runtime-Arbeitsdatenbank haben keine Auswirkungen auf die IMSADF II-Arbeitsdatenbank.
ssssTcc
Wenn der Programmbenutzer die IMSADF II-Transaktions-ID eingibt, die dem EGL-Programm entspricht, führt IMSADF II eine direkte Programm-zu-Programm-Nachrichtenumschaltung für die angeforderte Transaktion durch. IMSADF II schreibt seinen eigenen 28-Byte-Arbeitspufferbereich in die IMS-Nachrichtenwarteschlange, um die Umschaltung durchzuführen.
Das EGL-Programm muss mit der auf YES festgelegten Erstellungsdeskriptoroption "spaADF" sowie mit der auf "28" festgelegten "spaSize" generiert werden, damit die Größe des IMSADF II-Arbeitspufferbereichs übereinstimmt. Wenn IMS die neue Transaktion terminiert, liest die EGL-Programmsteuerungslogik den IMSADF II-Arbeitspufferbereich aus dem Eingabe-/Ausgabe-PCB. Aufgrund dieser Erstellungsdeskriptoroptionen nimmt die EGL-Programmsteuerungslogik keine Änderungen am Arbeitspufferbereich vor. Deshalb kann das EGL-Programm eine mögliche direkte Programm-zu-Programm-Nachrichtenumschaltung zurück zum interaktiven IMSADF II-Transaktionstreiber vornehmen. Ein direktes Umschalten zur IMSADF II-Anmeldetransaktion wird nicht unterstützt.
Wenn mehrere EGL-Programme ausgeführt werden, bevor sie zurück zum interaktiven IMSADF II-Transaktionstreiber übertragen werden, müssen alle EGL-Programme mit denselben Erstellungsdeskriptoroptionen generiert werden. Die Programmsteuerungslogik verwendet die Rational COBOL Runtime-Arbeitsdatenbank oder ein sekundäres Nachrichtensegment, gefolgt vom Arbeitspufferbereich, um Datensätze zwischen den EGL-Programmen zu übergeben. Daher wird der IMSADF II-formatierte Arbeitspufferbereich beibehalten. Sowohl verzögerte als auch direkte Programm-zu-Programm-Nachrichtenumschaltungen können zwischen den EGL-Programmen verwendet werden.
Sie können außerdem die Erstellungsdeskriptoroption "spaStatusBytePosition=p" angeben, wobei "p" ein verfügbares Byte im IMSADF II-Arbeitspufferbereich angibt, das für das EGL-Segmentierungsstatusbyte verwendet werden kann. Alle EGL-Programme, die von einer Reihe von Nachrichtenumschaltungen, die von einem IMSADF II-Transaktionstreiber aus gestartet werden, betroffen sind, müssen dieselben Erstellungsdeskriptoroptionen "spaSize", "spaADF" und "spaStatusBytePosition" haben. Informationen zu den verfügbaren Positionen im Arbeitspufferbereich finden Sie in Ihrer IMSADF II-Dokumentation.
Wie in einem COBOL-Programm kann das EGL-Programm auf die IMSADF II-Arbeitsdatenbank zugreifen, um die Informationen im IMSADF II-Kommunikationsbereich zu verwenden oder zu ändern. Wenn Sie auf die IMSADF II-Arbeitsdatenbank zugreifen, verarbeitet das EGL-Programm die IMSADF II-Arbeitsdatenbank wie jede andere Programmdatenbank. Verwenden Sie die Datensatzdefinition oben, um auf die IMSADF II-Arbeitsdatenbank zuzugreifen. Wenn Sie eine DL/I IMSADF II-Arbeitsdatenbank verwenden, stellen Sie sicher, dass Sie einen Datenbank-PCB in die PSB-Definition des EGL-Programms einbeziehen.
Um eine Umschaltung zurück zum IMSADF II-Transaktionstreiber durchzuführen, sollte Ihr EGL-Programm in der IMSADF II-Arbeitsdatenbank Flags setzen, um dem Transaktionstreiber mitzuteilen, welche Aufgaben er beim Empfang der Steuerung ausführen soll. Weitere Informationen finden Sie in der IMSADF II-Dokumentation für Ihr System. Das EGL-Programm überträgt die Steuerung mithilfe der Anweisung "transfer to transaction", die keinen Datensatz angibt. Legen Sie "sysVar.transferName" auf den Namen der neuen Transaktion fest, die gestartet werden soll. Diese Variable muss denselben Wert enthalten, der in die IMSADF II-Variable SPATRANS platziert wurde. Die EGL-Programmsteuerungslogik fügt den Arbeitspufferbereich ein, um eine direkte Programm-zu-Programm-Nachrichtenumschaltung zurück zu IMSADF II auszulösen.
Die in diesem Abschnitt beschriebenen Verfahren werden nur verwendet, wenn eine Übertragung von IMSADF II zu einer Reihe von EGL- und Nicht-EGL-Programmen vor der Übertragung zurück zu IMSADF II durchgeführt wird. Wenn nur ein einziges EGL-Programm ausgeführt und dann zurück zu IMSADF II übertragen wird, behält die Programmsteuerungslogik den IMSADF II-Arbeitspufferbereich automatisch bei. Informationen zu Übertragungen ohne IMSADF II finden Sie in "Steuerung zur IMS/VS-Umgebung übertragen".
In der folgenden Tabelle werden die Konventionen dargestellt, die für Übertragungen zwischen EGL-Programmen verwendet werden, wenn die Erstellungsdeskriptoroption "spaADF" auf YES festgelegt wird. Diese Konventionen unterscheiden sich von den Verfahren ohne IMSADF II, da in diesen speziellen Verfahren ein Datensatz übergeben wird, sodass der Arbeitspufferbereich intakt bleibt. Der ADF-Modus unterstützt keine Übertragungen zwischen segmentierten, nicht interaktiven Programmen.
| Aktion | Direkte Nachrichtenumschaltung (optionales Eingabeformular) | Verzögerte Nachrichtenumschaltung (mit Eingabeformular) |
|---|---|---|
| Codierung und Generierung | Definieren Sie beide Programme als "segmented = YES". Generieren Sie beide Programme als interaktiv mit der Erstellungsdeskriptoroption "spaSize", festgelegt auf "28", und der Erstellungsdeskriptoroption "spaADF", festgelegt auf YES. | Definieren Sie beide Programme als "segmented = YES". Generieren Sie beide Programme als interaktiv mit der Erstellungsdeskriptoroption "spaSize", festgelegt auf "28", und der Erstellungsdeskriptoroption "spaADF", festgelegt auf YES. |
| Durchführung der Übertragung | Das Ursprungsprogramm kann kein Formular senden. Wenn es sich um ein EGL-Programm handelt, wird die Anweisung "transfer to transaction" mit einem Datensatz verwendet. | Das Ursprungsprogramm muss das Formular in eine Nachrichtenwarteschlange schreiben, die mit dem Terminal nach dem ersten Schreiben des Arbeitspufferbereichs verbunden ist. Wenn es sich um ein EGL-Programm handelt, wird dies mit der Anweisung "show", mit einem Formular und mit einem optionalen Datensatz durchgeführt. |
| Verwendung eines Eingabeformulars | Das Zielprogramm kann optional ein Eingabeformular haben. | Das Zielprogramm muss ein Eingabeformular haben. |
| Übergabe eines Datensatzes | Der Datensatz wird zum Nachrichtensegment, gefolgt vom Arbeitspufferbereich (SPA), übertragen. | Der Datensatz, wenn vorhanden, wird über die Arbeitsdatenbank übertragen. |
| Angabe des Segmentierungsstatusbytes | Wenn "spaStatusBytePosition" angegeben wurde, ignoriert das Zielprogramm stets den Wert des Segmentierungsstatusbyte, der sich im Arbeitspufferbereich am angegebenen Offset befindet. | Wenn "spaStatusBytePosition" angegeben wurde, verwendet das Zielprogramm den Wert des Segmentierungsstatusbyte am angegebenen Offset bei einem Integritätsproblem des Eingabeformulars, das vom Programmbenutzer durch Drücken von PA1 oder PA2 verursacht wird. |
| Das von "spaStatusBytePosition" angegebene Segmentierungsstatusbyte wird ausschließlich für Programm-zu-Programm-Übertragungen für interaktive Programme genutzt. Das Byte ist für Übertragungen zwischen interaktiven Programmen und anderen Programmen vorhanden. Jedoch sollte bei einem übertragenden Nicht-EGL-Programm das Byte immer als Leerzeichen festgelegt sein. Ein Nicht-EGL-Zielprogramm kann den Wert des Segmentierungsstatusbyte ignorieren. | ||
Mit diesem Verfahren können zwei segmentierte interaktive EGL-Programme sowohl den Transaktionsnamen als auch den PSB-Namen ändern, ohne dass dem Programmbenutzer ein Formular angezeigt wird. Die zwei Programme können verschiedene Formulargruppen (formGroups) verwenden. Eine Skeleton-Definition der zwei Programme finden Sie unter "Direkte Umschaltung zwischen zwei EGL-Programmen" in "Steuerung zur IMS/VS-Umgebung übertragen". Denken Sie daran, dass Sie die Erstellungsdeskriptoroption "spaADF" auf YES festlegen müssen, wenn IMSADF II-Programme beteiligt sind.
Die EGL-Programmsteuerungslogik behält automatisch den Arbeitspufferbereich bei und verwaltet den Datensatz, der als Nachrichtensegment, gefolgt vom Arbeitspufferbereich für die Programme A und B, übergeben wird. Geben Sie die Erstellungsdeskriptoroption "spaSize" (28 Byte) für die Programme A und B an.
Das Nicht-EGL-Programm muss ein interaktives IMS-Programm sein. Das EGL-Programm muss wie Programm B definiert werden. Informationen dazu finden Sie unter "Direkte Umschaltung zwischen zwei EGL-Programmen" in "Steuerung zur IMS/VS-Umgebung übertragen". Denken Sie daran, dass Sie die Erstellungsdeskriptoroption "spaADF" auf YES festlegen müssen, wenn IMSADF II-Programme beteiligt sind.
Das Nicht-EGL-Programm muss ein interaktives IMS-Programm sein. Das EGL-Programm muss wie Programm A definiert werden. Informationen dazu finden Sie unter "Direkte Umschaltung zwischen zwei EGL-Programmen" in "Steuerung zur IMS/VS-Umgebung übertragen". Denken Sie daran, dass Sie die Erstellungsdeskriptoroption "spaADF" auf YES festlegen müssen, wenn IMSADF II-Programme beteiligt sind.
Mit diesem Verfahren können zwei segmentierte interaktive EGL-Programme sowohl den Transaktionsnamen als auch den PSB-Namen ändern, wenn dem Programmbenutzer ein Formular angezeigt wird. Die zwei Programme müssen dieselben Formulargruppen (formGroups) verwenden. Es muss kein Datensatz übertragen werden, aber es ist ein Formular erforderlich. Eine Skeleton-Definition der zwei Programme finden Sie unter "Verzögerte Umschaltung zwischen zwei EGL-Programmen" in "Steuerung zur IMS/VS-Umgebung übertragen". Denken Sie daran, dass Sie die Erstellungsdeskriptoroption "spaADF" auf YES festlegen müssen, wenn IMSADF II-Programme beteiligt sind.
Das Nicht-EGL-Programm muss ein interaktives IMS-Programm sein. Definieren Sie das EGL-Programm wie Programm B unter "Verzögerte Umschaltung zwischen zwei EGL-Programmen" in "Steuerung zur IMS/VS-Umgebung übertragen". Denken Sie daran, dass Sie die Erstellungsdeskriptoroption "spaADF" auf YES festlegen müssen, wenn IMSADF II-Programme beteiligt sind.
Das Nicht-EGL-Programm muss ein interaktives IMS-Programm sein. Definieren Sie das EGL-Programm wie Programm A unter "Verzögerte Umschaltung zwischen zwei EGL-Programmen" in "Steuerung zur IMS/VS-Umgebung übertragen". Denken Sie daran, dass Sie die Erstellungsdeskriptoroption "spaADF" auf YES festlegen müssen, wenn IMSADF II-Programme beteiligt sind. Das EGL-Programm muss für alle variablen Datenfelder im Formular, die als Eingabe im Nicht-EGL-Programm erforderlich sind, die Eigenschaft "modified" auf YES festlegen.