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

时间:2012-07-13 05:26:37

标签: mainframe jcl

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

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

2 个答案:

答案 0 :(得分:4)

这可以做到,但不一定是直截了当的。直截了当的方式是在JCL中使用system symbol。不幸的是this only works for batch jobs if it has been enabled for the job class更新版本的z / OS。

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

如果您能够在批处理作业JCL中使用系统符号,则可以使用a list of valid symbols

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

某些商店实施预定作业,在共享PDS中创建成员。该成员包含一系列标准JCL SET语句......

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

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

另一个答案是您可以批量使用ISPF file tailoring来实现目标。这可行,因为日期将在提交作业之前在JCL中设置。虽然这样可行,但除非您已熟悉文件定制并在您的商店中批量执行ISPF,否则我不建议使用它。我认为通过本回复中概述的其他方式实现这一点非常简单。

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

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

答案 1 :(得分:0)

  1. 如果使用JOBTRAC/CONTROL-M计划程序加载作业, 以所需格式获取日期可能很容易。格式 可能是'OSYMD',它将被动态调度程序取代 在加载作业之前。它有许多格式可以满足需求。
  2. 你也可以使用一个JCL实用程序,,我不记得,但我会。这将从SYSIN数据集中获取文件名,并将其作为输出的DSN名称。可以使用简单的DFSORT &DATE commands在上一步中创建SYSIN数据集。知道你是否需要语法,我更喜欢google和handson。