Anmelden

View Full Version : OVRPRTF FILE(QPDSPSFA) HOLD(*YES)



Robi
25-02-14, 10:00
Hi *all

habe hier ein seltsames Problem.
In einem CLLE wird folgendes gemacht:
OVRPRTF FILE(QPDSPSFA) HOLD(*YES)

WRKSPLFA FILE(&SPLFILE) JOB(&JOBNBR/&USER/&JOBNAME) +
SPLNBR(*LAST) CRTDATE(*LAST) OUTPUT(*PRINT)


Im Joblog stehen keine Fehler
RETURN /* RETURN wegen Ende des CL-Programms */
4400 - OVRPRTF FILE(QPDSPSFA) HOLD(*YES)
4600 - WRKSPLFA FILE(PGMA) JOB('831358'/USERA/B251425468)
SPLNBR(*LAST) CRTDATE(*LAST) OUTPUT(*PRINT)
5100 - CHKOBJ OBJ(QTEMP/DSPSFA) OBJTYPE(*FILE)



Dann springt der Drucker an und die QPDSPAFA wird gedruckt
Warum greift der HOLD(*yes) nicht?

Danke
Robi
(der weis, das das auch über ne Api zu lösen ist. Aber der Kollege hat es nun mal so gemacht und ist nun im Urlaub)

Fuerchau
25-02-14, 10:07
Unterschiedliche Aktivierungsgruppen!
Alle OVR-Befehle nehmen default OVRSCOPE(*ACTGRPDFN).
Dein CLLE läuft bestimmt in einer anderen als das (ggf. OPM) des WRKSPLFA.
Ändere den OVR in OVRSCOPE(*JOB), vergesse aber nicht auch einen DLTOVR auszuführen.

Robi
25-02-14, 10:33
Du meinst das der WRKSPLFA Systemseitig in einer eigenen ACTGRP läuft?
Ich dachte (bisher), das die Systembefehle alle "quasi" mit *caller laufen bzw. zumindest so "als ob" reagieren. Der OVR und der WRKSPLFA werden in dem gleichen CLLE, direkt hintereinander aufgerufen.
Habe nun dern OVRSCOPE mal drin. Melde mich

Fuerchau
25-02-14, 12:13
OPM kennt keinen *CALLER!
Die laufen grundsätzlich in der *DFTACTGRP.
Hat dein CLLE das Attribut *CALLER, hängt es eben vom Aufrufer ab, welche ACTGRP dieser gerade gewählt hat.
Mach einen DSPPGM deines Programmes. Per Default erhalten ILE's die ACTGRP ILE.

Robi
26-02-14, 08:14
Moin,
also... mit dem Ovrscope(*JOB) funktioniert nun.

Trotzdem ist es mir nicht ganz klar. Den zusammenhang OPM / ACTGRP / *caller usw den kenn ich.

Aber da sowohl der OVR als auch der WRKSPLFA in ein und demselben CLLE, unmittelbar hintereinander laufen, war mir nicht klar, das der WRKSPLFA quasi selber in einer eigenen ACTGRP läuft und dadurch der OVR nicht greift.
Wären das unterschiedliche CL' s, OPM und ILE im Mix, alles klar. Aber so ...
Na egal, es läuft nun.

Danke
Gruß
Robi

Fuerchau
26-02-14, 08:33
Die meisten Systemprogramme (schau mal per DSPPGM) sind wohl OPM-Programme.
Somit laufen sie in der *DFTACTGRP.
Nun gibt es aber beim Job wohl komischerweise 2 davon.
Was nun wo läuft lässt sich nur mühsam (per API's) herausfinden.
Früher gab es mal ein Systemtool (ggf. gibt es das immer noch), mit dem sich analysieren lässt, welches Programm in welcher ACTGRP läuft bzw. noch aktiv ist.

Wenn man sich seinen Dialogjob im Callstack (mit F11) die ACTGRP's ansieht, sieht man, dass z.B. das QCMD in der *DFTACTGRP 1 läuft, während das Logon-Startprogramm in der *DFTACTGRP 2 liegt.
Die Programme QWSGET/QT3REQIO usw. liegen wieder in der *DFTACTGRP 1.

Deshalb ist einfach ein OVRSCOPE(*JOB) für Systemausgaben wohl zwingend erforderlich.