Passen Sie EGL-Programmelemente nach Bedarf an, um COBOL-Programme zu generieren, mit denen auf die Programmspezifikationsblöcke (PSBs) und Programmkommunikationsblöcke (PCBs) Ihres Unternehmens zugegriffen werden kann. Diese Blöcke werden Laufzeit-PSBs und Laufzeit-PCBs genannt.
Während eines Aufrufs können Sie die Variable 'dliLib.psbData' zum Übergeben des PSBs verwenden. Dabei werden ein Name und die dazugehörige Adresse übergeben.
In diesem Fall tritt kein Festschreibungspunkt auf und in EGL wird der geplante PSB an das Zielprogramm übergeben.
DB-PCBs sind im Laufzeit-PSB gültig.
Datenbank- und GSAM-PCBs sind ebenfalls gültig.
DB-PCBs sind ebenfalls gültig.
Für z/OS Batch ist in EGL erforderlich, dass der erste Laufzeit-PCB der Eingabe-/Ausgabe-PCB ist. Stellen Sie sicher, dass CMPAT vom IMS-Systemprogrammierer beim Entwickeln des PSBGEN-Jobs auf YES gesetzt wird.
In EGL müssen außerdem zwei weitere PCBs eines beliebigen Typs im Laufzeit-PSB vorhanden sein. Datenbank- und GSAM-PCBs sowie alternative PSBs sind ebenfalls gültig. In Ihrem Code dürfen jedoch keine alternativen PSBs verwendet werden. Wenn diese gültig sind, wird die Verwendung desselben Laufzeit-PSBs für z/OS Batch und IMS-BMPs erlaubt.
EGL lässt sich für ursprünglich zwei oder drei Ein-/Ausgabe- und Datenfernverarbeitungs-PCBs anpassen, wenn diese im PSB-Datensatz deklariert werden, sie sind jedoch nicht im Laufzeit-PSB vorhanden. Durch diese Anpassung können Sie dasselbe Programm über unterschiedliche Umgebungen hinweg generieren. In Bezug auf CICS zum Beispiel werden die ursprünglichen Ein-/Ausgabe- und alternativen PCB-Datensätze von der EGL-Laufzeit ignoriert, wenn sie in Ihrem Code vorhanden sind.
ELAALT PCB TYPE=TP,MODIFY=YES
PCB TYPE=TP,MODIFY=YES,EXPRESS=YES,PCBNAME=ELAEXP
ELAPCB LABEL=ELAWORK
In diesem Fall müssen Sie die PCB-Datensätze nicht in Ihren PSB-Datensatzabschnitt aufnehmen.
PCB TYPE=TP,MODIFY=YES,PCBNAME=MYALTPCB
PCB TYPE=TP,MODIFY=YES,EXPRESS=YES,PCBNAME=MYEXPPCB
ELAPCB LABEL=MYWORKDB
Record MYPSB type PSBRecordPart
ELAALT ALT_PCBRecord {@PCB {pcbType = PCBKind.TP, PCBName = "MYALTPCB"}};
ELAEXP ALT_PCBRecord {@PCB {pcbType = PCBKind.TP, PCBName = "MYEXPPCB"}};
ELAWORK DB_PCBRecord {@PCB {pcbType = PCBKind.DB, PCBName = "MYWORKDB"}};
end
Wenn das Feld 'callInterface' auf AIBTDLI festgelegt ist, müssen Sie nur die PCB-Datensätze deklarieren, die in Ihrem Programm verwendet werden, sowie alle erforderlichen PCBs, die einen anderen Laufzeitnamen als den in EGL erforderlichen Namen besitzen. Diese Regel gilt für Hauptprogramme und aufgerufene Programme.
Wenn Sie das Feld 'callInterface' auf CBLTDLI festlegen, erfolgt der Zugriff auf einen bestimmten Laufzeit-PCB anhand der Adresse statt anhand des Namens.
Wenn es sich beim Zielsystem um ein IMS/VS-System handelt und Sie eine DL/I-Datenbank als EGL-Arbeitsdatenbank verwenden, müssen Sie die Datenbankhierarchieinformationen nicht in den EGL-PCB-Datensatz aufnehmen und der IMS-Systemprogrammierer sollte beim Definieren des Laufzeit-PSBs das Makro ELAPCB verwenden. (Geben Sie zur Generierungszeit an, dass es sich bei der Arbeitsdatenbank um eine DL/I-Datenbank handelt, indem Sie den Standardwert für die Erstellungsdeskriptoroption 'workDBType' akzeptieren.)
Wenn Sie die Eigenschaften 'pcbParms' und 'psbParm' in einem aufgerufenen Programm angeben, werden die entsprechenden Adressen im späteren Teil mit den PCB-spezifischen Adressen im ersten Teil überschrieben. Der übergebene PSB-Datensatz wird ignoriert.
Wenn Sie ELAALT als Namen für einen anderen als den zweiten Datensatz verwenden oder wenn Sie ELAEXP als Name für einen anderen als den dritten Datensatz verwenden, hat der Name jeweils Vorrang. In EGL wird angenommen, dass der benannte PCB-Datensatz sich auf den entsprechenden Typ des Laufzeit-PCBs bezieht.