如何通过 JCL 将参数传递给 REXX 程序

Posted

技术标签:

【中文标题】如何通过 JCL 将参数传递给 REXX 程序【英文标题】:How to pass arguments to REXX program through JCL 【发布时间】:2009-12-25 08:28:44 【问题描述】:

我们可以将参数从 JCL 传递给 REXX 程序吗?

我想,JCL PARM 可以像我们用来向 COBOL 程序传递参数一样使用。请把你的想法放在这里...

【问题讨论】:

【参考方案1】:

你想要EXEC PGM=IRXJCL,PARM='member_name exec_args'SYSEXEC 应该指向包含member name 的PDS。 SYSTSINPULL 的输入,SYSTSPRTSAY 的输出DD

查看"TSO/E Rexx User Guide" book (SA22-7791) 中的“在 TSO/E 和其他 MVS 地址空间中使用 REXX”一章以获取完整示例。

【讨论】:

【参考方案2】:

补充说明:如果您的 REXX exec 使用 ISPF 服务,您可以使用 PGM=IKJEFTxx(xx 是变量后缀)批量运行它并在作业步骤中分配 ISPxLIB。

【讨论】:

【参考方案3】:

如果参数和 REXX 成员名称一起超过 100 字节,Ron Patterson 提到的方法将不起作用,因为 JCL 语法只允许最大参数长度为 100 字节。在这种情况下,我建议使用 IKJEFTxx(Tony 已经发布)。然后,您必须将 REXX 程序名称作为流内数据传递给 SYSTSIN。这个程序的参数可以简单的写在程序名后面。当您需要多行时,请使用连字符作为行的最后一个字符来指示与下一行的连接。 示例:

//EXAMPLE  EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=30
//SYSPRINT DD  SYSOUT=*                              
//SYSEXEC  DD  DISP=SHR,DSN=YOUR.REXX.LIBRARY    
//SYSTSPRT DD  SYSOUT=*                              
//SYSTSIN  DD  *                                     
  SCHLABB PARAMETER1 PARAMETER2 PARAMETER3 -
          VERY_LONG_PARAMETER4             -
          LAST_PARAMETER5                                
/*                                                   
//                                                   

【讨论】:

【参考方案4】:

当我尝试运行 IRXJCL 时,我得到了基本 EXECIO、LIBDEF、命令的 RC (-3)。我希望有更好的文档来说明 IRXJCL 能做什么和不能做什么。

最后遵循以下链接中的方法,通过将值写入文件并从文件中读取来动态地将值传递给 REXX。 How to run dymanic SQL through IKJEFT01 Utility?

【讨论】:

以上是关于如何通过 JCL 将参数传递给 REXX 程序的主要内容,如果未能解决你的问题,请参考以下文章

从 rexx 代码向 ispf 宏传递参数时出现无效长度错误

将参数传递给 TWS 作业的 Cobol 程序

如何通过 URL 将参数传递给闪亮的应用程序

如何通过控制器将参数传递给策略中使用的授权处理程序

如何将参数传递给 MASM64 中的程序?

如何通过 HtmlDocument.InvokeScript 将对象作为参数传递给 javascript