【问题标题】:Passing value to Cobol program through Parm using data in sequential file使用顺序文件中的数据通过 Parm 将值传递给 Cobol 程序
【发布时间】:2019-03-23 01:10:31
【问题描述】:

我正在设置一个 JCL,它将来自顺序文件(有一条记录)(例如 20190320)的日期值传递给 parm,如下所示:

//STEP1 EXEC PGM=ABC,PARM='20190320'

我正在尝试将 PARM 的值与包含在顺序文件中的日期值一起传递。

【问题讨论】:

    标签: cobol jcl


    【解决方案1】:

    假设您的 COBOL 程序已经包含使用 PARM 检索从 JCL 传递的信息的指令,您可以将 PARMDD 参数与 DD 语句结合使用来完成任务。 DD语句是用PARM数据定义顺序文件。

    //STEP1    EXEC PGM=ABC,PARMDD=MYINPUT
    //MYINPUT  DD DISP=SHR,DSN=MY.PARM.INPUT
    //SYSOUT   DD SYSOUT=*
    

    数据集MY.PARM.INPUT 可以具有日期值。

    基本上,您不能使用 PARM 参数传递超过 100 字节的数据。如果要传递大于 100 字节的数据,通常首选 PARMDD

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      你不能在一项工作中做到这一点。 选项包括

      • 将程序 ABC 更改为从文件中读取
      • 编写程序/rexx 来读取文件并调用程序ABC
      • 读取文件并生成一个新作业,该作业调用 ABC 并使用您刚刚读取的日期。这可以在 rexx 脚本中完成。
      • 一些调度系统可能支持这一点。

      请提供更多信息

      • 贵公司使用什么调度系统
      • 程序 ABC 是本地编写的程序吗???可以改变的
      • 批处理流的作业部分是自动运行还是由用户提交。

      手动提交

      如果作业是手动提交的,您可以

      • 使用ISPF file tailoring 编写Rexx 脚本以生成&& 提交JCL
      • Rexx 宏来更新和提交 JCL

      ISPF 编辑宏

      你可以有

      // set DATE=$Date$ 
      //STEP1 EXEC PGM=ABC,PARM='&date' 
      

      在 JCL 中 并拥有rexx edit macro

      • 读取文件
      • 在 &date 上全部替换
      • 我会使用与 Controlm 相同的变量

      使用 JCL

      // set DATE=$Date$ 
      //STEP1 EXEC PGM=ABC,PARM='&date' 
      

      编辑宏类似于

         /* rexx */
        ADDRESS ISREDIT 'macro'
        Address TSO "EXECIO 1 DISKR indd"
        pull date
        ADDRESS ISREDIT "r $date$" date 
        ADDRESS ISREDIT "cancel"
      

      edit 宏需要在 SYSPROC 或 SYSEXEC 库中。如果 宏被称为 ChgDate 你只是

      【讨论】:

      • 我不想在 Cobol 程序 ABC 中进行更改。作业在测试中手动提交。我不打算将其安排在生产中。 (在生产中,值来自 Control-M 变量)。我的目标是减少在测试中运行时手动传递符号参数值的负担。
      • 我会编写一个 REXX 脚本来读取文件并为 COBOL 程序构建 JCL,或者动态分配所有需要的 DD 并调用它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多