お世話になります。CLからSBMJOB CMD(CALL PGM(&W2LIB/&W2MBR) PARM(&W2PRM)) JOBQ(QBATCH)を実行しようとしています。以下はDDSで入力される任意の値。&W2LIB:10&W2MBR:10&W2PRM:250画面で入力したパラメータがサブミットで実行された際に、'2011' '201105' 'LIBXXX' '2011'->''2011''''201105''''LIBXXX''''2011''の様になってしまいます。どの様に処理を組めばよいのかご教授戴ければと思います。宜しくお願い致します。
[例]下記のように DSPLIB xxxx ( xxxxは DSPF から入力されるライブラリー名) を実行する小さなCLP を作成して実行しましたが、特に変数が引用符で囲まれるような症状はなく正常に指定したライブラリー名で実行されます。作成されたDSPF と CLP のソースをお知らせ頂いたほうが問題の解決は早まると思いますのでよろしければソースの内容をお知らせください。・DSPF0001.00 A DSPSIZ(24 80 *DS3) 0002.00 A MSGLOC(24) 0003.00 A PRINT 0004.00 A R DSPHEAD 0005.00 A TEXT(' 初期画面 ') 0006.00 A CF03(03 ' 終了 ') 0007.00 A 1 27' ジョブの投入 ' 0008.00 A DSPATR(HI) 0009.00 A 2 2' ライブラリー名 ' 0010.00 A LIB 10A B 2 22 0011.00 A 23 2'F3= 終了 ' 0012.00 A COLOR(BLU) ・CLP0001.00 PGM 0002.00 /*---------------------------------------------------------*/ 0003.00 /* SBM001CL : ジョブの投入 */ 0004.00 /*---------------------------------------------------------*/ 0005.00 DCLF FILE(TEST.COM/SBM001D) 0006.00 0007.00 SNDRCVF RCDFMT(DSPHEAD) 0008.00 IF COND(&IN03 *EQ '1') THEN(RETURN) 0009.00 SBMJOB CMD(DSPLIB LIB(&LIB) OUTPUT(*PRINT)) + 0010.00 JOB(DSPLIB) MSGQ(*WRKSTN) 0011.00 ENDPGM
IKD殿、早速のご連絡ありがとうございます。ソースを貼らせて戴きます。宜しくお願い致します。・DSPF0026.00 A R RUNSQLW2 0027.00 A OVERLAY 0028.00 A 1 2'RUNSQLW2' 0029.00 A PCOMP 3A O 1 12DSPATR(HI) 0030.00 A DSPATR(UL) 0031.00 A PCOMN 42A O 1 18DSPATR(HI) 0032.00 A DSPATR(UL) 0033.00 A 1 64DATE 0034.00 A EDTCDE(Y) 0035.00 A 1 73TIME 0036.00 A W2CMD 1A B 4 12COLOR(BLU) 0037.00 A 4 15'1:SQL / 2:SBMJOB(NO PARM)0038.00 A OB(PARM) / 4:SYSTEM' 0039.00 A 6 12'SOURCE FILE :' 0040.00 A W2SRC 10A B 6 26COLOR(BLU) 0041.00 A 8 12'LIB :' 0042.00 A W2LIB 10A B 8 26COLOR(BLU) 0043.00 A 10 12'SRCMBR :' 0044.00 A W2MBR 10A B 10 26COLOR(BLU) 0045.00 A 12 12'PARM :' 0046.00 A W2PRM 250A B 12 26COLOR(BLU) 0047.00 A 24 2' 03: 終了 ' 0048.00 A DSPATR(HI) 0049.00 A 24 29' ENTER: 実行 !! ' ・CLP0075.00 STEP02: 0076.00 SNDRCVF RCDFMT(RUNSQLW2) 0077.00 /* F03:終了 */ 0078.00 IF COND(&IN03 *EQ '1') THEN(GOTO END) 0079.00 /* ================================================================= */省略0328.00 IF COND(&W2LIB *EQ ' ') THEN(GOTO STEP02) 0329.00 IF COND(&W2MBR *EQ ' ') THEN(GOTO STEP02) 0330.00 IF COND(&W2PRM *EQ *BLANK) THEN(GOTO STEP02) 0331.00 IF COND(&LB00 *EQ '0') THEN(DO) 0332.00 SBMJOB CMD(CALL PGM(&W2LIB/&W2MBR) PARM(&W2PRM)) JOBQ(QBATCH)0333.00 ENDDO
引用符自体は引用符2個で、記述する。これで、正しいはず。
問題になるソースであるようには見えません。下記の記述が気になるのですが、各入力項目欄に'2011' のように引用符を両端に付加して入力されているのでしょうか ?もし万が一、そうであればご指摘のようにW-引用符が両端に付加されます。意図的に両端に引用符をつけたいという希望であれば理由をお聞かせください。画面で入力したパラメータがサブミットで実行された際に、'2011' '201105' 'LIBXXX' '2011'->''2011''''201105''''LIBXXX''''2011''の様になってしまいます。
お疲れ様です。AAA,IKDさん御回答ありがとうございます。引用符ですが、コマンドライン、CLでLIB、PGM、PARM固定では、以下の様な入力で実行できています。SBMJOB CMD(CALL PGM(TESTLIB/TESTPGM) PARM('2011' '201105' 'LIBXXX' '2011')) JOBQ(QBATCH)画面で同じように以下を入力してやれば実行できないかと思いました。LIB:TESTLIBPGM:TESTPGMPARM:'2011' '201105' 'LIBXXX' '2011''2011'と入力しているのは、上記のPARM('2011' '201105' 'LIBXXX' '2011')の()内を手打ちしているイメージで処理を作ったつもりだからです。結果的に、W-引用符が付く結果になってしまいました。宜しくお願い致します。
引用符の解釈が、2回あるからです。1. 2個の引用符が1個に変換される。2. 文字の始まりとして解釈されたのち、除去される。
AAAさん、ご回答ありがとうございます。引用符の解釈、その様に処理されていたとは知りませんでした。> 引用符の解釈が、2回あるからです。> 1. 2個の引用符が1個に変換される。> 2. 文字の始まりとして解釈されたのち、除去される。> しかし、どの様な形でパラメータに値を渡してやるのが良いのかが分かりません。宜しくお願い致します。
パラメーターは、わたさない。これって、これだけで10年飯が食える内容だから、SBMJOBのマニュアルを精読する。
解決しました。ありがとうございました。> AAAさん、ご回答ありがとうございます。> 引用符の解釈、その様に処理されていたとは知りませんでした。> > > 引用符の解釈が、2回あるからです。> > 1. 2個の引用符が1個に変換される。> > 2. 文字の始まりとして解釈されたのち、除去される。> > > しかし、どの様な形でパラメータに値を渡してやるのが良いのかが分かりません。> 宜しくお願い致します。