要调用Rexx程序并传递参数,可以使用IKJEFT01

// SET PARM1=
// SET PARM2=
//AUDITDS  EXEC PGM=IKJEFT01,
//     PARM='RXPGM &PARM1 &PARM2'

但是PARM支持有限数量的字符。有什么方法可以使用JCL调用REXX并传递包含更多字符的参数?
使用SYSTSIN是一种解决方案,但是我想使用符号参数作为PARM参数中的符号参数。

最佳答案

由于历史原因,PARM字段限制为100个字节,但是对于愿意调用 CEE3PR2 LE可调用服务的启用LE(语言环境)的应用程序,此限制增加到32K。 LE语言将是汇编语言(某些警告),以及现代版本的COBOL和PL / I。据我所知,Rexx不是启用LE的语言。

我工作过的地方有一个通用程序,该程序会将在PARM值中传递的所有内容写入平面文件。我们的碰巧是汇编程序,但可能是COBOL,PL / I或Rexx。

有关如何使用它的示例,请参见this answer

如果您的商店还没有这样的程序,建议您创建一个这样的程序(请在编写自己的程序之前进行检查)。 Syncsort(也许还有DFSORT)具有将parm写入输出文件的功能,因此您也可以采用这种方法。

假设可以将parm写入平面文件,则可以为每个参数调用一次,然后将结果修改为平面文件。然后将平面文件读入Rexx程序,每个记录代表您的一个参数。

更新:正如@BillWoodger在评论中指出的,可以使用PARMDD DD ...

使用PARMDD指定包含命令的数据集的ddname
如果命令parmstring大于100,将执行parmstring
字符长度。

...避免了一次读取一个记录的参数。

另外,显然as of z/OS 2.1 you no longer need a program to place your parms into a dataset,可以在处理JCL时在流中解析它们。

08-25 20:47