我们如何使用 JCL 在 PS 文件名限定符中获取当前日期?
示例输出文件名:Z000417.BCV.TEST.D120713(YYMMDD 格式)。
这可以完成,但不一定以直截了当的方式完成。直接的方式是在 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 重命名数据集。
JOBTRAC/CONTROL-M
调度程序加载作业,则以所需格式获取日期可能很容易。格式可以是'OSYMD',它将在加载作业之前被调度程序动态替换。它有多种格式来满足需求。DFSORT &DATE commands
. 让我知道你是否需要语法,我更喜欢谷歌和动手。