-
QCMDEXC & OVRPRTV
Habe folgendes Problem:
PHP-Code:
H Option(*SrcStmt : *NoDebugIO) Datedit(*DMY) DatFmt(*ISO) Indent('| ')
H DftActGrp(*No)
*
FMontAuPR O E Printer UsrOpn
*
DPgmSDS SDS
D User 254 263
*
D QCmdExc PR ExtPgm('QCMDEXC')
D Command 3000A const options(*varsize)
D Length 15P 5 const
*
C Select
C When (User = 'MXX1')
*
C CallP QCMDEXC('OVRPRTF FILE(MONTAUPR) ' +
C 'DEV(PRTCM4200)' : 37)
C Open MontAuPR
C Write LabelE
C Close MontAuPR
C CallP QCMDEXC('DLTOVR FILE(MONTAUPR)' : 21)
C Other
:
:
C EndSl
*
C Eval *InLR = *on
Wenn der User "MXX1" ist wird das Statement mit "CallP QCMDEXC('..." ausgeführt und es gibt auch keinen Programmabruch aber die Überschreibung (OVRPRTF ... ) ist dann leider auch nicht vorhanden bzw. es wird auf dem Standartdrucker gedruckt!
Kann mir jemand sagen, was ich da falsch mache?
-
OVRSCOPE(*JOB) !!!
Das Problem:
QCMDEXC ist ein OPM-Programm und läuft daher in einer anderen Aktivierungsgruppe als dein ILERPG.
Der Default ist leider *ACTGRPDFN.
-
ahhhh !!!!
und was heist das jetzt für mich?
kann ich das irgendwie umgehen, wenn ja wie?
-
Hello,
damit ist wohl z.B. der Parameter aus den OVR-Befehlen für die *ACTGRPDFN gemeint.
Zum Beispiel eben in OVRPRTF der Parameter.
Erklärung in Englisch gemopst von http://faq.midrange.com/data/cache/94.html
Using overrides in ILE is somewhat different from using them in OPM:
In ILE an override (again, using the default OVRSCOPE) will work for all other programs in the activation group in which the override is issued. It will not be automatically removed when the issuing prorgram ends; it will exist until it is explicitly removed with DLTOVR or until the activation group ends.
If you want an override to be visible through different activation groups (as in calling an OPM program from an ILE program), you will have to use OVRSCOPE(*JOB). The override will be in effect for all programs in the job, regardless of activation group, until it is removed or the job ends. OVRSCOPE(*CALLLVL) is for getting the 'old' behaviour in ILE: the override will be removed when the call level, i.e. the issuing program, ends.
OVRSCOPE
Falls die Spielerei mit den Aktivirungstruppen nicht gleich geht, gibts es glaube ich auch noch ne altherkömmliche Methode?
So übern CL erst den OVR absetzen und dann den CALL.
Bin mir da aber gerade nicht sicher wegen alten Releasestand hier.
k.
-
Also zusammengefasst:
Den OVRSCOPE musst du an den OVRPRTF anhängen.
Das mit dem CLP ist auch nicht so einfach:
- Zu beachten ist die Aufrufhierarchie
- Besonders zu berücksichtigen ist QCMDEXC
- ILE-Umgebung
*ACTGRPDFN
Funktioniert nur, wenn das CMD direkt (also nicht per QCMDEXC) aufgerufen wird oder der nachfolgende Open in einem OPM-Programm erfolgt
*CALLLVL
Das ist die Aufrufebene, die den OVR durchführt, dabei betrachtet sich QCMDEXC nicht als Aufrufebene, kann also vernachlässigt werden.
Aber beim Ablauf PGM->CLP->OVR ist der OVR wieder weg, wenn in das PGM zurückgekehrt wird.
*JOB
Ist eigentlich selbsterklärend.
Zur Vorgensweise bei *JOB/*ACTGRPDFN:
OVR->OPEN->DLTOVR->Verarbeitung
Da der OVR nur für den Open relevant ist, kann der OVR ja nach Open wieder entfernt werden. Somit ist er auch nach Programmabbruch (was wir ja nicht hoffen) auf jeden Fall wieder weg ist.
-
so, hab jetzt meinen Source-Code so abgändert:
PHP-Code:
C CallP QCMDEXC('OVRPRTF FILE(MONTAUPR) ' +
C 'DEV(PRTCM4200) OVRSCOPE(*JOB)' : 52)
C Open MontAuPR
C Write LabelE
C Close MontAuPR
C CallP QCMDEXC('DLTOVR FILE(MONTAUPR) ' +
C 'LVL(*JOB)' : 31)
der OVRPRTF wird zwar ausgeführt
(wenn ich Pgm mit DEBUG und an entsprechender Stelle mit WRKJOB prüfe)
aber die Druckausgabe kommt trotzdem auf dem Standartdrucker (so wie in der PrinterFile angegeben) !!!!
-
Für mich sieht das so aus, als würde nur der QCMDEXC ausgeführt, nicht aber der OVRPRTF (Joblog?).
'string' + 'string' : len sehen für mich wie drei Parameter aus.
lass mal die beiden ' um das plus weg oder EVALuiere vorher einen String in einer Variable: CALLP QCMDEXC(CMDSTRG:37)
-
Hallo zusammen,
kann es vielleicht sein das Du nicht über die Device drucken kannst ?
Ich mache eigentlich immer einen Override auf die OUTQ
Gruss
Michael
-
Hatte früher dasselbe Problem, nach ewigem Hin und Her mit IBM (und nicht gelöstem Problem) bin ich dann zähneknirschend dazu übergegangen, das RPG-Proggi in ein CLP einzubetten und den OVRPRTF in dem CLP vor das RPG zu stellen. Bums, fertig aus und klappt immer.
-
Hallo.
Der OVRPRTF funktioniert z.B.:
DoCmdString = 'OVRPRTF'
+ ' FILE(JLD205P) DEVTYPE(*AFPDS)'
+ ' PAGESIZE(93 180) LPI(8) CPI(12) OVRFLW(93)'
+ ' OVRSCOPE(*JOB)';
DoCmdmsg = DoCmd(DoCmdString);
.
.
.
Open JLD205P;
DoCmdString = 'DLTOVR FILE(JLD205P) LVL(*JOB)';
DoCmdMsg = DoCmd(DoCmdString);
close(e) JLD205P;
DoCmd procedure und DoCmdSring, DoCmdMsg felder sind programintern definiert:
PHP-Code:
d DoCmd pr 7
d DoCmdString 32767 const varying
d DoCmdMsg s 7
d DoCmdString s 32767 varying
p DoCmd b
d pi 7
d pDoCmdString 32767 const varying
d wReturnMsg s 7
d QCmdExc pr extpgm('QCMDEXC')
d 32767 const
d 15p 5 const
c clear wReturnMsg
c callp(e) QCmdExc(pDoCmdString:%len(DoCmdString))
c if %error
c eval wReturnMsg = zPgmErrMsgId
c endif
c return wReturnMsg
p e
Gruss
Helge Bichel
Copenhagen
Similar Threads
-
By flytokiwi in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 29-03-06, 13:49
-
By becama in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 11-08-05, 15:05
-
By Lichtblitz in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 25-07-05, 12:44
-
By Freezer in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 02-12-04, 13:38
-
By fabax in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 27-02-04, 11:10
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks