Commitsteuerung während der Entwicklung für iSeriesC

Während der Programmentwicklung für iSeriesC können Sie die Commitsteuerung explizit im Programm angeben. In IBM® Rational EGL Server for IBM i werden jedoch einige implizite Commitsteuerungsfunktionen durchgeführt, wenn das Programm ausgeführt wird.

Explizite Commitsteuerung

Während ein Programm in EGL definiert wird, können Sie explizite Logiken zum Absetzen von Commits und Rollbacks sowohl für native Datenbankdateien in IBM i (mit relativen, seriellen und indizierten Datensätzen) als auch für SQL-Tabellen angeben. Diese Logik besteht aus Aufrufen der Systemfunktionen 'sysLib.commit()' und 'sysLib.rollback()'. Sie können die Systemvariable 'converseVar.commitOnConverse' auch auf '1' festlegen. Dadurch werden Änderungen festgeschrieben, wenn einem Benutzer durch eine CONVERSE-Anweisung ein Formular angezeigt wird.

Durch explizite Verwendung der Commitsteuerung wird die aktuelle Arbeitseinheit mit Wiederherstellung beendet und eine weitere gestartet. Durch Commitsteuerungsservices werden Datensätze freigegeben und Dateisperren beibehalten, wenn Änderungen festgeschrieben oder rückgängig gemacht werden.

Implizite Commitsteuerung

In bestimmten Fällen wird in EGL automatisch eine Commitsteuerung durchgeführt. Diese implizite Commitsteuerung ist von allen Instanzen expliziter Commitsteuerung unabhängig. Wenn Sie Programme entwerfen, können Sie die implizite Commitsteuerung nutzen und die Verwendung expliziter Commitsteuerung vermeiden. In der folgenden Tabelle ist die in EGL durchgeführte Commitsteuerungsverarbeitung zusammengefasst.

Tabelle 1. Verarbeitung impliziter Commits, Rollbacks und von 'SQL CLOSE CURSOR'
Ursache für das Beenden des Programms Implizite Aktion Hauptprogramm Aufgerufenes Programm
TRANSFER TO ACTION oder SHOW sysLib.commit() ja Nicht vorhanden
SQL CLOSE CURSOR ja Nicht vorhanden
TRANSFER TO PROGRAM sysLib.commit() nein Nicht vorhanden
SQL CLOSE CURSOR ja Nicht vorhanden
EXIT PROGRAM sysLib.commit() ja nein
SQL CLOSE CURSOR ja Ja, wenn die Ausführungseinheit durch das Programm gestartet wurde
ERROR sysLib.rollback() ja nein
SQL CLOSE CURSOR ja Ja, wenn die Ausführungseinheit durch das Programm gestartet wurde

Feedback