问题描述
请帮助我将Unix时代转换为TOD时钟(STCK)8个字节。 例如:
- 以十六进制表示的EPOCH时间='175BC71AFE2'X
- EPOCH时间(十进制)= 1,605,184,368,610
- ,我想将此小数转换为STCK(TOD时钟时间)吗?
解决方法
存储时钟指令STCK获取TOD时钟并将其存储在8字节字段中。位位置31大约每1.048576秒增加一次。这是link,提供了一种将STCK转换为当前日期的方法。
请参见以下类似问题的答案:将当前时间转换为TOD值,以使用Rexx here比较LogStream中的时间戳
我不确定您的应用程序是什么,但还要知道有一条使用扩展格式的STCKE指令。
为方便起见在这里引用
This works for me in a Rexx procedure:
Tod = (epoc*4096000000)+9048018124800000000
TOD (Time-of-Day in S360,S370,S390 & z/Arch IBM's archs) is a
64bit counter whose Bit position 31 is incremented every 1.048576
seconds,starting at 1900-01-01.
So,2**32/1.048576 = 4096000000 = 1 sec.
9048... is the difference between 1900-01-01 and epoch 1970-01-01 in TOD units.
有关第7-182页的有关STCK和STCKE格式的更多信息,请参见Principles of Operation。