| Feld | Länge in Byte | Datentyp | Beschreibung |
|---|---|---|---|
| Länge des Arbeitspufferbereichs | 2 | Binär | Die Länge des Segments. |
| Arbeitspufferbereichs-ID | 4 | Binär | Ein eindeutiger Name, der zum Identifizieren des Arbeitspufferbereichs für IMS verwendet wird. Dieser Name darf von MPP nicht geändert werden. |
| IMS-Transaktionsname | 8 | Zeichen | Der IMS-Transaktionsname für das EGL-Programm. |
| Segmentierungsstatusbyte (optional) | 1 | Hexadezimal | Dieses optionale Byte ist vorhanden, wenn "spaSize=n" und "spaStatusBytePosition=15" angegeben wurden und es sich um eine verzögerte Umschaltung handelt. Es gibt an, ob die Daten in der Arbeitsdatenbank gespeichert wurden. |
| Programmdaten | Variable | Variable | Dieser Bereich enthält den Datensatz, der an die Anweisung "transfer to transaction" übergeben und vom Zielprogramm in seinem Eingabedatensatz empfangen wurde. |
| Segmentierungsstatusbyte (optional) | 1 | Hexadezimal | Dieses optionale Byte ist vorhanden, wenn es sich um eine direkte Umschaltung handelt und wenn "spaSize=n" und "spaStatusBytePosition=n" angegeben wurden. (Die Position des Statusbyte ist entweder immer "15", wenn das Statusbyte den Daten vorangestellt wird, oder mit der Größe des Arbeitspufferbereichs identisch, wenn das Statusbyte nach den Daten folgt.) In diesem Fall werden die Inhalte des Byte ignoriert. Dieses optionale Byte ist auch vorhanden, wenn "spaSize=n" und "spaStatusBytePosition=n" angegeben wurden und es sich um eine verzögerte Umschaltung handelt. In diesem Fall wird angegeben, ob die Daten in der Arbeitsdatenbank gespeichert wurden. |
Im folgenden Beispiel wird die COBOL-Definition für einen Arbeitspufferbereich dargestellt, der entweder in einer verzögerten oder direkten Programm-zu-Programm-Nachrichtenumschaltung für eine interaktive Verarbeitung übergeben wurde. Denken Sie daran, dass PL/I ein 4 Byte langes Feld und kein 2 Byte langes Feld wie für COBOL benötigt. Weitere Informationen finden Sie in der IMS/VS-Dokumentation für Ihr System. Die spezifischen Feldnamen werden nur zu Darstellungszwecken verwendet. Die tatsächlichen Feldnamen variieren je nach generiertem Code.
* SPA IO area.
01 SPA.
05 SPA-LENGTH PIC S9(4) COMP.
05 SPA-ID PIC S9(9) COMP.
05 IMS-TRAN-NAME PIC X(8).
05 CSP-OPTIONAL-SSM-BYTE PIC X(1). Siehe Hinweis 1.
05 CSP-APPL-WS-DATA.
10 data-item-1 PIC ........................
10 data-item-2 PIC ........................
.
.
.
05 CSP-OPTIONAL-SSM-BYTE PIC X(1). Siehe Hinweis 2.
Die in der Tabelle oben als "Programmdaten" identifizierten Daten werden als Eingabedatensatz für das Zielprogramm behandelt. Mit diesem Verfahren kann ein Nicht-EGL-Programm Daten im Arbeitspufferbereich speichern und zu einem EGL-Programm (oder zu einer Reihe von EGL-Programmen) umschalten, die die Arbeitspufferbereichsdaten verwenden oder ändern. Das EGL-Programm kann schließlich zurück zum Nicht-EGL-Programm mit Informationen vom EGL-Programm, das im Arbeitspufferbereich enthalten ist, schalten. Befolgen Sie die IMS-Einschränkungen im Hinblick auf die Größe des Arbeitspufferbereichs.
In der folgenden Tabelle wird definiert, wie der Arbeitspufferbereich, der in der Anweisung "transfer to transaction" oder "show" angegebene Datensatz und der Eingabedatensatz für das Zielprogramm für eine interaktive Verarbeitung zusammengehören.
| Funktion | Größe des Datenbereichs vs. Größe des Übertragungsdatensatzes | Ergebnisse |
|---|---|---|
| transfer to transaction | Die Größe des Programmdatenbereichs im Arbeitspufferbereich überschreitet die Größe des EGL-Datensatzes in der Anweisung "transfer to transaction" oder "show". | Der Programmdatenbereich im Arbeitspufferbereich wird unter Verwendung des gesamten EGL-Datensatzes erstellt. Die verbleibenden Byte des Arbeitspufferbereichs werden als leer festgelegt. |
| transfer to transaction | Die Größe des Programmdatenbereichs im Arbeitspufferbereich ist kleiner als die Größe des EGL-Datensatzes in der Anweisung "transfer to transaction". | Zusätzliche Byte des EGL-Datensatzes werden abgeschnitten. |
| Initialisierung des Eingabedatensatzes des Zielprogramms | Die Größe des Programmdatenbereichs im Arbeitspufferbereich überschreitet die Größe des EGL-Datensatzes im Eingabedatensatz für das Zielprogramm. | Zusätzliche Byte des Programmdatenbereichs im Arbeitspufferbereich werden abgeschnitten, wenn er in den Eingabedatensatz verschoben wird. |
| Initialisierung des Eingabedatensatzes des Zielprogramms | Die Größe des Programmdatenbereichs im Arbeitspufferbereich ist kleiner als die Größe des EGL-Datensatzes im Eingabedatensatz für das Zielprogramm. | Der Eingabedatensatz wird vom Programmdatenbereich im Arbeitspufferbereich aus und die verbleibenden Byte des Eingabedatensatzes werden anhand des Datentyps initialisiert. |