要调用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时在流中解析它们。