要调用Rexx程序并传递参数,可以使用IKJEFT01
// SET PARM1=
// SET PARM2=
//AUDITDS EXEC PGM=IKJEFT01,
// PARM='RXPGM &PARM1 &PARM2'但是PARM支持有限数量的字符。有没有办法使用JCL调用REXX并传递包含更多字符的参数?使用SYSTSIN将是一种解决方案,但我希望使用符号参数,就像在PARM参数中一样。
发布于 2016-06-09 23:55:23
由于历史原因,参数字段被限制为100字节,但是对于愿意调用CEE3PR2 LE可调用服务的启用了LE (语言环境)的应用程序,该限制被增加到32K。LE语言应该是汇编语言(某些注意事项),以及COBOL和PL/I的现代版本。据我所知,Rexx不是一种支持LE的语言。
我工作过的一个地方有一个通用程序,它可以将以PARM值传递的任何内容写入平面文件。我们的程序恰好是汇编程序,但也可以是COBOL、PL/I或Rexx。
有关如何使用它的示例,请参阅this answer。
我建议你创建一个这样的程序,如果你的商店还没有这样的程序(请在编写你自己的程序之前检查一下)。Syncsort (也许还有DFSORT)能够将参数写入输出文件,因此您也可以这样做。
假设能够将parm写入平面文件,您可以为每个参数调用它一次,然后将结果MODding到平面文件。然后将平面文件读入到Rexx程序中,每个记录代表一个参数。
更新:正如@BillWoodger在评论中指出的那样,PARMDD DD可以使用...
使用PARMDD指定数据集的ddname,该数据集包含要在命令parmstring长度超过100个字符时执行的命令parmstring。
...which消除了一次读取一条记录的参数的需要。
此外,显然是as of z/OS 2.1 you no longer need a program to place your parms into a dataset,您可以在处理JCL时在流中解析它们。
发布于 2016-07-22 12:25:43
有两种使用IKJEFT01调用REXX脚本的方法。一种是像当前一样使用parm,另一种是使用SYSTSIN数据集。这是我首选的方法,您可以使用+继续字符将长参数继续到下一行。例如,下面是使用带有延续的长参数zFS文件名调用BPXBATCH的示例。
//FORWARD EXEC PGM=IKJEFT01,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
//SYSTSIN DD *
BPXBATCH SH sftp -b /u/bigdata/doc/hadoop.sftp -oPort=8022 biadmin@biad+
min 发布于 2020-07-07 05:20:42
有两个选项
问题是你不能从REXX返回一个应答给调用程序.另一个问题是,您只能使用一个字符串参数调用REXX。
为了解决这个问题,我从cobol调用了rexx。参数的一部分是地址。在REXX中,我使用存储函数将输出放入地址
https://stackoverflow.com/questions/37723778
复制相似问题