New York Times Sunday article- COBOL quiz

greenspun.com : LUSENET : TimeBomb 2000 (Y2000) : One Thread

just finished reading the NYT front page article. It is quite interesting in tone. It enunciates many of the problems quite well, but gives a very short pollyannish 'things will work out, muddle through' conclusion. Still, its going to hit a lot of people fairly hard. Russian programmers fixing American systems, a single 7 million line program, embedded systems failures, Trillion-plus cost, etc, etc. It didn't examine the Feds problems very well, but did mention the 300% increase in their budget for Y2K over the last 18 months.

And now for a quiz. The NYT article has a color photograph of a computer screen showing a Y2K code change in a COBOL program. For those of you COBOL fluent, examine the screen and tell me what is ominous (or odd) about the change. I will post my answer in a few days.

-- RD. ->H (drherr@erols.com), December 27, 1998

Answers

Computers and Year 2000: A Race for Security (and Against Time)

xxxxxxx xxxxxxx xxxxxxx

-- Leska (allaha@earthlink.net), December 27, 1998.


Anybody notice the stealth rubber ducky watching above the Russian programmer? Fruitcake league, there is a mole in our midst!

xxxxxxx xxxxxxx xxxxxxx

-- Leska (allaha@earthlink.net), December 27, 1998.


Great article. Times has been on the cutting edge for years on the Y2K. You have to register to read it. After you read it the and leave the Times site thier server still tracks you to see where you go on the net. OOOOh, scary no?

-- Jimmy Bagga Doughnuts (jim1bets@worldnet.att.net), December 27, 1998.

No, what's more scary is you figuring out how to register with the NYT. And in your case, I'd want to track your trail of detruction through forums and newsgroups on the net too - it would be akin to the white-coated ones tracking a mental patient in an asylum.

-- Andy (2000EOD@prodigy.net), December 27, 1998.

And I meant that in a loving, caring way Jimmy.

-- Andy (2000EOD@prodigy.net), December 27, 1998.


RD,

Well, I don't know about ominous or odd, but they are using windowing, which, in this case and for this application should be OK until 2050. And they are still using a 2 digit year.

Any "year" from 00 to 49 in positions 3 and 4 will be interpreted as century 20 which is then placed into positions 1 and 2 of the same variable. Any year from 50 to 99 will be interpreted as century 19 and placed into positions 1 and 2 of the same variable.

Of course, if they're writing this back to the database with only two digits, the collating sequence is hosed. Interesting, especially for a field with a name like "WS05-A-GAS-YEAR-PURCHASED".

I'm thinking some of these "quickie" solutions will yield more problems in production than originally anticipated.

-- Nathan (nospam@all.com), December 27, 1998.


Leska, that rubber ducky is a sign. Does the code have any references to fruitcake, RD?

Seriously, now that the Christmas selling season, other than year-end sales, is past, I suspect well see more media focus on Y2K.

Go to the N.Y. Times links http://www.nytimes.com/library/tech/ reference/millennium-index.html for other Y2K articles.

Diane

-- Diane J. Squire (sacredspaces@yahoo.com), December 27, 1998.


Hope everybody they are exchanging data with used the same window, and can simultaneously use the information from the same window correctly. Ah well....

-- Robert A. Cook, P.E. (Kennesaw GA) (cook.r@csaatl.com), December 27, 1998.

# # # 19981227

Nathan:

There are products on the market that handle sequencing of 2-digit date using user-selected "windowing" methodology/ies. One that I am familiar with is an IBM mainframe product: SyncSort MVS ( see URL

"SyncSort is a utility product that has no Y2K-specific dependencies." "Here are the Y2K-specific features that have been added to SyncSort:

Fixed or sliding century window available for all SyncSort applications, including MAXSORT applications (CENTWIN parameter). Windowing is available for sort/merge, record reformatting, and record selection.

Several special Y2K data types, some of which allow you to keep your data in packed decimal (PD) format

Use of $ORTPARM to apply the century window to invoking COBOL and other programs. "Stacked" $ORTPARMs can be used to apply a century window to several invoked sorts in a single program.

SyncSort can also be an extremely important Y2K tool because it can change huge amounts of Y2K-sensitive data to Y2K-ready data in minutes. You only have to specify a few simple control statements. In addition, you can convert data with SyncSort in one step for use in a later step.

SyncSort can also perform a wide variety of data manipulation functions while it is making your data Y2K-ready. It can select, reformat, summarize, eliminate duplicates, count records, and sort, all in a single job. You can often substitute simple SyncSort applications in place of cumbersome scripts or COBOL programs, which will take many hours to revise, re-compile, and test for Y2K-ready."

While I discovered, and communicated to SyncSort, functionality flaws in an early ( circa 1997 ) released upgrade of the product, it provides an acceptable _kluge_ to prevent collating sequences from getting hopelessly "hosed."

Robert A. Cook:

As you so astutely point out, windowing coordination is a nightmare scenario. It's a bandaid solution. There are a number of too-often- trivialized ( lost on management! ) problems inherent with selection ( range ) and implementation of ANY "windowing" methodology:

1. There is NO UNIVERSAL STANDARD! 2. The range mostly application dependent. 3. The selected range may not be broad enough in span. 4. Date data exchanges with external systems may not synchronize. 5. Algorithms using dates MUST BE RE-VALIDATED.

... And all the precipitous ramifications, thereto, therefrom, thereafter, ... ad infinitum in perpetuity!

What a nasty web has been cobbled by inept management decisions!

THE ONLY TRUE SOLUTION IS UNIVERSAL ADOPTION OF A STANDARD ( e.g., ISO 8604 ) AND STORAGE OF FULLY QUALIFIED ( UNAMBIGUOUS ) DATES.

Great thread, folks!!

Regards, Bob Mangus # # #

-- Robert Mangus (rmangus@mail.netquest.com), December 27, 1998.


Bob, I wonder how many changed sort parm's will be overlooked when the systems are copied into production?

MoVe Immediate

-- MVI (vtoc@aol.com), December 27, 1998.



Bob,

You mentioned the ISO date standard. Did you have any experience with ISO-9000 certification? If you will recall, this was all the rage a few years back, with many, many corporations loudly proclaiming their ISO-9000 certification.

Didn't this standard (indirectly, at least) address Y2k -- requiring unambiguous date formatting? If not, I find that incredible. If it did require standardized date formatting, there must have been many, many bogus ISO-9000 certifications!

-- Nathan (nospam@all.com), December 28, 1998.


# # # 19981228

Nathan:

I was a "certified," ISO-9000-3 auditor at Ford Motor Company for some three years; hence my firsthand experience looking at so many ( ugh! ) lousy processes.

The SHAM in the ISO Certification scheme--like so many other ill- conceived socialist-collectivist, dumbing-down charades perpetrated and followed by sheeple--is that it's another one of those "feel- good" exercises in fruitless futility. ( Yes! _That bad!_ )

It was all I could do to restrain myself while dutifully exercising my assigned "auditing" responsibilities for the painful duration.

Three simplistic "principles" form the ( process ONLY ) basis for ISO Certification:

1. Say what you do. ( "We will use 2-digit year representations in any code!" ) 2. Do what you said you were supposed to do. ( "We, indeed, coded 2- digit year representations in _the code!" ) 3. Prove that you did what you said you were to do. ( "Ooops! There's those dang 2-digit year representation in the--now-ambiguous-- code! _Just like we _said we were going to do! Gosh ... How 'bout _that!"

( Sound familiar? ... )

That big sucking sound you "hear" ... Hear it? [ phhht!*! ] ... is the void of whether the dern process IS ANY GOOD!! IOW: Where's the measure of the QUALITY?!?

That's the fatal flaw in the socialist-conceived ( by European's!) ISO Certification. Euro laws forbade sales of products ( e.g., vehicles ) by non-ISO'ed vendors in their pathetic fiefdoms after 1996! Of course the global corporate-statists would go along with this hollow program to redefine "value" into shear vapor. It keeps a lot of folks busy ( i.e., generating useless process documents, auditing ( without--that dirty word: "judging" ) the useless processes. Why do you think we ( consumers ) are subjected to the endless purchase-reject-return loops and hoops each and every day? It keeps _us_ fruitlessly busy, too! *sigh*

Will these lessons learned ever stick? The NEXT great civilization to rise out of the "ashes" of Y2K will now get the chance to give it a shot!

Regards, Bob Mangus # # #

-- Robert Mangus (rmangus@mail.netquest.com), December 28, 1998.


Bob,

Thanks for that synopsis of ISO-9000. At least Europe weeded out all those companies that weren't doing what they thought they were doing?!

And people wonder why I become more and more cynical with each passing day!

-- Nathan (nospam@all.com), December 28, 1998.


I didn't realize at first that this thread was about windowing. If I had, I would've put the story of the 83-year-old whose paycheck was threatened here. A city's payroll processor used (19)18 as a benchmark, so the employee with a 1915 birthdate would have been assumed by the system to have been born in 2015.

-- Kevin (mixesmusic@worldnet.att.net), December 28, 1998.

Okay folks, the following is a little technical so if you don't want to hear about my geekview on this hit the Back key now. :) RD H

The following is from the front page photo of the NYT:

1 *Move WS05-A-GAS-YEAR-PURCHASED (WS-RATE-SUB) TO RM-GAS-YR-PUR 2 Move WS05-A-GAS-YEAR-PURCHASED (WS-RATE-SUB) TO FIELD-Y2K....

3  IF FIELD-Y2K (3:2) < Y2K-50-YR
4     MOVE Y2K-20-CENTURY TO FIELD-Y2K (1:2)
5     ELSE
6       MOVE Y2K-19-CENTURY TO FIELD-Y2K (1:2)
7      END-IF

8   MOVE FIELD-Y2K-R TO RM-GAS-YR-PUR

.....
===============

Line 1 is the original code now commented out as a remark inorder to make the Y2K change. RM-GAS-YR-PUR is probably a temporary work variable which will be used later on. Originally, data is being passed into the work variable from an iterative record or records. Notice that the original year data is being passed into a two dimensional array and then examined by the IF statement for action. The pivot change (ie century data added) is added to the same array proximal to the two digit year. Then, a part of the array is moved to RM-GAS-YR-PUR which now has 4 digits as opposed to the original two.

The use of a 2-dimensional array is awkward at best. I can't really imagine a good programmer writing this code. You have to redefine the original definition of RM-GAS-YR-PUR anyway so why not just add a couple sublevels and work with those.

01 RM-GAS-YR-PUR. 03 RM-GAS-CENT-PUR PIC 99 03 RM-GAS-DIGIT-YR-PUR PIC 99

Then

  Move WS05-A-GAS-YEAR-PURCHASED (WS-RATE-SUB) TO RM-GAS-DIGIT-YR-PUR
  IF RM-GAS-DIGIT-YR-PUR < Y2K-50-YR
4     MOVE Y2K-20-CENTURY TO RM-GAS-CENT-PUR
5     ELSE
6       MOVE Y2K-19-CENTURY TO RM-GAS-CENT-PUR
7      END-IF

This is very hard to explain to a non-programmer, but the way they are using a 2 dim array is very prone to error. Thats why I called it ominous. This particular code is not a very good. Also, as others have pointed out, if the expanded year is written out to a file anywhere (even temporarily- like sorting), you could have 2 digit and 4 digit dates flying around. I also don't like their naming conventions. I would change Y2K-CENTURY-20 to Y2K-CENTURY-IS-20, etc. Oh well, at least it isn't in Russian! The decision to use windowing as the main remediation tool in most programs is going to have disastrous long term(or not so long term) consequences. I agree with R Mangus totally. ITS THE DATA STUPID!



-- RD. ->H (drherr@erols.com), December 28, 1998.


how do you mean IS as in IS now or is

-- jp (joe@ezwb.com), December 28, 1998.

RD,

2 dim array? Aren't they simply "substringing" this variable?

If FIELD-Y2K (3:2) < Y2K-50-YR
* starting at position 3, compares the next 2 characters to the
* contents of Y2K-50-YR

MOVE Y2K-20-CENTURY TO FIELD-Y2K (1:2)
* starting, at position 1, overlays the next 2 characters with
* contents of Y2K-20-CENTURY

Yes, a little kludgey, but it should be OK...

-- Nathan (nospam@all.com), December 28, 1998.


Yeah, Its a COBOL substring ala BASIC. However, the logical effect is similiar to using the old COBOL 2-dim array. In both cases you are using a 2 set coordinate reference.However, I apologize for the mis-phrasing. My point is in fact your point. It is "kludgey" coding. It will work but it can be easily screwed up.

-- RD. ->H (drherr@erols.com), December 29, 1998.

Moderation questions? read the FAQ