0

我正在尝试打印在 IO.ME.DATA 数据集中找到的数据(逐行)(请参阅我的 jcl)。

我收到以下错误并希望获得正确的语法:

10 +++  DO I = 1 TO SYSTSIN.0
Error running MYREXX, line 10: Bad arithmetic conversion

我是 REXX 的新手。谢谢

JCL

//JCL01  JOB 000,'TEST REXX',
//             CLASS=T,
//             MSGCLASS=X,
//             USER=ME
/*JOBPARM R=999,T=999,L=9999,S=ANY
//*
//STEPREXX EXEC PGM=IKJEFT01,PARM='MYREXX'
//SYSEXEC  DD DISP=SHR,DSN=IO.ME.REXX
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD DISP=SHR,DSN=IO.ME.DATA
//

MYREXX (IO.ME.REXX)

SAY 'START OF REXX CODE.'

"EXECIO * DISKR SYSTSIN (STEM LINE. FINIS"

DO I = 1 TO SYSTSIN.0
  SAY "VALUE OF I : " SYSTSIN.I
END

SAY 'END OF REXX CODE.'

数据(来自 IO.ME.DATA)

MYDATA1,A
MYDATA2,B
MYDATA3,C 
MYDATA4,D
MYDATA5,E
4

2 回答 2

1

尝试将 do 循环更改为

DO I = 1 TO Line.0
  SAY "VALUE OF I : " Line.I
END

命令

"EXECIO * DISKR SYSTSIN (STEM LINE. FINIS"

表示将文件SYSTSIN读 入词干变量Line。读取的行数将放入line.0line.1将保存文件中的第一行等。

于 2015-09-17T23:10:36.973 回答
1

除了@Bruce Martin 写的内容之外,不要指向SYSTSIN您的输入数据。使用不同的 DD。 IKJEFT01用于SYSTSIN自己的目的。即使它在这种特殊情况下有效,使用已知用于您自己的其他目的的 DDNAMES 也是一个坏习惯。

//JCL01  JOB 000,'TEST REXX',
//             CLASS=T,
//             MSGCLASS=X,
//             USER=ME
/*JOBPARM R=999,T=999,L=9999,S=ANY
//*
//STEPREXX EXEC PGM=IKJEFT01,PARM='MYREXX'
//SYSEXEC  DD DISP=SHR,DSN=IO.ME.REXX
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD DUMMY
//MYDATA   DD DISP=SHR,DSN=IO.ME.DATA
//*

这不适合发表评论,但我觉得指出这一点很重要。

于 2015-09-19T13:31:56.133 回答