Wenn Sie nicht wiederherstellbare Ressourcen wie beispielsweise serielle Dateien unter Windows 2000 ändern, sind solche Änderungen relativ permanent. Weder Ihr Code noch EGL-Laufzeitservices können diese Änderungen ohne Benachrichtigung widerrufen. Wenn Sie wiederherstellbare Ressourcen wie beispielsweise Datenbanken ändern, kann Ihr Code bzw. können EGL-Laufzeitservices diese Änderungen entweder festschreiben (Commit-Operation), um sie permanent zu machen, oder rückgängig machen (Rollback-Operation), um zu dem Inhalt zurückzukehren, der gültig war, als zuletzt Änderungen festgeschrieben wurden.
Wenn das Programm in einer Transaktionsumgebung ausgeführt wird (CICS, IMS oder iSeries), gibt EGL ein Commit-Operation für die Umgebung aus. Diese Operation führt ein zweiphasiges Commit aus, das für alle Ressourcenmanager und alle Programme in der Ausführungseinheit koordiniert wird. In nicht transaktionsorientierten Umgebungen führt EGL ein einphasiges Commit aus, das jeden wiederherstellbaren Ressourcenmanager einzeln aufruft.
ELARMIOP NLS=ENU,EOF=N,SCFOLD=Y,IMSESA=N,SEGMSG=N, X
MSGTRN=ELAE,TRBUF=64,TSQUE=32,RRSAF=Y
Weitere Details enthält die DB2-Dokumentation für RRSAF.
Weitere Details enthält die DB2-Dokumentation für RRSAF.
| Plattform | Problem |
|---|---|
| Java™-Generierung |
|
| CICS | In einer CICS-Ausführungseinheit ist jeweils immer nur eine
DB2 UDB-Datenbank verfügbar. Eine automatische Verarbeitung erfolgt in den folgenden Situationen:
Eine
COMMIT-Operation wird in den folgenden Fällen im Zusammenhang mit der DL/I-Verarbeitung ausgeführt:
|
| IMS BMP | 'sysLib.commit()' wird für transaktionsorientierte BMP-Programme ignoriert, in denen das Programm eine
Anweisung 'get next' verwendet, um eine serielle Datei zu lesen, die dem Eingabe-/Ausgabe-PCB zugeordnet ist. Für diese Programme
führt das System die Commit-Operation in einem der folgenden Fälle aus:
GSAM-Dateien sind bei Verwendung mit einem CHKP-Basisaufruf nicht wiederherstellbar. Um GSAM-Dateien wiederherstellbar zu machen, verwenden Sie 'dliLib.AIBTDLI()', 'dliLib.EGLTDLI()' oder 'vgLib.VGTDLI()' für einen symbolischen Prüfpunkt anstelle von 'sysLib.commit()'. |
| IMS/VS | 'sysLib.commit()' wird ignoriert. Die
Verarbeitung von Commits erfolgt nur an den folgenden impliziten Commitpunkten:
Im Zusammenhang mit der logischen Arbeitseinheit (LUW)
führt ein expliziter Prüfpunktbefehl (CHXP) zu einem Aufruf 'get unique' (GU) an den Eingabe-/Ausgabe-PCB, der wiederum ein Commit auslöst. Beachten Sie
folgende Warnungen:
|
| iSeries COBOL | Eine implizite Commit-Operation wird in den folgenden Situationen ausgegeben:
Wenn das Programm SQL-Anforderungen ausgegeben hat, resultiert der Aufruf von 'sysLib.commit()' in einer SQL-Anweisung COMMIT WORK (geänderte Daten festschreiben). Wenn das Programm keine SQL-Anforderungen ausgegeben hat, resultiert der Aufruf von 'sysLib.commit()' in einem Befehl, der zu einem iSeries-Befehl COMMIT äquivalent ist. |
| z/OS Batch | Wenn das Programm keinen Programmspezifikationsblock (PSB) angibt, aber SQL-Anforderungen ausgegeben hat, resultiert der Aufruf von 'sysLib.commit()' in einer SQL-Anweisung COMMIT WORK (geänderte Daten festschreiben). Wenn das Programm einen PSB angibt, resultiert der Aufruf von sysLib.commit() in einem DL/I-Basisaufruf CHKP, der Änderungen für alle Datenbanken festschreibt. Der Inhalt der Struktur 'dliLib.psbData.psbName' fungiert als Prüfpunkt-ID im Aufruf CHKP. GSAM-Dateien sind bei Verwendung mit einem CHKP-Basisaufruf nicht wiederherstellbar. Um GSAM-Dateien wiederherstellbar zu machen, verwenden Sie 'dliLib.AIBTDLI()', 'dliLib.EGLTDLI()' oder 'vgLib.VGTDLI()' für einen symbolischen Prüfpunkt anstelle von 'sysLib.commit()'. |