PDA

View Full Version : sbmjob und ' im Parameter



muadeep
27-06-06, 09:08
Hab da mal wieder ein Problemchen! ;-)

Ich starte in einem RPGLE durch QCMDEXC ein CL-Pgm, welches an die QBATCH übergeben wird!


c Eval CMD = 'SBMJOB CMD(CALL PGM(EXPEREMCL)' +
c ' PARM(''' + (Von ) + ''' +
c ''' + (An ) + ''' +
c ''' + (AntwAn ) + ''' +
c ''' + (Betref ) + ''' +
c ''' + (Attach ) + ''' +
c ''' + (eText ) + ''' +
c ''' + (SQLStmt) + ''' +
c ''' + (JDebug ) + '''' +
c ')) +
c JOB(EXCELMAIL) JOBQ(QBATCH2) +
c JOBD(*USRPRF) JOBPTY(1)'
c CallP System(CMD)

In diesem CL-Pgm wird ein SQL-Statment als Paramter übergeben:
(SELECT * FROM XXXX/YYYY)

Funktioniert auch wunderbar, solange in dem SQL-Paramter keine " ' " übergeben werden:
(SELECT * FROM XXXX/YYYY WHERE ORT = 'HAMBURG')

Beinhaltet der Paramter "SQLStmt" ein " ' " dann wird mir der Job nicht in die QBATCH gestellt!

Versuche ich es mit: (SELECT * FROM XXXX/YYYY WHERE ORT = ''HAMBURG'') wird der Job in die QBATCH übergeben aber anschließend abgebrochen!

freu mich über jeden Tipp! thx

Fuerchau
27-06-06, 11:31
Für solche Übergaben enpfielt sich da die LDA ans stelle eines Parameters.
Vorteil:
- Bis 1024 Bytes
- Keine Probleme mit der CMD-Syntax und CALL-Problematik

Stelle dein SQL in die LDA und mach dann deinen SBMJOB. Die LDA wird für den neuen Job kopiert, so dass dieser dann nur per "CHGVAR &MYSLQ %SST(*LDA 1 1024)" die LDA auslesen muss.
Im Übrigen könnten auch die anderen Parameter komplett als Struktur in die LDA (auch per CHGVAR %SST(*LDA n m) 'value')) übergeben werden, falls auch diese Hochkomma enthalten können.