John Chase reminded us: > 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)
At which point, Andy Wood wondered: > 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". The short version: Yes, essentially, it has been like that forever, or indeed at least "long enough" that his intended point was valid. The long version: I don't know about "that field" specifically, since I'm not a CICS guy, either. But I just looked at some code I last touched in 1978 and I see it supported the century indicator. Some evidence at hand indicates that I was first exposed to the internals of CICS around 1981-1982, so for me that idea was not likely to have specifically been derived from CICS internals. I don't remember where or when the fact that the 2nd nybble in the classic OS/VS date value is the century indicator (or that the "cc" in "ccyydddS" is the century byte) came from. But after all this is the date representation that has been returned by TIME LINKAGE=SVC for a long time. Perhaps Peter Relson or some other IBMer would be able to enlighten us about when (I predict it arrived on the scene in the MVS/SP 1.2 or 1.3 timeframe, but that's just a guess, here). Regardless, this got me thinking, so I searched my MRM archives for "0cyyddd" and "ccyyddd" (and the like). The SAS date/time INFORMATs SMFSTAMP and RMFSTAMP were originally designed to grok the "century byte." That code might have shipped in SAS 79.1 (for SMFSTAMP at least, RMFSTAMP was added later), but my memory is faulty and my MRM records are incomplete, so it might not have been in (both) until SAS 82 (or even later!). I know it was in SAS 5.xx without question, since I found an old SAS program whose comments document why SMFSTAMP could not be used in it: some IBM product or component was using "yyyydddF' in a date field (for an SMF record it wrote), instead of the SAS-expected "ccyydddF". I don't know when folks in Poughkeepsie got that idea. But by the time IBM had documented that, SMFSTAMP8. already worked that way. If memory serves me correctly, the original suggestion for support of the "century byte" came from Dr. Barry Merrill for use in MXG, a product written essentially entirely in SAS. I think Ed Webb wrote that code for SAS (I know he wrote RMFSTAMP for SAS 82 originally). Regardless, as an idea, it dates back at least as far as 1978, and conceptually as far back as 1976. It was a hot topic at that time for forward-thinking bank IMS data base types because of increased attention to additional auditing requirements expected from The Fed and hints of potential additional expansive requirements for long- term data retention (not just for classic auditing purposes, but for ex post facto FBI money laundering investigations, for example). The days of bank applications keeping only 18 bytes of data for each check were soon going to be over. Remember when your checking account statement listed only the check number, date, and amount? 1976 was when the [NC] inter-bank ACH (EFT) data representation (for "ASCII tapes") was being designed. I raised this issue during some of the meetings, which I had been roped into attending because the tapes to be exchanged (physically) among the banks and the ACH were to be in "industry standard" (meaning ASCII) format -- despite the fact that every last bank that sent any tapes to the Charlotte branch of the Federal Reserve Bank had an [EBCDIC] IBM mainframe. I thought it could potentially be the only significant contribution I would ever make (most of the discussion was heavy with acronyms related to bank operations, such as DDA, TD, DNP, CL & BA, which I did not even try to understand). The COBOL types from every last bank's DP department didn't want to have to support YYYY, since their standard internal date data representation was "0yyddd" -- instead of [as you would expect for COBOL types] "mmddyy" or the like. I suggested "cyyddd". They seemed to give it some serious consideration, but they eventually decided to ignore the issue and used "yymmdd" because the EFT transactions would supposedly always be processed within 3-4 days (meaning that "yy" would never, ever be ambiguous). So much for that, but I knew how the COBOL types thought and built systems: every application job stream at the bank I ever looked at started out with one or more huge SORT steps. I pointed out that a date field of "yymmdd" would not sort correctly starting in 2000. I expected the standard set of excuses in response, but instead I was met with blank, uncomprehending stares. They -- literally -- could not comprehend that transactions in the year 2000 would sort before those in 1999. "Why would the sort package do _that_?" was a question that was (seriously) asked. After the third such event, I went back and told my management chain I couldn't represent the bank any longer, because I was seriously unable to help with any problem they had. It was at that point that I decided it was way above my pay grade to even attempt to educate morons. I didn't have that kind of patience. Thus: 2009-1978 = 31. 31 years is not "forever," but close enough for government work in this business. -- WB ---------------------------------------------------------------------- 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

