|
|
 |
|
|
|
|
earlier when it was more manageable. For any given single IS manager, of course, this is a no-brainer. Pressed by clients for service and pressed by upper management for performance, his options are: |
|
|
|
 |
|
|
|
|
Solve the problem now. Take the personal responsibility of telling management that the division has an unplanned, unbudgeted problem which was easily foreseen, could easily have been prevented, and will now cost the organization millions of dollars and absorb all the division's resources for years. |
|
|
|
 |
|
|
|
|
Ignore the problem. Move up the ladder to another position unassociated with the problem, reap earthly rewards, and let some unfortunate successor get stuck with the problem. The fact that the problem grows larger in the interim is irrelevant to his personal career. |
|
|
|
 |
|
|
|
|
Without adequate and knowledgeable supervision and without an incentive to report and solve problems, it is possible for individual managers to successfully play this game until the last minute. What is personally beneficial for an individual, unfortunately, is disastrous for the organization as a whole. |
|
|
|
 |
|
|
|
|
Maintenance contracts. Many software houses are taking the attitude that Y2K is so large a problem that it falls outside the scope of the maintenance contract. This self-serving attitude is guaranteed to infuriate many customers. |
|
|
|
 |
|
|
|
|
Compliance. Y2K has already generated enough interest among the more computer savvy to make Year 2000 compliance a software contract issue. Defining the language and responsibilities in this matter is tricky and dangerous. There are no cheap mistakes in this matter. |
|
|
|
 |
|
|
|
|
Y2K will probably force some changes in the way contracts are written and negotiated in the future. |
|
|
|
|
|
|
|
|
Language. Y2K is not language specific. The problem arises from the design of data records and is a management and system design problem. |
|
|
|
|
|
|
|
|
Y2K can be coded in C. One well-known and Y2K-related pitfall in UNIX/ANSI C concerns struct tm, the "broken-down time" fields. The year is offset from 1900. In A.D. 2000, the offset is therefore 100. If a two-character output area is designated, the printf family of functions will typically produce 10, not 100, and will corrupt memory with the following byte. One can avoid this immediate nastiness by forcing the use of two digits. This can be done by using the year modulo 100, as in: |
|
|
|
 |
|
|
|
|
printf ("%2d", tm->tm_year % 100); |
|
|
|
|
|