PDA

View Full Version : Update von Daten



Seiten : [1] 2

MR-BN
20-08-13, 13:53
hallo, ich habe ein Problem.
in einem ONLINE-JOB werden Daten in verschiedenen Dateien geschrieben. In einem nachfolgenden BATCH-Job werden diese Daten gelesen. Teilweise sind diese Daten dann nicht vollständig vorhanden. (auch mit einem DELAY von 30 Sec. nicht). Wo kann ich suchen.?

andreaspr@aon.at
20-08-13, 13:59
Hallo,

fehlendes commit?

Was genau bedeuted nachfolgenden BATCH-Job?
Wird der Job wirklich erst nachdem die Daten geschrieben wurden gestartet?

lg Andreas

Fuerchau
20-08-13, 14:01
Wenn die Daten in einem Programm per O-Datei geschrieben werden sind diese erst mal geblockt im Speicher.
Wenn der Block voll ist, landet dieser dann in der Datei.
Mit der Anweisung FEOD wird der Block zwangsweise ausgegeben.
In den F-Bestimmungen (ILE) kannst du auch BLOCK(*NO) angeben.

MR-BN
20-08-13, 14:06
unsere Jobs arbeiten alle ohne COMMIT-Steuerung und es handelt sich auch nicht um SQL-Tabellen, sondern um die "alten" Dateien.
Geschrieben werden die Daten in eine PF-Datei und gelesen aus einer LF-Datei.
zwischen dem Schreiben erfolgt das SUBMIT eines JOBs in dem diese Daten aus der log.Datei gelesen werden, und nicht da sind.
Prüft man das eine Minute später, ist alles o.k.

Fuerchau
20-08-13, 14:10
Ich habe auch nicht von SQL gesprochen!

Schau dir noch mal die F-Bestimmungen an und ggf. die Umwandlungslisten.

O-Dateien werden grundsätzlich geblockt!
D.h., ein Write speichert erst mal RPG-Intern den Datensatz.
Beim Close, Block voll oder FEOD werden die Daten erst tatsächlich geschrieben.

MR-BN
20-08-13, 14:28
hallo Herr Ferchau, das mit dem SQL bezog sich nicht auf Ihre Antwort, sondern auf die vorhergehende Frage.

Mittlerweile habe ich aufgrund der Bemerkungen in den entsprechenden Programmen gefunden, das diese mit RETURN verlassen wurden. Daher auch noch kein zurückschreiben des letzten Blockes. habe dieses jetzt auf LR geändert. und warte nun mal das Ergebnis ab.

Fuerchau
20-08-13, 14:42
Durch LR=*on werden eben alle Daten geschrieben, da ja ein Close gemacht wird.

Allerdings ist das trotzdem nicht sicher.
Wenn dein Programm (aus welchen Gründen auch immer) mal vorzeitig abschmiert, werden die offenen Datensätze auch nicht geschrieben.

Geblockte Verarbeitung ist eben immer kritisch.

MR-BN
20-08-13, 15:29
und was kann man da anders machen ?

conni-gs
21-08-13, 07:11
und was kann man da anders machen ?
Das steht doch in der ersten Antwort von Herrn Fuerchau.

Fuerchau
21-08-13, 08:20
Wie gesagt:
bei ILE BLOCK(*NO) in den f-bestimmungen.
Bei OPM-RPG gibt es dazu wohl eine Compileoption im CRTRPGPGM.