我们可以比较JCL的SORT卡中的时间字段

假设我有一个8字节的记录保持时间字段的12位置。我可以将它与当前时间戳进行比较吗?我可以对该字段进行算术运算,例如添加一小时或减去几分钟等。您的回复将受到高度赞赏。谢谢! 附录..为了更好地理解: 在输出中写入记录时,我需要你的帮助来比较时间字段。 例如,我有文件hloding时间戳为8字节的第12个位置。当记录上的时间戳小于或等于当前时间戳一小时时,我想写入输出。在实现这一目标的过程中,我陷入了以下困境:
INCLUDE COND=(12,8,??,GE,&TIME1-1),
什么可能是数据表示(代替
??
)。 在此之前,我们可以使用SORT实现这一目标吗?如果是这样,请给我一张SORT卡(如果可行,请修改我的卡,否则请给你的版本)。此外,请分享材料/回购时间和日期比较和更好的处理。在此先感谢您的帮助。 问候, 拉贾。     
已邀请:
我想看看你想做什么,但怀疑它是否会起作用。这些是我的想法: 我只见过用于输出的& TIME1(c)字符串。例如:OUTREC BUILD(1,11,12,& TIME1(:)) 将当前时间以HH:MM:SS格式放入从位置12开始的输出记录中 据我所知,我不能像你在问题中指出的那样在ICETOOL / DFSORT COND语句中使用TIME。 即使在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参数。 注意:如果您将上述REXX程序存储在PDS中:“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小时数。     
如果DFSORT是最新的,2010年10月,DATE5将具有相当于DATE4但包括微秒,因此就像DB2“时间戳”一样。
 OPTION COPY
 INREC OVERLAY=(1:DATE5)
2013-04-08-19.29.41.261377
    

要回复问题请先登录注册