Guesses about windowing : LUSENET : TimeBomb 2000 (Y2000) : One Thread

Summary of my reading (I'm not an IT person):

As a remediation technique, windowing can work very well provided:

1) The data being handled never exceed a 100-year span. This requires good knowledge of all possible data to be handled;

2) The interfaces with other systems are *very* carefully analyzed and implemented. In many cases, it takes a *lot* of nontrivial code, and pretty damn exhaustive interface testing to get it right;

3) The pivot year being used is either 'smart' or easily changed. Some systems use a sliding window, where the pivot year might be 30 next year, 31 the next year, and so on. That is, 30 years (or however many) in the future at all times. Other systems use a pivot year defined externally (in a data file), so that the pivot can be changed easily without rewriting any code or rebuilding any systems.

Windowing is a shortcut because it allows programs to be modified only where they handle dates. Expansion modifies data files, and requires modification to every program that reads or writes anything to these files (which is almost all of them).

So the real danger with windowing is when it isn't done correctly. Either the interfaces weren't well thought out (we'll know in a few decades, maybe), or the pivot dates were hardwired into the code, requiring another major rewrite as that date approaches (if indeed anyone is still aware that the danger lurks in the code at all!). This happens because hardwiring dates into the code is quick and easy, whereas rewriting the code to use an externally supplied value is harder and has more overhead.

(And as a footnote, I've heard of several sizeable systems created in the 1980's using 4-digit years from the start. All that these companies had to do was turn the dates ahead and make sure nothing went wrong. They were already compliant. Have they announced this? Not really. They say they 'expect no problems' with the century change. And who doesn't say that?)

I invite comments and corrections from the IT people here who actually work with windowing, rather than just read about it.

-- Flint (, March 15, 1999


Trying to upstage me Flint (grin)?

You do have some good points. The big question - how many systems are being well thought out? Since it is a short-cut, how much time and effort is being put in to it? It is also in part an "educated guess". Remember the story about the 104 year old getting the notice to report to kindergarten? If the magic year is 30, the same would happen to a 70 year old. It can be a pretty good guess in cases where the date range of data is limited. My $.02 <:)=

-- Sysman (, March 15, 1999.


Thank you for the balance of reason. I read the previous thread on this and hit the roof. Youve stated the isuue succinctly and correctly, my hats off to ya on this one.


Sysman, im starting to question your handle there. Computers dont guess at anything, unless your doing fuzzy logic or some sort of optimization technique. Windowing is neither its a simple IF statement and requires neither.

-- nyc (, March 15, 1999.

Then it would appear that windowing is perfectly acceptable, *provided* the technique is appropriately applied and the implementation isn't sloppy? But sloppy or misguided code is always a problem with any technique, isn't it?

In other words, it sounds like the article that was posted was an exaggeration, a scare story and not properly descriptive of what's (hopefully) happening in intelligent shops.

-- Flint (, March 15, 1999.

nyc - Yes, it is a simple IF statement. The concept of windowing is an educated guess. <:)=

-- Sysman (, March 15, 1999.

Flint - Two points.

Doing a better job makes it more complex. The more complex, the higher the induced error rate from making changes.

At what point does it become more complex than just doing it right and expanding the dates? It is a time saving technique remember.


-- Sysman (, March 15, 1999.


In other words, it sounds like the article that was posted was an exaggeration, a scare story and not properly descriptive of what's (hopefully) happening in intelligent shops.

Thats my perception of it yeah. Although if the made the mistake of using this on peoples ages with like a 10 year window, they better pray they replace that system within the next few years.


Were obviously gonna disagree on the semantics of the word guess. So I guess well just leave it at that :)


(eagerly awaiting the next headline.

"Government reports human beings make mistakes..... Y2k doomed to failure")

-- nyc (, March 15, 1999.

Windowing is not always faster and easier than data expansion. Probably the biggest problem is recreating historical files with the expanded format. Think about it. Expand the data. Change the file descriptor in every program then recompile. But remember, the descriptor is almost certainly a copy statement that pulls the file descriptor out of a common library. So you actually only have to change it once. Databases are a bit trickier, especially if there is an extract to a flat file. Still, the date logic itself remains untouched. If the date logic was okay before, its still okay. (I will refrain from posting a fully fleshed COBOL example in recognition of all the non-programmers here.) I'm not saying data expansion is non-trivial, but its not VASTLY worse than windowing and certainly is far more permanent.

-- RD. ->H (, March 15, 1999.

Hi RD. I think it depends on the percentage or programs that actually need date logic changes. If it's only a small percentage, then yes, even "smart windowing" is quicker. But as the percentage goes up, at some point it gets easier to just change the "copy book" and recompile everything, rather than put extra logic in most of the programs and test it. Yes, you need to change existing files, but it's a fairly simple program to stick a 19 in front of dates. Again just my $.02. <:)=

-- Sysman (, March 15, 1999.

Depends on the date logic and implementation RD. Even in Dbase, the CTOD function is not compliant. You have to write another or work around, or write it in C and call it from Dbase.

-- Paul Davis (, March 15, 1999.

nyc - Before we agree to disagree, do you get my point? Take the 104 year old for example. The computer "guessed", wrongly in this case, that he was 4. This may be an extreme case, but there are many situations where it really is a guess.

One more point. Windowing doesn't always work. The best example is where dates are sorted. You can sometimes use other tricks here, like converting fields from character to binary. But then you get into the extra logic needed to convert back and forth, and again you've got to update existing files. I guess I'm up to $.04 now! <:)=

-- Sysman (, March 16, 1999.


In reference to your point on interfaces, windowing is used because the interface files themselves can be left untouched. This eliminates many potential errors.

-- Hoffmeister (, March 16, 1999.

"Windowing" has been discussed before, many times, on this forum. But may have dropped off the bottom, even in the subject archives.

Anyway, bottom line, you can discuss its merits and uses all you want, but the fact is, it sucks. It's just another shortsighted patch that will have to be fixed or patched again, in the future. And, if the window pivot is 2025 for a bunch of companies, nothing will be done until 2024-1/2 by them. And if those 2025 companies are dealing with companies that have pivots of, say 2020 and 2030, let the games begin.

You may think, hey, 2025 is 25 years away, no problemo.

Well, 25 years ago was 1974. Everyone was blithely using two digit dates. No problemo (?)

-- vbProg (, March 16, 1999.

Hi, posted this yesterday; it's what the public is reading about windowing:

If it is supposed to work so well, why not "fix on failure" now?

xxxxxxx xxxxxxx xxxxx

-- Leska (, March 16, 1999.

Moderation questions? read the FAQ