Regularly we need to compare local time to absolute time UTC (or GMT) programmatically.
This can be done in various ways.
The cleanest way is to use the static system symbols that z/OS defines. See also section “Static System Symbols” in the z/OS Initialization and Tuning Reference.You can easily use this in a Rexx program. For example:
/* Rexx */ /* Display UTC Time elements */ say mvsvar('SYMDEF','HR') say mvsvar('SYMDEF','MIN') say mvsvar('SYMDEF','SEC') say mvsvar('SYMDEF','HHMMSS') say mvsvar('SYMDEF','LHHMMSS')
It is also possible through Unix System Services date command to obtain UTC:
date -u Wed Aug 21 15:20:42 GMT 2019
A more complex way (old fashioned) to achieve the same is addressing the CVT extension block:
cvt = c2d(storage(d2x(16),4)) cvtext2 = c2d(storage(d2x(cvt + 328 ),4)) offset = ((c2d(storage(d2x(cvtext2+56+2),4))) * 16) /3600000000 timezone = "+0"||offset||"00"
Thanks to Henk for the latter two solution alternatives.
— Niek de Greef