-
RPG Programm ohne commit und Serviceprogramm mit commit
Hallo in die Runde,
wir haben gerade folgende Frage:
In einem RPG Programm das ohne commit Steuerung läuft
soll jetzt eine Prozedur aus einem Serviceprogramm aufgerufen werden.
Das Serviceprogramm ist mit der SQL Set Option commit=*chg erstellt.
Frage 1:
Wenn diese Prozedur im RPG Programm eingebunden ist
und das Programm normal endet wird dann vom System ein automatischer commit gemacht ?
Frage 2:
Wenn diese Prozedur im RPG Programm eingebunden ist
und das Programm nicht normal endet wird dann vom System ein automatischer rollback gemacht ?
Gruß
Michael
-
Szenarien dieser Art sollte man vermeiden.
Zu 1 und 2:
Automatische Commits gibt es generell nicht. Wenn eine ACTGRP oder ein Job endet, wird ein offener Commit mit Rollback geschlossen.
Konsequenzen hängen vom Aufrufer ab.
Verwendet man dort ausschließlich RLA (also F-Bestimmungen) ohne Commit werden diese auch ohne Commit/Rollback-Möglichkeit verarbeitet.
Rufst du ein Programm mit Commit auf ist bei RLA ein manueller STRCMTCTL erforderlich sonst scheitert bereits der Open. Ist das Gerufene mit SQL wird intern STRCMTCTL automatisch gestartet und alles läuft unter Commit.
Macht der Service einen Return, bleibt die Transaktion offen bis zum Ende. Bei wiederholten Aufrufen ohne Commit erhöhen sich die Anzahl Sperren für den Rest der Welt, was dort zu Lock-Timeouts führen wird.
Die Dateien bleiben oberhalb weiter ohne Commit.
Ist der Aufrufer in SQL ohne Commit kann der Service scheitern, da ja die aktuelle Transaktion auf *NONE und nicht auf *CHG steht. Ich glaube nicht, das hier ein Automatismus besteht.
Eine Transaktion wird i.d.R. erst bei der Durchführung des 1. SQL's gestartet. Rufst du den Service zuerst auf kann es sein, dass der Rufer anschließend mit seinen SQL's entweder scheitert oder nun auch mit *CHG arbeitet.
Ausprobiert habe ich das noch nie, da solche Szenarien erst gar nicht angedacht werden sollten.
Wenn du das trennen willst, musst du in ACTGRP's denken.
Ein Service arbeitet i.d.R. mit *CALLER als ACTGRP. Musst du den Service nun nutzen benötigst du einen Wrapper mit eigener ACTGRP oder *NEW, der dann den Service aufruft. Der Wrapper muss dann auch einen Commit machen.
-
... "automatische Commits" gibt es auf der AS400 leider doch, seht euch mal die defaults von RCLACTGRP an, da steht bei OPTION *NORMAL, was bedeutet, dass offene Transaktionen mit commit abgeschlossen werden (die müssen besoffen oder bekifft gewesen sein).
Im default ist das commitlevel Eigenschaft der ACTGRP, was auch bedeutet, dass nach einer Änderung des commitlevels, sei es durch Aktivierung eines SRVPGMs oder durch set transaction (geht nur außerhalb einer transaction), das dann innerhalb dieser ACTGRP bis zur nächsten Änderung gilt.
Verwendet man SQL für die Datenbankoperationen, ist es am einfachsten, immer mit commit zu arbeiten - auch wenn man öfter das Gegenteil erzählt bekommt. Programme, die dabei Daten fortschreiben und nicht commit machen, sind dann commit-slaves und es muss sichergestellt werden, dass im callstack auf vorheriger Ebene ein commit-master sitzt, der für das beenden von Transaktionen per commit oder rollback zuständig ist.
Daten fortschreiben mit SQL ohne commit gehört mittlerweile zu den beliebtesten Kunstfehlern, die man sogar in "Lehrbüchern" und Schulungsunterlagen findet.
D*B
-
Wobei letzteres sogar noch explizit mit "update/insert/delete .... with NC" zwischendurch möglich ist.
-
Zitat von Fuerchau
Wobei letzteres sogar noch explizit mit "update/insert/delete .... with NC" zwischendurch möglich ist.
... das ist eine DB2 Erweiterung und gilt nur für das eine Statement, ohne das commit level zu ändern.
Similar Threads
-
By Rathjen72 in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 04-01-22, 10:48
-
By dholtmann in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 07-03-16, 15:44
-
By Etherion in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 12-08-14, 12:09
-
By Allrounder in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 05-05-10, 12:55
-
By MMeyer in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 16-03-07, 07:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks