我正在尝试在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集,而无需访问调度程序。
答案 0 :(得分:2)
您的评论需要在开发环境中测试而无法访问调度程序让我想知道您的商店是否有生产环境的调度程序。如果是这样,那么您的测试将无法实际测试生产环境中将使用的内容。如果你还没有想到的东西。
在回答您的问题时,一种技巧是在一个作业的最后一步中使用IEBGENER等实用程序来提交后续作业。
例如,JOB_A的最后一步将执行IEBGENER,SYSUT1包含JOB_B和SYSUT2的执行JCL,指向INTRDR。这是一种可以使用的技术,尽管让JOB_E运行以便它不会干扰任何其他作业可能会很棘手,因为JOB_E需要在 JOB_B和JOB_D完成后运行。< / p>
另一种技巧是在Rexx模式下使用batch使用内部阅读器提交作业,然后使用SDSF Rexx interface查看完成时间。基本上,您将编写一个特定用途的作业调度程序,专门针对您的一组作业。
答案 1 :(得分:0)
我想知道为什么要投入宝贵的时间来测试一组作业,其中PROD集完全不同,并且将由一些xyz调度程序处理。不要介意,如果我听起来很疯狂,但是lemme也提议我:
假设:您的工作需要可管理的CPU,并且无需并行运行。
触发器B触发C触发器D. 触发E(我知道它不值得,但是 你的测试很顺利)我只是把它 在这里想想如果我会做什么 是你吗我主要需要我的测试 快点好。勒梅知道你的陈词滥调。
现在,lemme非常感谢你们这样的解决方案,我们可以通过REXX管理作业的提交,这也创造了虚拟和主观的调度。