我想看看你想做什么,但怀疑它是否会起作用。这些是我的想法:
- 我只见过用于输出的&TIME1(c)字符串。例如:OUTREC BUILD(1,11,12,&TIME1(:))
会将 HH:MM:SS 格式的当前时间放入从位置 12 开始的输出记录中。据我所知,TIME不能用于您在问题中指出的 ICETOOL/DFSORT COND声明。
- 即使在COND语句中支持TIME,也不支持 +/- 运算符,正如您可能在DATE中看到的那样(例如,DATE1+1获取当前日期加上 1 天)。
不支持向TIME添加一些常量。
- 你有没有考虑过如果你的工作在午夜前几分钟运行会发生什么?在时间上增加一个小时会导致滚动到第二天早上。此时,您需要在 COND 中考虑日期。
可能有用的东西:添加一个前置步骤来运行 REXX 或其他一些 prgram。让该程序生成在后续 ICETOOL 步骤中使用的全部或部分
INCLUDE语句。这是一个示例 REXX 过程,它将创建一个类似于您的问题中给出的INCLUDE语句。记录被写入分配给 DD CNTLREC 的文件:
/* REXX */
PULL DELTA /* Number of hours to add to current time */
PARSE VALUE TIME('N') WITH HH ':' MM ':' SS /* current time */
HH = LEFT((HH + DELTA) // 24, 2, '0') /* add DELTA, check rollover */
QUEUE " INCLUDE COND=(12,8,CH,GE,C'"HH":"MM":"SS"'),"
EXECIO * DISKR CNTLREC(FINIS
EXIT
将此文件分配给适当的 ICETOOL 控制语句 DD,它应该适合您。
警告:此示例不涉及在发生午夜翻转时可能需要对 COND 参数进行的调整。
注意:如果您在 PDS 中将上述 REXX 过程存储为:“MY.REXX(FOO)”,那么您的预步骤 JCL 将类似于:
//RUNREXX EXEC PGM=IKJEFT01
//SYSEXEC DD DSN=MY.REXX,DISP=SHR
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
%FOO
1
/*
//
%FOO 后面的“1”是过程中引用的 DELTA 小时数。