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.