如何从主 jcl 调度子 jcl

Posted

技术标签:

【中文标题】如何从主 jcl 调度子 jcl【英文标题】:How to schedule a sub jcl from main jcl 【发布时间】:2021-06-07 10:11:55 【问题描述】:

例如在执行和运行cobol db2程序时,我们需要提交mutilpe jcl,所以需要将所有这些子jcl放在我的主jcl下,这样我只需要提交一个jcl,编译和执行就完成了.

                                      main jcl
                                  -       -      - 
                                  -       -      - 
                                jcl1     jcl2   jcl3

限制: 我无法更新 jcl1、jcl2 和 jcl3。

【问题讨论】:

你试过什么???。搜索mainframe internal readerINTRDR,这是首选方法。您可以在后台运行 TSO,请参阅 ibmmainframes.com/about2948.html 我正在尝试使用 joblib 来执行程序,并使用 if 语句检查程序执行步骤返回代码。 【参考方案1】:

JOBLIBSTEPLIB 是包含可执行文件(即程序)的库列表。它们确实包含作业,即 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 时,您打开文件 JOB1SUBMIT,然后从 JOB1 读取每条记录并立即将其写入 SUBMIT。最后,您关闭这两个文件,并通过关闭 SUBMIT 来告诉 JES 处理该作业。

【讨论】:

【参考方案2】:

您可能想探索JES2 Execution Control Statements,它可以让您使用 JCL 完成所有这些工作。

【讨论】:

以上是关于如何从主 jcl 调度子 jcl的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 JCL MSGCLASS=?

如何使用jcl比较多个文件

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

如何保护 JCL FTP 中的存储密码?

如何在 JCL 中引用最新的物理顺序 (PS) 文件

JCL - MVS:如何从批量提交 MVS 命令中检索结果