题
假设我有一个记录保存时间字段的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
不隶属于 StackOverflow