假设我有一个记录保存时间字段的12个字段,为8个字节。我可以将其与当前时间戳进行比较吗?我可以对提交的算术操作做算术操作,例如增加一个小时或减去几分钟等。您的回答将不胜感激。谢谢!

附录..为了更好地理解:

在编写输出记录时,我需要您的帮助来获取时间字段。例如,我在文件Hloding时间戳8byte的时间戳中有12个位置。当记录上的时间戳小于或等于当前时间戳一个小时时,我想写入输出。在实现这一目标的过程中,我被困在下面:

INCLUDE COND=(12,8,??,GE,&TIME1-1),

数据表示是什么(代替 ?? 为了这。)

在所有之前,我们可以使用排序实现这一目标?如果是这样,请给Gimme排序卡(如果可行的话,请修改我的卡您的版本)。还请按时间和日期进行比较和更好的处理。预先感谢您的帮助。

问候,拉贾。

有帮助吗?

解决方案

我认为看看您要做什么,但对它是否有效有疑问。这些是我的想法:

  • 我只见过 &time1(c) 字符串用于输出。例如: Outrec Build(1,11,12&Time1(:))将当前时间以HH:MM:SS格式放入从位置12开始的输出记录。 时间 不能在冰et/dfsort中使用 条件 如您在问题中所指出的那样。
  • 即使 时间 在里面得到了支持 条件 陈述,+/-运算符不受支持,因为您可能会看到 日期 (例如。 date1+1 获取当前日期加1天)。为一个添加一些常数 时间不支持。
  • 您是否考虑过如果您的工作要在午夜前几分钟跑步会发生什么?增加一个小时的时间会导致第二天的早晨。那时,您需要将日期带入COND中。

可能有效的东西:添加预档以运行REXX或其他一些prgram。让这个程序生成全部或一部分包括 随后的冰室步骤中使用的语句。这是一个示例REXX过程,将创建一个 包括 与您的问题中给出的相似的陈述。记录写入分配给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 Control语句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”是该过程中引用的小时数。

其他提示

如果您的dfsort是2010年10月的最新情况,那么date5等于日期4,但包括微秒,因此像db2的“时间戳”一样。

 OPTION COPY
 INREC OVERLAY=(1:DATE5)

给予

2013-04-08-19.29.41.261377
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top