问题描述
例如,在执行和运行 cobol db2 程序时,我们需要提交 mutilpe jcl,因此需要将所有子 jcl 放在我的主 jcl 下,这样我只需要提交一个 jcl,编译和执行就完成了.
main jcl
- - -
- - -
jcl1 jcl2 jcl3
约束: 我无法更新 jcl1、jcl2 和 jcl3。
解决方法
JOBLIB
或 STEPLIB
是包含可执行文件(即程序)的库列表。它们不包含作业,即 JCL。
从操作的角度来看,没有子 JCL 这样的东西。每个作业都是一组独立的 JCL 语句,它们可以作为 JCL 库的成员存储,也可以由程序生成。
如果您的 COBOL 程序需要决定何时提交以及提交哪个作业,它需要知道每个作业的库和成员。然后它可以从库中读取成员并将记录写入INTRDR 数据集。 COBOL 程序的 JCL 可以,例如三个作业中的每一个的 contian DD 语句和一个 INTRDR DD 来提交作业。
//jobname JOB ....
...
//stepname EXEC PGM=your-cobol-pgm
//...
//JOB1 DD DISP=SHR,DSN=your.jcl.lib(JOB1)
//JOB2 DD DISP=SHR,DSN=your.jcl.lib(JOB2)
//JOB3 DD DISP=SHR,DSN=your.jcl.lib(JOB3)
//SUBMIT DD SYSOUT=(A,INTRDR)
...
我不是 COBOL 程序员,所以我不会尝试给出示例代码。在 COBOL 代码中,您为每个作业声明文件,即 JOB1、JOB2 和 JOB3,并为 INTRDR 声明一个文件,即 SUBMIT
(注意 DD 名称 SUBMIT 是任意选择的; 它几乎可以是您想要的任何名称)。
当需要提交作业 1 时,您打开文件 JOB1
和 SUBMIT
,然后从 JOB1
读取每条记录并立即将其写入 SUBMIT
。最后,您关闭这两个文件,并通过关闭 SUBMIT
告诉 JES 处理作业。
您可能想要探索 JES2 Execution Control Statements,这将允许您使用 JCL 完成所有这些。