In EGL-Programmen können alle Funktionen zur Wiederherstellung und für die Datenintegrität verwendet werden, die in DB2 in der iSeriesC-Umgebung bereitgestellt werden.
Die meisten Probleme bei der Commitsteuerung, die sich auf DB2-Programme auswirken, sind dieselben wie für Basisdatenbanken. In diesem Abschnitt werden einige Unterschiede beschrieben.
DB2-Datenbanken sind wiederherstellbare Ressourcen. Wenn durch Ihr Programm Änderungen an einer DB2-Tabelle vorgenommen werden und das Programm mit einer Commitsteuerung ausgestattet wurde (der Parameter COMMIT ist im Befehl CRTSQLCBLI [Create SQL ILE COBOL Object = SQL-ILE-COBOL-Objekt erstellen] nicht gleich *NONE), werden die Änderungen in der Datenbank festgeschrieben. Die Änderungen werden in der Datenbank festgeschrieben, wenn der Job oder die Aktivierungsgruppe endet oder wenn eine implizite oder explizite EGL-Festschreibung erfolgt. Weitere Informationen zur impliziten und expliziten Commitsteuerung finden Sie im Kapitel Hinweise zur Commitsteuerung von iSeriesC-Datenbanken.
Mit dem Parameter CMTSCOPE (Commit Scope = Festschreibungsumfang) im Befehl STRCMTCTL (Start Commitment Control = Commitsteuerung starten) wird der Umfang der Commitsteuerung als *JOB oder *ACTGRP definiert. Wenn die erste SQL-Anweisung ausgeführt wird, wird in DB2 der Befehl STRCMTCTL abgesetzt, sofern dies noch nicht geschehen ist. Wenn der Bereich für das Festschreiben vollständig ist, wird in DB2 der Befehl ENDCMTCTL (End Commitment Control = Commitsteuerung beenden) abgesetzt. Wenn Ihr Programm vor dem Ende der logischen Einheit oder LUW (Logical Unit of Work = logische Arbeit) beendet wird oder bevor ein expliziter EGL-Rollback angefordert wird, werden alle Änderungen, die seit dem Beginn der LUW vorgenommen wurden, zurückgesetzt.
Die Commitsteuerung für EGL-DB2-Programme wird durch den Parameter COMMIT im Befehl CRTSQLCBLI gesteuert. Wenn *NONE angegeben ist, wird das Programm ohne Commitsteuerung ausgeführt. *NONE muss angegeben werden, wenn im EGL-Programm der SQL-Befehl DROP COLLECTION, GRANT oder REVOKE in einer EXECUTE-Anweisung abgesetzt wird.
Der Standardwert für den COMMIT-Parameter im EGL-DB2-Vorbereitungsscript FDAPREP lautet *CHG. Dieses Script kann so angepasst werden, dass der Commitwert während der EGL-Programmgenerierung mithilfe eines symbolischen Benutzerparameters (SYSPARM) erstellt wird. Mit dieser Scriptänderung können einfache Varianten des COMMIT-Werts in mehreren Programmen vorgenommen werden. Weitere Informationen zum Ändern von Scripts finden Sie im EGL-Generierungshandbuch. Commitsteuerung mithilfe von DB2 unterscheidet sich nicht von der Commitsteuerung mithilfe von Basisdatenbankdateien, außer bei den hier genannten Ausnahmen.