我需要从SYSIN JCL传递数据到PL/I程序。下面是我的代码从JCL和PL/I程序和值没有被传递。有人能帮忙吗?
//SYSIN DD *
12345
PROG: PROC(INPARM) OPTIONS(MAIN REENTRANT) REORDER;
DCL INPARM CHAR(5) VARYING;
PUT SKIP LIST('INPARAM - '|| INPARM);
您所展示的PL/1代码不读取任何文件,它只使用PARM数据。我猜你说的mainframe
是指IBM z/OS?在z/OS上,PARM数据通过EXEC PGM=xyz,PARM=
传递,该数据最多可以有100个字符。因此,将INPARM
变量重新定义为CHAR(100) VARYING
。
SYSIN
为数据集定义;程序需要定义、打开和读取一个ddname(文件名)为SYSIN的数据集。您还需要定义一个数据结束标志,并定义一个在读取SYSIN中的所有数据时触发的ON条件。
DCL SYSIN FILE EXTERNAL RECORD INPUT ENVIRONMENT(FB RECSIZE(80));
DCL INPUT_RECORD CHAR(80);
DCL EOF_SYSIN BIT(1) INIT('0'B);
ON ENDFILE(SYSIN) BEGIN;
EOF_SYSIN = '1'B;
END;
OPEN FILE(SYSIN);
DO WHILE (¬EOF);
... process the record just read ...
READ FILE(SYSIN) INTO(INPUT_RECORD);
END;
CLOSE FILE(SYSIN);