PDA

View Full Version : Problem mit OVRDBF?



MatthiasK
06-02-06, 14:43
Hallo zusammen,

ich habe folgendes Problem:

PGM A ruft mit CALL PGM B und PGM B ruft mit CALL PGM C auf. PGM C ist ein CL-Modul welches dann mit CALLPRC weitere Programm aufruft, diese weiteren Programme übernehmen die Verarbeitung. Anschließend erfolgt der Rücksprung zu PGM A
Danach ruft PGMA mit CALL PGM C auf. Durch Übergabeparameter wird gesteuert, dass jetzt einige OVRDBF mit OVRSCOPE(*JOB) im PGM C gemacht werden. Der OVRDBF wird nur gemacht um ein anderes Member zu lesen.
Jetzt ruft PGM C wieder mit CALLPRC die gleichen Programme auf.

Diese Programme laufen alle in der gleichen benannten Aktivierungsgruppe. Das Problem ist, daß beim 2. Aufruf von PGM C die weiteren Programme nicht auf die überschriebenen Dateien zugreifen, sondern noch auf die vorigen Dateien, die aus irgendeinem Grund noch offen sind, obwohl die Programme mit INLR verlassen werden.

Wie kann ich denn die Programme dazu bewegen, aus den überschriebenen Dateien zu lesen.

Vielen Dank für Eure Hilfe.

Rincewind
06-02-06, 14:55
Hi,


wenn es nicht die DFTACTGRP ist, probier mal
RCLACTGRP *ELIGIBLE

bzw RCLACTGRP aktivierungsgruppenname.

Da die Dateien erst geschlossen werden wenn die Aktivierungsgruppe beendet wird.

Gruß
Rince

P.s. Es hilft auch nach dem begriff RCLACTGRP hier zu suchen, da dort dann noch bessere Erklärungen gegeben wurden.

MatthiasK
06-02-06, 15:09
Hi,

das funktioniert aber nicht, weil auch das PGM A in dieser Aktivierungsgruppe läuft, und folglich diese nicht gelöscht werden kann.

Rincewind
07-02-06, 10:54
Ok..

Datei selbst öffnen und schliessen ?

oder

Programm C in anderer Aktivierungsgruppe laufen lassen (evtl über Zwischenpgm das andere Aktivierungsgruppe hat aufrufen).

Gruss
Rince

Fuerchau
07-02-06, 12:24
Die sicherste Möglichkeit ist auf jeden Fall USROPN !

MatthiasK
08-02-06, 12:51
Hallo,

ich hab das Steuerprogramm jetzt in einer anderen Aktivierungsgruppe laufen lassen und nach jedem Aufruf einen RCLACTGRP gemacht. Jetzt funktionierts auch.

Allerdings habe ich auch eine Aussage von IBM daß die Dateien eigentlich geschlossen sein müßten, wenn die Programme mit *INLR = *ON beendet werden. Warum das hier nicht der Fall ist, erschließt sich noch nicht so ganz. Ich bleibe aber an dem Problem dran.
Hier noch ein Auszug aus dem ILE RPG Programmers Guide:

"When a main procedure ends normally, the following occurs:

v The Factor-2-to-Result-field move of a *ENTRY PARM operation is performed.

v All arrays and tables with a ’To file name’ specified on the Definition specifications, and all locked data area data structures are written out.

v Any data areas locked by the procedure are unlocked.

v All files that are open are closed.

v A return code is set to indicate to the caller that the procedure has ended normally, and control then returns to the caller."

Danke für die Unterstützung.