如何使用 Rexx 打印数据集内容

How to print dataset content using Rexx

我正在尝试打印在 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

尝试将 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 将保留文件中的第一行等

除了@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
//*

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