commit()

Die Systemfunktion 'sysLib.commit()' speichert Aktualisierungen an wiederherstellbaren Ressourcen wie bestimmten Dateien und Datenbanken.

In den meisten Fällen führt EGL eine einphasige Festschreibung durch, die sich wiederum auf jeden wiederherstellbaren Manager auswirkt. In den meisten Fällen werden durch eine solche Festschreibung die Leseposition und die Aktualisierungssperren in allen Dateien bzw. Datenbanken freigegeben. Informationen dazu, wann eine implizite Festschreibung stattfindet, enthält Logische Arbeitseinheit (LUW). Sie können die Leistung verbessern, indem Sie eine unnötige Verwendung von 'sysLib.commit()' vermeiden. Weitere Informationen finden Sie unter 'Kompatibilität' in diesem Thema. Lesen Sie auch die Erläuterungen zur Segmentierung für unterschiedliche Benutzerschnittstellentechnologien, indem Sie die Links der zugehörigen Referenz am Ende dieses Themas aufrufen.

Syntax

  sysLib.commit( )

Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität für 'commit()'
Plattform Problem
CICS für z/OS
  • Die Ausführung von 'sysLib.commit()' resultiert in einem CICS-Synchronisationspunkt (SYNCPOINT), der eine zweiphasige Festschreibung ausführt, die in allen Ressourcenmanagern koordiniert wird.
  • Wenn ein Aufruf an ein fernes COBOL-Programm eine clientgesteuerte Arbeitseinheit (UOW) einschließt, dann speichert ein generiertes Programm oder ein generierter Wrapper von Java™ auch die Aktualisierungen, die von einem fernen CICS-basierten COBOL-Programm vorgenommen werden (einschließlich Aktualisierungen an wiederherstellbaren CICS-Dateien). Weitere Informationen finden Sie im Handbuch für EGL-Generierung unter dem Thema 'luwControl'.
  • Über Fernzugriff aufgerufene Stapelverarbeitungsprogramme (Programme, die sich auf einem anderen System befinden als das aufrufende Programm) können die Funktion 'sysLib.commit()' aufrufen. Wenn Sie das Attribut 'luwControl' auf SERVER setzen, funktioniert die Festschreibung (Commit) ordnungsgemäß. Wenn Sie das Attribut auf 'CLIENT' setzen, löst EGL eine Laufzeitausnahmebedingung (RuntimeException) aus.
  • Je nach CICS-Dateidefinition und -Dateityp kann eine Datei eine wiederherstellbare Ressource sein.
COBOL-Generierung Wenn Sie die Option 'cursorWithHold' während des Zugriffs auf eine relationale Datenbank (SQL) verwenden, werden die Leseposition und die Aktualisierungssperren unter Umständen nicht freigegeben. Weitere Informationen hierzu finden Sie unter Überlegungen zu 'open' mit SQL und Überlegungen zu 'prepare' mit SQL.
IMS BMP
  • Bei transaktionsorientierter BMP wird 'sysLib.commit()' ignoriert. Weitere Informationen dazu, wann eine implizite Festschreibung stattfindet, finden Sie unter Logische Arbeitseinheit (LUW).
  • Bei stapelorientierter BMP resultiert 'sysLib.commit()' in einem DL/I-Basisaufruf CHKP, der eine zweiphasige Festschreibung ausführt, die in allen Ressourcenmanagern koordiniert wird. Der Inhalt von 'psbData.psbName' wird als Prüfpunkt-ID im Aufruf CHKP verwendet.
  • Ausgabedaten, die in eine serielle Datei geschrieben werden, die einem nicht sofort wirksamen alternativen Programmkommunikationsblock (PCB) zugeordnet ist, sind wiederherstellbar.
  • GSAM-Dateien sind bei Verwendung mit einem CHKP-Basisaufruf nicht wiederherstellbar. Um GSAM-Dateien wiederherstellbar zu machen, müssen Sie eine der folgenden Systemfunktionen verwenden, um einen Aufruf eines symbolischen DL/I-Prüfpunkts auszugeben:
    • dliLib.AIBTDLI()
    • dliLib.EIBTDLI()
    • vgLib.VGTDLI()
IMS/VS Die Funktion 'sysLib.commit' wird in dieser Umgebung ignoriert. Ausführliche Informationen dazu, wann eine implizite Festschreibung stattfindet, finden Sie unter Logische Arbeitseinheit (LUW).
iSeries COBOL Wenn das Programm SQL-Anweisungen ausgegeben hat, resultiert 'sysLib.commit()' in einer SQL-Anweisung COMMIT WORK (geänderte Daten festschreiben). Wenn das Programm keine SQL-Anforderungen ausgegeben hat, resultiert 'sysLib.commit()' in einem Befehl, der zu einem iSeries-Befehl COMMIT äquivalent ist. Ausführliche Informationen dazu, wann eine implizite Festschreibung stattfindet, findet Sie unter Logische Arbeitseinheit (LUW).
Java-Generierung
  • Die Funktion 'sysLib.commit()' schreibt Änderungen an relationalen Datenbanken und WebSphere MQ-Nachrichtenwarteschlangen fest sowie Änderungen, die an fernen Serverprogrammen vorgenommen wurden, die mithilfe einer clientgesteuerten Arbeitseinheit (UOW) aufgerufen wurden.
JavaScript-Generierung Die Funktion 'sysLib.commit' wird nicht unterstützt.
WebSphere MQ-Nachrichtenwarteschlangen
  • Aktualisierungen an Nachrichtenwarteschlangen sind nur dann wiederherstellbar, wenn die Eigenschaft 'includeMsgInTransaction' im Abschnitt 'MQRecord' auf YES gesetzt ist.
  • Die Anweisungen zum Abrufen und Hinzufügen von Nachrichten ('get' und 'add') werden beide von den Funktionen 'commit()' und 'rollback()' für wiederherstellbare Nachrichten beeinflusst. Wenn Sie die Funktion 'rollback()' nach der Anweisung 'get' für eine wiederherstellbare Nachricht ausgeben, wird die Nachricht erneut in die Eingabewarteschlange gestellt, damit die Eingabenachricht nicht verloren geht, wenn die Transaktion nicht erfolgreich abgeschlossen wird. Außerdem gilt: Wenn Sie die Funktion 'rollback()' nach der Anweisung 'add' für eine wiederherstellbare Nachricht ausgeben, wird die Nachricht aus der Warteschlange gelöscht.
z/OS batch
  • Wenn das Programm keinen Programmspezifikationsblock (PSB) angegeben hat, aber SQL-Anforderungen ausgegeben hat, resultiert der Aufruf der Funktion 'sysLib.commit()' in einer SQL-Anweisung COMMIT WORK (geänderte Daten festschreiben).
  • Wenn das Programm einen Programmspezifikationsblock (PSB) angegeben hat, resultiert der Aufruf der Funktion 'sysLib.commit()' in einem DL/I-Basisaufruf CHKP, der eine zweiphasige Festschreibung ausführt, die in allen Ressourcenmanagern koordiniert wird. Der Inhalt von 'psbData.psbName' wird als Prüfpunkt-ID im Aufruf CHKP verwendet.
  • GSAM-Dateien sind bei Verwendung mit einem CHKP-Basisaufruf nicht wiederherstellbar. Um GSAM-Dateien wiederherstellbar zu machen, müssen Sie eine der folgenden Systemfunktionen verwenden, um einen Aufruf eines symbolischen DL/I-Prüfpunkts auszugeben:
    • dliLib.AIBTDLI()
    • dliLib.EIBTDLI()
    • vgLib.VGTDLI()

Feedback