文字列を変更するためにPDSのすべてのメンバーを書きました。私は PDS、既存の値と新しい値をJCL経由で渡しています。 rexxを使用してispfマクロに引数を渡しているときに、無効な長さエラーが発生します。エラーは次のとおりです。rexxコードからispfマクロにパラメータを渡しているときに長さエラーが発生しました
ISPS108 Invalid length -/-Parameter 'PARM' exceeds the allowable length.
マイREXXコード - IWPURDXは次のとおりです。
TRACE "ALL"
ARG PDS STRING1 STRING2 .
MAC = 'TEMPMAC' /* Macro name
*/
PDS = STRIP(PDS,"B","'")
STRING1 = STRIP(STRING1,"B","'")
STRING2 = STRIP(STRING2,"B","'")
S12 = STRING1 || " " || STRING2
SAY "STRING1" STRING1
SAY "STRING2" STRING2
SAY "S12" S12
SAY "LENGTH" LENGTH("S12")
X = OUTTRAP("LIBMEM.") /* Trap output of TSO
*/
ADDRESS TSO "LISTDS '"PDS"' M"
X = OUTTRAP("OFF")
DO I = 7 TO LIBMEM.0
LIBMEM.I = STRIP(LIBMEM.I) /* Member name
*/
ADDRESS ISPEXEC "EDIT DATASET ('"PDS"("LIBMEM.I")') " ||,
"MACRO ("MAC") PARM ("S12")"
SAY I RC LIBMEM.I
END
ISPFマクロ - TEMPMACがある:JCLで
/*REXX*/
TRACE "ALL"
SAY "TEMPMAC"
ADDRESS ISREDIT "MACRO (PARM) PROCESS"
PARSE VAR PARM STRING1 STRING2
ADDRESS ISREDIT "CHANGE ALL 'STRING1' 'STRING2'"
C_RC = RC
ADDRESS ISREDIT "END"
EXIT C_RC
、私はISPFコマンド以下を経由して、それらを呼び出しています:
//REXX EXEC PGM=IKJEFT01,REGION=32M
//SYSPRINT DD SYSOUT=*
//SYSTSIN DD *
ISPSTART CMD(%IWUPDRX 'PPPRG3.BASE.WRJCL' '2016-01-01' 'IWPULDT')
/*
文字列がマクロに渡された長さ - 3と表示されます。 エラーの根本原因を取得できません。誰か助けてもらえますか?
これは正しいです。'EDIT'(および' VIEW')の 'PARM'パラメーターの値は、値ではなくISPF変数の**名前**です。 ISPFサービスには、可変値ではなく変数名を指定する場所がかなりあります。 LMサービスはこれで有名です。例えば、 'LMINIT'は変数** name **を求めていますが、他の変数は変数** value **を求めています。何が望まれているかを見る最も簡単な方法は、変数名が使用されている場合、パラメータ記述が** - var **で終了することです。この場合、それは 'PARM(parm-var)'と定義されています。 – zarchasmpgmr
ありがとうフリッツ!出来た。しかし、奇妙なことは、TEMPMACマクロでパラメータをハードコードし、マクロ名を渡すだけで動作していたことです。 – bp89