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

问题描述 投票:1回答:2

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

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

我试图传递PARM的值与包含在顺序文件内的日期值。

cobol jcl
2个回答
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可以具有date的值。

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

希望这可以帮助。


3
投票

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

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

请提供更多信息

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

手动提交

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

ISPF Edit macro

你可以有

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

在JCL JCL并且有rexx edit macro

  • 读取文件
  • 做一个替换所有日期和日期
  • 我会使用与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"

编辑宏需要位于SYSPROC或SYSEXEC库中。如果宏被称为ChgDate你就是这样

© www.soinside.com 2019 - 2024. All rights reserved.