PDA

View Full Version : Batch-Programm aus RPG aufrufen?



hansr
28-11-02, 13:53
Gibt es eine Möglichkeit aus einem RPG-Programm ein RPG-Modul oder -Programm im Batch aufzurufen?
Weiters sollten Parameter via Parameterliste an das aufgerufen Programm übergeben werden.

Konkret geht es darum, aus einem RPG-Programm, das interaktiv aufgerufen wird, von einer Bildschirmdatei Parameter einzulesen und ein weiteres RPG-Programm im BATCH aufzurufen, wobei die über die Bildschirmdatei eingegebenen Parameter an das aufgerufene Programm übergeben werden sollen.

Danke im Voraus für Eure Vorschläge.

jajonowak
28-11-02, 14:36
hallo hansr
eigentlich wäre diese frage bei der anwendungsentwicklung besser aufgehoben.

doch nun zum rpg, geht wunderbar:
E c 80 80 1 (wenn sourcefile 80char)
c jobsbm plist
c parm c
c parm len 15,5
c movea'pgmnam' c,xx
c z-add80 len
c call 'qcmdexc' jobsbm
c usw.
** c
smbjob cmd(call pgm(x ) parm('deinParm')) job(batch) jobd(*lib/xx) jobq(lib/jobq)
----- das wars ---


ich hoffe es sieht nach dem senden auch noch einigermaßen nach was aus

viel spaß
Hans-Joachim Nowak

[Dieser Beitrag wurde von jajonowak am 28. November 2002 editiert.]

Fuerchau
28-11-02, 16:38
Das sieht zwar ganz gut aus, geht aber nur mit festen Paramtern.
Du solltest den Befehl zusammen setzen:

Konstanten:
I 'sbmjob cmd(call pgm(mypgm)- con1
I 'parm('
I ') jobd(myjobd)' con2

c movelcon1 qcmd 256p
c cat '''' qcmd:0
c cat myp1 qcmd:0
c cat ''' ' qcmd:0
c cat con2 qcmd:0
call 'qcmdexc'
parm qcmd
parm 256 qcmdl 155

Sieht zwar schwierig aus ist es aber nicht.
In ILE/RPG ist es einfacher:
eval qcmd = 'sbmjob cmd(call mypgm parm(''' + parm1 + ''' ''' + parm2 + ') jobd(myjobd)'

Am einfachsten, auch wegen der Syntax geht es über ein kleines CLP, dass die gleichen Parameter hat wie das Batchprogramm.
Das CLP ruft nur noch den SBMJOB auf.
das bequeme daran ist, dass die parameter enfach zu definieren sind und der SBM-Befehl im CLP per SEU gepromptet werden kann.
Das spart vor allen Dingen Testaufwand.