使用顺序文件中的数据通过Parm将值传递给Cobol程序

时间:2019-03-23 01:10:31

标签: cobol jcl

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

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

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

2 个答案:

答案 0 :(得分:7)

假设您的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

希望这会有所帮助。

答案 1 :(得分:3)

您不能一次完成这项工作。 选项包括

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

请提供更多信息

  • 贵公司使用哪种计划系统
  • 程序ABC是本地编写的程序???可以更改
  • 是批处理流的作业部分是自动运行还是由用户提交。

手动提交

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

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