In Nicht-CICS-Umgebungen wird die Terminierung eines Programmspezifikationsblocks (PSB) anders bearbeitet als in CICS-Umgebungen.
In den folgenden Abschnitten werden die PSB-Terminierung sowie die Verwendung eines alternativen PSB zur Ausführungszeit erläutert.
Während der Programmausführung für IMS/VS, IMS BMP und z/OS Batch wird bei der DL/I-Initialisierung ein einzelner PSB terminiert. Dieser PSB ist der einzige, der für einen Batch-Jobschritt oder eine IMS-Transaktion verfügbar ist.
Alle EGL-Programme und Nicht-EGL-Programme in der Ausführungseinheit müssen denselben PSB gemeinsam nutzen. Die Ausführungseinheit schließt alle Programme ein, die Sie aufrufen oder auf die Sie mit einer Anweisung 'transfer to program' die Steuerung übertragen. Bei IMS BMP und z/OS Batch schließt die Ausführungseinheit auch alle Programme ein, auf die Sie mithilfe einer Anweisung 'transfer to transaction' die Steuerung übertragen. Bei IMS/VS unterscheidet sich die Ausführungseinheit für ein Programm, auf das Sie mithilfe der Anweisung 'transfer to transaction' die Steuerung übertragen, von der Ausführungseinheit des übertragenden Programms.
Geben Sie bei IMS/VS den PSB in der IMS-Systemdefinition an. Der Name des IMS-PSB muss mit dem Programmnamen übereinstimmen. Der PSB wird am Beginn der IMS-Transaktion terminiert.
Geben Sie bei IMS BMP und z/OS Batch den Namen des PSB in der Jobsteuersprache (JCL) an, die den Batch-Job ausführt. Der PSB wird am Beginn des IMS BMP oder z/OS Batch-Jobs terminiert.
Eine logische Arbeitseinheit (LUW) endet, sobald ein Commitpunkt auftritt oder ein Rollback ausgeführt wird.
Bei z/OS Batch und IMS BMP besteht eine Ausführungseinheit aus allen EGL-Programmen und Nicht-EGL-Programmen, die mithilfe einer Anweisung 'transfer' oder 'call' die Steuerung untereinander übertragen. Bei Nicht-EGL-Programmen umfasst dies auch alle Übertragungen, die ein Makro XCTL oder eine Anweisung CALL des Betriebssystems verwenden.
Bei IMS/VS entspricht eine Ausführungseinheit einer einzelnen Transaktion und besteht aus allen EGL-Programmen und Nicht-EGL-Programmen, die mithilfe einer Anweisung 'transfer to program' oder 'call' die Steuerung untereinander übertragen. Bei Nicht-EGL-Programmen umfasst dies auch Übertragungen mit der Anweisung CALL.
Bei z/OS Batch geben EGL-Programme, die DL/I nicht verwenden, nur dann einen Commitpunkt aus, wenn das betreffende Programm Änderungen an einer SQL-Tabelle vorgenommen hat. Bei Änderungen an einer SQL-Tabelle, die von einem Nicht-EGL-Programm vorgenommen wurden, wird kein Commitpunkt ausgegeben.
Bei IMS/VS und transaktionsorientierten IMS BMP-Programmen (Programmen, die 'get next' verwenden, um eine dem Eingabe-/Ausgabe-PCB zugeordnete serielle Datei zu lesen) wird 'sysLib.commit' ignoriert. Ein Commitpunkt wird bei jedem Aufruf 'get unique' (GU) an den Eingabe-/Ausgabe-PCB ausgegeben.
Der tatsächliche DL/I-PSB-Name, den Sie zur Ausführungszeit verwenden, kann sich möglicherweise von dem Namen unterscheiden, den Sie in Ihrem PSB-Datensatz als PSB-Namen angegeben haben. Bei IMS/VS wird der tatsächliche Laufzeit-PSB von Ihrer IMS-Systemdefinition gesteuert und muss dem Namen des Programms entsprechen. Bei IMS BMP und z/OS Batch geben Sie den tatsächlichen Laufzeit-PSB in der Jobsteuersprache (JCL) an, die das Programm ausführt.
Wenn Ihr Programm den Typ von 'callInterface' auf CBLTDLI setzt, müssen Anzahl, Typ und Reihenfolge der PCBs im PSB-Datensatz den Informationen im Laufzeit-PSB entsprechen. Die Datenbankstrukturen müssen ebenfalls übereinstimmen, wenngleich die PCB-Datensatznamen nicht mit den Namen im Laufzeit-PSB übereinstimmen müssen. Weitere Informationen finden Sie unter EGL-Unterstützung für Laufzeit-PSBs und -PCBs.
Wenn Sie ein Stapelverarbeitungsprogramm (Batch-Programm) ausführen, können Sie 'sysLib.commit' verwenden, um Datenbankaktualisierungen in regelmäßigen Abständen festzuschreiben. Als Alternative können Sie auch 'dliLib.AIBTDLI', 'dliLib.EGLTDLI' oder 'vgLib.VGTDLI' verwenden, um die Funktionen für symbolischen Prüfpunkt und Neustart zu implementieren.
Sowohl 'sysLib.commit' als auch die Funktion für symbolischen Prüfpunkt schreiben Datenbankaktualisierungen fest. Mithilfe der Funktion für symbolischen Prüfpunkt können Sie jedoch auch Informationen speichern wie beispielsweise Kontrollsummen oder den Schlüssel des letzten Datenbankdatensatzes, der verarbeitet wurde, als ein Commitpunkt eintrat. Wenn das Programm nicht erfolgreich beendet wird, wird es auf den letzten Commitpunkt zurückgesetzt. Wenn Sie Informationen mithilfe eines symbolischen Prüfpunkts gespeichert haben, können Sie die gespeicherten Daten wiederherstellen, indem Sie beim Neustart des Programms den DL/I-Aufruf XRST für Neustart verwenden. Verwenden Sie diese Informationen, um die Verarbeitung an dem Punkt in der Datenbank wiederaufzunehmen, an dem die Verarbeitung zuvor gestoppt wurde.
Weitere Informationen zu den Funktionen für symbolischen Prüfpunkt und Neustart finden Sie im Handbuch für IMS-Anwendungsprogrammierer.