2

我正在尝试在 JES2 环境中实现一个 JCL,它启动一组具有依赖关系的作业,例如:

JOB_A  -> JOB_B   ) 
JOB_C  -> JOB_D   ) -> JOB_E

换句话说,JOB_E 仅在 JOB_B 和 JOB_D 完成时才启动。

我可以通过 JOB_A 和 JOB_C 中的作业内部阅读器启动 JOB_B 和 JOB_D,但我不能不为 JOB_E 创建依赖项。

我试图探索 JCL 资源锁,以便我可以在 JOB_B 和 JOB_D 中锁定 JOB_E 需要的数据集,以便 JOB_E 仅在所有数据集可用但 JCL 仅请求 STEP 级别的数据集并随后释放它们时才会启动。如果 JCL 可以在开始之前请求所有数据集,我可以在 JOB 中实现某种互斥锁,例如:

 JOB_A locks data set DSN_A
 JOB_B waits to get data set DSN_A
 JOB_C locks data set DSN_C
 JOB_D waits to get data set DSN_C
 JOB_E waits to get data set DSN_A and DSN_C

这个怎么做?

我需要这个来在开发环境中测试一组 JCL,而无需访问调度程序。

4

2 回答 2

2

您评论说您需要在开发环境中进行测试而无需访问调度程序,这让我想知道您的商店是否有生产环境的调度程序。如果是这样,那么您的测试将不会真正测试将在您的生产环境中使用的内容。如果您还没有,请考虑一些事情。

在回答您的问题时,一种技术是在一个作业的最后一步中使用诸如 IEBGENER 之类的实用程序来提交后续作业。

例如,JOB_A 的最后一步将使用 SYSUT1 执行IEBGENER,其中包含 JOB_B 的执行 JCL 和指向 INTRDR 的SYSUT2。这是您可以使用的一种技术,但让 JOB_E 运行以使其不干扰任何其他作业可能会很棘手,因为 JOB_E 需要在JOB_B 和 JOB_D都完成后运行。

另一种技术是在批处理模式下使用Rexx使用内部阅读器提交您的作业,然后使用SDSF Rexx 界面观察它们何时完成。本质上,您将编写一个专用于您的作业集的专用作业调度程序。

十年后更新...

从 z/OS 2.2 开始,IBM 添加了JES2 执行控制语句,它“定义了一组作业和作业本身的执行顺序”。在使用此功能之前,必须由您的 z/OS 系统程序员完成一些配置。

于 2011-07-01T02:32:42.520 回答
0

我想知道为什么要投入宝贵的时间来测试一组作业,其中 PROD 集完全不同,将由一些 xyz 调度程序处理。别介意,如果我听起来很疯狂,但我也提出我的建议:

假设:您的作业占用可管理的 CPU,无需并行运行。

A 触发 B 触发 C 触发 D 触发 E (我知道它不值得,但你的测试很顺利) 我只是想如果我是你我会怎么做。我主要需要我的测试进行得又快又好。让我知道你的陈词滥调。

现在,让我感谢你们的解决方案,我们可以通过 REXX 管理作业的提交,这也创建了一个虚拟的和主观的调度。

于 2011-07-02T06:30:54.307 回答