0

我们如何使用 JCL 在 PS 文件名限定符中获取当前日期?

示例输出文件名:Z000417.BCV.TEST.D120713(YYMMDD 格式)。

4

2 回答 2

4

这可以完成,但不一定以直截了当的方式完成。直接的方式是在 JCL中使用系统符号。不幸的是,这仅适用于批处理作业,前提是它已在较新版本的 z/OS 上为作业类启用。

在 z/OS v2 之前,IBM 声明这不起作用的原因是您的作业可以在伦敦的一台机器上提交,JCL 可以在悉尼的一台机器上解释,而该作业实际上可以在芝加哥的一台机器上执行. 哪个日期(或时间)应该在数据集上?没有一个正确的答案,因此我们都针对该问题创建了自己的解决方案,其中包含我们认为对我们的组织正确的答案。

如果您能够在批处理作业 JCL 中使用系统符号,那么您可以使用有效符号列表

实现目标的一种方法是使用作业调度工具。我熟悉 Control-M,它使用所谓的“自动编辑变量”。这些是产品提供的特殊结构。Control-M 解决方案是将您的数据集名称编码为 Z000417.BCV.TEST.D%%ODATE。

一些商店实施了在共享 PDS 中创建成员的计划作业。该成员由一系列标准 JCL SET 语句组成......

// SET YYMMDD=120713
// SET CCYYMMDD=20120713
// SET MMDDYY=071312

...等等。该成员每天午夜由为此目的安排的作业创建一次。该作业执行在该商店中编写的程序以创建这些 SET 语句。

另一个答案是您可以批量使用ISPF 文件剪裁来实现您的目标。这会起作用,因为日期将在提交作业之前在 JCL 中设置。虽然这会起作用,但我不推荐它,除非您已经熟悉文件裁剪和在您的商店中批量执行 ISPF。我认为以本回复中概述的其他方式完成如此简单的事情有点复杂。

您可以使用 GDG 而不是名称中带有日期的数据集。如果您正在寻找的是一个独特的名称,那么这就是 GDG 所完成的(除其他外)。

我想到的最后一个想法是创建一个名称不包含日期的数据集,然后使用Unix 系统服务脚本为 IDCAMS 构造一个ALTER命令(指定 NEWNAME 参数),然后执行 IDCAMS 重命名数据集。

于 2012-07-13T12:20:11.503 回答
0
  1. 如果您使用JOBTRAC/CONTROL-M调度程序加载作业,则以所需格式获取日期可能很容易。格式可以是'OSYMD',它将在加载作业之前被调度程序动态替换。它有多种格式来满足需求。
  2. 您还可以使用 JCL 实用程序,我不记得确切但我会。这从 SYSIN 数据集中获取文件名,并将其作为输出的 DSN 名称。SYSIN 数据集可以在上一步中使用简单的DFSORT &DATE commands. 让我知道你是否需要语法,我更喜欢谷歌和动手。
于 2012-07-16T04:45:28.177 回答