PDA

View Full Version : Anzeige von Datensätzen verspätet?



Seiten : [1] 2

IBSCPO
16-06-08, 11:22
Hallo zusammen,
es klingt etwas kömisch.

Es passiert folgendes:
Ich habe ein Log. File in einem RPG Programm eingebaut, in das Daten geschrieben werden, wenn bestimmte Kriterien zutreffen. Gleichzeitig lasse ich mir durch ein Programm was sofort nach dem WRITE aufgerufen wird, einen Nachricht an meinen MSGQ senden. Nun ist es so, dass ich einen Nachricht erhalte, aber es wird kein Datensatz in die Datei geschrieben.:confused:


Oder kann es sein, dass der Datensatz in der Log.- File vorhanden ist, dieser nur mittels QRY nicht angezeigt wird?

Hat jemand eine Idee?

MfG
Carsten

Pikachu
16-06-08, 12:01
Das könnte vielleicht an der Blockung liegen. Ist in der Umwandlungsliste dieses Programms vielleicht die Meldung "RNF7086 - RPG bearbeitet Blocken für die Datei. INFDS wird nur fortgeschrieben, wenn Datenblöcke übertragen werden." enthalten?

Fuerchau
16-06-08, 12:04
Betrachte mal die Umwandlungsliste.
RPG blockt ggf. bei O-Dateien, so dass die Daten erst dann verfügbar sind, wenn der Block tatsächlich geschrieben wird.

Bei der Umwandlung kann man auch irgendwo angeben, dass nicht geblockt werden soll.

Alternativ öffnet man die Datei für Update (UF).
Da der Compiler dann häufig meckert mache ich eine Pseudo-BEGSR, die die angemeckerten Befehle (READ/WRITE/UPDAT/DELET) enthählt.

Khholm
16-06-08, 14:16
RPG blockt bei Ausgabedateien. Verhinderrn kann ich das evtl. in den Keywords in der Dateibeschreibung (F-zeilen) mit dem Keyword:

BLOCK(*NO)

RobertMack
16-06-08, 14:29
FEOD (force end of data)

Khholm
16-06-08, 14:34
Für die Datei
FRCRATIO = 1 setzen (mit CHGPF), dann müßte das auch gehen

Fuerchau
16-06-08, 14:48
FRCRATIO(1) hat allerdings Performancenachteile, da damit nicht nur Blockung sondern auch Pufferung ausgeschaltet wird.
FRCRATIO erzwingt das sofortige Schreiben auf Platte.

Alternativ kann man noch mit
OVRDBF ... SEQONLY(*NO) arbeiten.

Bogomil
17-06-08, 12:17
Hallo Carsten,

das von Dir beschriebene Phänomen hatte ich auch schon. Die Ursache, dass mit Query nichts angezeigt wird, liegt bei Query selbst.
Entsprechend dem Einspeicherkonzept der AS400 ist es normalerweise egal, wo ein Datensatz legt (Cache oder Festplatte) und er ist verfügbar (weshalb Du ja die Nachricht erhälst).
Willst Du die Einträge mit Query sehen, musst Du die Blockung ausschalten. Die Wege sind ja bereits beschrieben.

MfG
Bogomil

Pikachu
17-06-08, 13:01
Die Ursache, dass mit Query nichts angezeigt wird, liegt bei Query selbst.
Nein, denn ein DSPPFM zeigt diese neuen Datensätze auch nicht an.

Fuerchau
17-06-08, 13:32
RPG schreibt den Block erst, wenn dieser voll ist.
Da kann auch DSPPFM/SQL/Query nichts dran ändern.

Sorge beim Output dafür (wie oben beschrieben), dass nicht geblockt wird !