I was not suggesting that future ETOD values would be stored anywhere, but that calculation of future date-time values with ETOD as an intermediate form could be very useful, given the existence of z/OS macros to convert between ETOD and yyyymmddhhmmssuuuuuu values.

As anyone who has written date manipulation and calculation routines quickly recognizes, conversion into an integer defined as elapsed time from some specific point in time is an essential intermediate step of many date calculations. If the z/OS ETOD manipulation macros currently supported dates past 2042, these macros would allow the ETOD format to be used for this purpose for manipulating all dates of current business interest.

The interface and usage requirements for these z/OS macros actually look much simpler than, for example, calling LE subroutines from assembler. I would not be at all surprised if somewhere someone is already using these macros for this purpose, perhaps not realizing they will officially fail for calculating dates past 2042. The fact that ETOD was promoted as a solution to the post-2042 problem makes it easier for someone to overlook the fact that even ETOD, as currently defined, breaks with post-2042 dates.
  JC Ewing

Gibney, Dave wrote:
   Please explain to me where future TOD/ETOD values are needed in
application code. Especially business applications. I'm fairly sure that
it's a rare application that stores future date/time values in TOD
format.

  Please understand, I'm not talking about log timestamps, even
transaction logs. But, I have a hard time envisioning the need to
evaluate or compare or most especially store a TOD format much more than
24 hours ahead of now.

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On
Behalf Of Joel C Ewing
Sent: Saturday, April 11, 2009 12:50 PM
To: [email protected]
Subject: Re: "New" TOD

There are what looks like some very versatile z/OS macros to convert
"readable" date-time values to and from TOD and ETOD values, which
someone might be tempted to use as a basis for date-time manipulation.

It is still a documented restriction (don't know if it is actually
true)
that even when ETOD values are used that dates handled by these macros
must still fall within the 2042 limitation.  This is an example of
things that obviously need to change well in advance of when the
actual
ETOD overflow occurs into the high order byte, so that code can be
written and tested using dates beyond 2042 well before 2042 arrives.
A
database with projected retirement year for new hires would already be
using dates past 2042, and in 3 years 30-year mortgages will go past
2042; so it is presumptuous to assume we have plenty of time before
full
post-2042 support is required by z/OS.

At some point in the near future the formal definition of STCKE should
be changed to merge in the high-order byte as part of the binary
integer, and z/OS interfaces changed to support nonzero values there.
It wouldn't be unreasonable to continue for another 20 years with the
restriction that actual hardware couldn't support nonzero values for
the
high-order byte for current date-time hardware ETOD clock, but one of
the lessons of Y2K is that application software can persist for 30
years
and delay on the software interfaces will only cost us later.
   J C Ewing

john gilmore wrote:
I confess that I have found this thread puzzling.
IBM has provided the "fixes" needed to cope with the overflow of the
traditional 8-byte/64-bit STCK value that will occur in September
2042.
They take the form of an STCKE value which is 16 bytes/64 bits in
aggregate size  Its structure is not, however, so simple as that of an
STCK value, which is a single 64-bit unsigned binary integer.
The STCKE has three components.  From left to right, low to high
storage
address, they are
+-----+
| x'00' |, a one-byte prefix,
+-----+
+----------------------------//---------+
|<---104-bit unsigned binary integer---->|
+---------------------------//----------+
+-----+-----+
|        |       |, two-byte TOD programmable register.
+-----+-----+
I leave it as an exercise for the reader---The answer can be found
in at
least one Redbook---to determine when this register will overflow for
the
epoch origin midnight, 31 December 1899; but
2^104 = 20,282,409,603,651,670,423,947,251,286,016.
Timely support for STCKE values will certainly be provided  (is in
some
cases already provided) in statement-level procedural languages and
the
like.
HLASM programmers do, however, need to replace STCKs with STCKEs and
make the necessary target field-width changes in existing code (and,
of
course avoid STCKs in new code); but this has been obvious for years.
John Gilmore Ashland, MA 01721-1817 USA
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to