我们有一个 REXX 程序,它创建一个数据集LOG.DYYMMDD.THHMMSS.OUT保存在 DDNAME LOGNM 中。
我们使用 IKJEFT1B 实用程序从 JCL 调用 REXX 程序。
如何在 JCL 中使用此数据集进行进一步处理。我的意思是我如何在 JCL 中引用它,因为数据集名称是动态创建的。
您是否使用TSO Allocate或TSO Copy命令或类似的 TSO 命令在 Rexx 程序中创建数据集?
//LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=(NEW,CATLG), ....
//LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=(NEW,CATLG), ....
或者
//LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=OLD
在以下步骤中使用数据集应该没有问题。
//LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=(NEW,DELETE), ....
然后将 DELETE 更改为 CATLG(或通过)
创建数据集后,您可以像引用任何其他数据集一样在 JCL 中引用它。它是动态创建的并不重要,因为在创建它时会包含数据集配置。它的处理方式与使用 JCL DD 语句创建时完全一样。我不知道一旦创建它,甚至有迹象表明它是动态创建的。它与任何其他 PS 数据集没有什么不同。
如果编目:
//SOMENAME DD DISP=SHR,DSN=LOG.DYYMMDD.THHMMSS.OUT
如果未编目,则对其进行编目,然后参见上文。
如果在关闭时删除,请不要删除它,而是将其编入目录,然后参见上文。
注意:我假设您在一个作业中创建数据集并在其他作业中访问它。如果您在同一个 JOB 中访问它,请注意 Bruce Martin 的回答。您的数据集将被“隐藏”,从提交时对 JOB 的处置处理的正常评估,因为数据集仅在该点之后创建,当 JOB 实际运行时(如果它与运行一样公平,它可能会失败立即出现“JCL ERROR”,甚至没有接近运行)。
就我个人而言,我会在单独的 JOB 中执行此操作,但有些人认为他们在保持简单的情况下,其实不然。