Anmelden

View Full Version : IFS und Commit



mk
23-02-15, 10:45
Hallo zusammen,

es ist ein wenig Verwirrung aufgekommen :-)

Beispiel:
Ich habe einen Job mit dem Aufbau:

exec sql commit;

Monitor;

if bestellungVorhanden() ;
if not istUebernahmeJobimSystemAktiv( ) and
not IfsXmlDatenListe() ;
logg_aMsg('error':'Fehler bei XML Erstellung ' );
ENDIF;
Endif;

on-error *all;
exec sql rollback;
ENDMON;

exec sql commit;

*inlr = *on;
return;

Das Programm ( der Job ) erstellt eine XML Datei auf dem IFS .

Wenn der Job abgebrochen wird soll ein Rollback durchgeführt werden.

Frage: Ist ein Rollback für eine IFS Datei möglich ?

Gruß
Michael

Fuerchau
23-02-15, 10:54
Generell nein.
Man kann nur in einer DB-Tabelle einen DATALINK erstellen, der auf ein IFS-Objekt verweist. In diesem Fall ist das Objekt gegen löschen gesperrt.

Per API kann man eine Commit-Ressource (ein Programm) definieren, dass im Commit/Rollback-Fall aufgerufen wird um dann entsprechende Aktionen auszuführen.

Fuerchau
23-02-15, 10:56
Noch zur Ergänzung:
Für RPGLE gibt's auch noch ein API.
Mit diesem kann man ein Exit-Programm definieren, dass auf jeden Fall auch bei Jobabbruch aufgerufen wird.
Dies kann dann auch entsprechend aufräumen.

BenderD
23-02-15, 11:36
... sollte mich wundern, lässt sich aber leicht verifizieren: man braucht ja nur so ein XML Teil füllen lassen und sagt dann Rollback - wenn das Teil im IFS weg ist, dann funzt es, wenn nicht, dann nicht!
@Exit Handler: den braucht's eigentlich nur im Falle eines Programm Abbruchs, ansonsten kann man ja im on-error Zweigt das Teil im IFS löschen.
Wenn man denn einen Commit Exit verwendet, dann zieht der auch beim Abbruch. ist aber ein wenig tricky, da man ja im Allgemeinen nicht weiß, was man da löschen soll. Das Handling mit dem API QTNADDCR ist ebenfalls ein wenig tricky, da das ja auf ACTGRP Ebene ziehen muss. Wer sichs antun will, kann sich das im native Teil von ArdGate (-> QRPGLESRC.JDBCGATE und QRPGLESRC.CCEXIT) ansehen.
CEE4RAGE braucht man hier nicht.

D*B

mk
23-02-15, 15:20
Hallo,

definitiv räumt der Rollback das erstellte XML File nicht weg.

gruß
Michael

Fuerchau
23-02-15, 15:57
Versuche mal ein STRJRN für das Verzeichnis, das könnte dann funktionieren.