On Thu, 24 Sep 2009 13:01:01 -0500, Chase, John <jch...@ussco.com> 
wrote:

. . .
>
>EIBDATE is, and has been long enough to be "forever", a four byte
>packed-decimal field.  From SDFHMAC:
>
>EIBDATE  DS    PL4                 DATE IN 0CYYDDD+ FORMAT,
>*                                  where C is the century
>*                                  indicator (0=1900, 1=2000),
>*                                  YY is the year, DDD is the
>*                                  day number and '+' is the
>*                                  sign byte (positive)
>

I am not now, and in a former life I never was, a CICS person, but I wonder if 
that field really was like that "forever".

It looks very much like something I have harped about previously - an example 
where, in my opinion, the interface definition "contract" was broken.

The reason I think EIBDATE has not been like that forever, is that I suspect it 
is/was derived from the date as provided by the TIME SVC, which is 
documented as being in the format 0CYYDDDF.

However, if you have a sufficiently old manual to look up the TIME macro, you 
will see that it was not documented like that originally. Up to the late 1980s, 
there was no mention of a "century indicator"  - and no mention of any 
reserved bytes or bits either. The date as provided by the TIME macro was 
clearly documented as being 00YYDDDF.

Long before LINKAGE=SYSTEM was added to the TIME macro, somebody 
decided to "enhance" the TIME macro by adding the century indicator. That 
was not a real good idea, as it invalidated any program that happened to 
depend on all of the high order byte being zero. That was the cause of a 
somewhat infamous Y2K problem in PL/I DATE BUILTIN function. 

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

Reply via email to