0

我们有一个 REXX 程序,它创建一个数据集LOG.DYYMMDD.THHMMSS.OUT保存在 DDNAME LOGNM 中。

我们使用 IKJEFT1B 实用程序从 JCL 调用 REXX 程序。

如何在 JCL 中使用此数据集进行进一步处理。我的意思是我如何在 JCL 中引用它,因为数据集名称是动态创建的。

4

2 回答 2

2

您是否使用TSO AllocateTSO Copy命令或类似的 TSO 命令在 Rexx 程序中创建数据集?

  • 如果是,那么您将遇到问题,您将无法在以下步骤中安全地引用数据集(有些方法适用于某些 JES 版本)。我建议您重新编码 rexx 并在 JCL 中分配数据集。
       //LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=(NEW,CATLG), ....
  • 如果您已经使用 JCL 分配数据集,即使用 DD 语句,例如
       //LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=(NEW,CATLG), ....

或者

       //LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=OLD

在以下步骤中使用数据集应该没有问题。

  • 如果您使用 JCL 分配和删除数据集,即使用 DD 语句,例如
       //LOGNM DD DSN=LOG.DYYMMDD.THHMMSS.OUT,DISP=(NEW,DELETE), ....

然后将 DELETE 更改为 CATLG(或通过)

于 2015-02-18T19:49:15.493 回答
1

创建数据集后,您可以像引用任何其他数据集一样在 JCL 中引用它。它是动态创建的并不重要,因为在创建它时会包含数据集配置。它的处理方式与使用 JCL DD 语句创建时完全一样。我不知道一旦创建它,​​甚至有迹象表明它是动态创建的。它与任何其他 PS 数据集没有什么不同。

如果编目:

//SOMENAME DD DISP=SHR,DSN=LOG.DYYMMDD.THHMMSS.OUT

如果未编目,则对其进行编目,然后参见上文。

如果在关闭时删除,请不要删除它,而是将其编入目录,然后参见上文。

注意:我假设您在一个作业中创建数据集并在其他作业中访问它。如果您在同一个 JOB 中访问它,请注意 Bruce Martin 的回答。您的数据集将被“隐藏”,从提交时对 JOB 的处置处理的正常评估,因为数据集仅在该点之后创建,当 JOB 实际运行时(如果它与运行一样公平,它可能会失败立即出现“JCL ERROR”,甚至没有接近运行)。

就我个人而言,我会在单独的 JOB 中执行此操作,但有些人认为他们在保持简单的情况下,其实不然。

于 2015-02-19T00:13:45.597 回答