将数据从Sysin JCL传递到PL/I程序

发布于 2025-02-02 05:27:29 字数 243 浏览 3 评论 0原文

我需要将数据从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);

I need to pass data from SYSIN JCL to PL/I program. Below is my code from JCL and PL/I program and values are not being passed. Can anyone help please?

//SYSIN DD *
12345

PROG: PROC(INPARM) OPTIONS(MAIN REENTRANT) REORDER;
DCL INPARM            CHAR(5) VARYING;

PUT SKIP LIST('INPARAM - '|| INPARM);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野侃 2025-02-09 05:27:29

您显示的PL/1代码不会读取任何文件,它仅消耗PARM数据。我假设Mainframe您的意思是IBM Z/OS?在Z/OS上,PARM数据通过exec pgm = XYZ,PARM =传递,此数据最多可以是100个字符。因此,重新定义inparm变量为char(100)变化

sysin如图所示是数据集定义;该程序需要使用DDNAME(文件名)Sysin定义,打开和读取数据集。您还需要定义数据结束标志,并在读取Sysin的所有数据时触发的条件定义。

这是一些代码段:

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);

The PL/1 code you show does not read any file, it only consumes the PARM data. I assume by mainframe you mean IBM z/OS? On z/OS, PARM data is passed via EXEC PGM=xyz,PARM=, and this data can be up to 100 characters. So, redefine the INPARM variable as CHAR(100) VARYING.

SYSIN as shown is a data set definition; the program needs to define, open, and read a data set with ddname (file name) SYSIN. You also need to define an end-of-data flag, and define an ON condition that is triggered when all data from SYSIN has been read.

Here is some code snippet:

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);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文