![]() Number 194 - July 1999 |
| Y2K | |
| by Frank Tubbs & Bob Russell, Microsoft Corporation | |
|
The approach of the year
2000 has given rise to a whole new industry for the media. There is so
much data available that it is difficult to sift the wheat from the
chaff and figure out whether there is a real problem. In this issue we
could deal with the basic information, and there is plenty more on the
Web site (www.microsoft.com/y2k)
if you want to read more about it. The following is excerpted from the
answers to Frequently Asked Questions on that site. If you're already
saturated with data about the Y2K problem, I sympathize; on the other
hand, some straight scoop should help to alleviate some of the media
attempts to generate panic in the streets over the issue, and hopefully
give guidance on taking care of the potential problems.
What is the Year 2000 problem? Answer: The Year 2000 issue is not difficult to understand from the technical point of view. It is the scope of affected systems and business processes that makes this problem so challenging. The problem stems from three main issues: two-digit date storage, leap year calculations, and special meanings for dates. The implications of these three issues need to be addressed by all organizations. Unfortunately, there will be no simple fix to the year 2000 issue, no "silver bullet," due to the fact that the use of dates for calculations is pervasive throughout software and that usage is not standardized. Two-digit date storage The most common and most damaging problem occurs when software has been written to store and/or manipulate dates using only two digits for the year. Calculations built upon these dates will not execute properly because they will not see dates in the 21st century as being larger numbers than those in the 20th century Example: 2000-1998 = 2 but 00-98 = -98. (or 98 if the application does not allow negative numbers). The result of this might be that your accounting software sees all accounts receivable as overdue due to the fact that no customers have paid in 98 years. The two-digit date convention assumes that the century is "19." This assumption was regarded as a necessity in the early days of commercial computing because of the high cost of computer storage and memory. Today, the usage of two-digit dates is perpetuated by the sociological context in which dates are referenced in our daily lives. Individuals choose to use two-digit dates due to the fact that the human mind handles dates contextually whereas the computer requires the explicit expression of dates. Leap year calculations Leap years are calculated by a simple set of rules. Unfortunately there are systems and applications that do not recognize the year 2000 as a leap year. This will cause all dates following February 29, 2000 to be offset incorrectly by one day. The rules for leap year calculations are as follows. A year is a leap year if it is divisible by four, but if it is divisible by 100 it is NOT a leap year, but if it is divisible by 400 it IS a leap year. Thus, the Year 2000 is a special case leap year that happens once every 400 years. Special meanings for dates The third main Year 2000 problem is more commonly found in older code bases. In order to write more efficient code which allowed for the use of less memory date fields were sometimes used to provide special functionality The most common date used for this was 9/9/99. In some applications the use of the special date meant "save this data item forever" or "remove this data item automatically after 30 days," or "sort this data item to the top of the report." Within each organization, special date codes may have been used differently. This is one of the main reasons that no single tool can locate all uses and/or misuses of date data. Technically the problem is simple to understand. The solutions to the problem tend to be fairly simple as well. The scope of the problem, however, makes it difficult. Every piece of hardware, software, and embedded system must be taken into account. Everything from mission-critical central accounting systems to small convenience applications must be examined for date-handling and how those dates might affect the rest of the environment. Why do we have this problem? Answer: Expensive memory costs. In the early days of Information Services, memory was very expensive. By asking the developers to conserve just two bytes per record in memory (the "19" of 1975, for example), organizations were able to realize millions of dollars in savings. In addition, older applications were not expected to be used 20-30 years into the future. Furthermore, the programming habits and processes put into place in the early 1970s still exist today. The use of the two-digit shortcut for efficiency is still utilized today. Sociology: There is a sociological aspect to the problem as well. In our society people automatically represent years in two digits. For example, when was the last time you wrote out all four digits of the century on a check? When was the last time you filled in your birth date on a form and used all four digits of the year? Human nature plays a big part in why this problem exists. In the 1960s, programmers only used a single digit for the year. In 1968, they started to look at 1970 and wondered how they were going to deal with it. At the time, they knew that the year 2000 would be a problem, but it was so far in the future. Programmers never imagined that their applications would still be in use today and that they would therefore be susceptible to the Year 2000 problem. What are some potential consequences of Year 2000 problems? Answer: The potential impact of the Year 2000 problem is difficult to quantify There are two possible scenarios to be examined. Complete system breakdown. The first form of failure is that of complete breakdown. It will be easy to identify this because a complete failure is obvious and, therefore, easy to detect. In the event of a complete failure, contingency plans can be implemented and immediate action can be taken. For most individuals working on the Year 2000, this is the preferred type of failure due to its conspicuous nature. Examples of a complete breakdown: An order entry application might not allow any orders to be entered after the year 2000 if the error handling written into the application is looking for 00 as an invalid number. In this situation, it would become immediately apparent that the application was broken due to the fact that business would be stalled. An embedded system that has control of an obvious physical function such as an air conditioner control unit could fail if there was date handling built into the maintenance systems. If this device were to fail completely it would be obvious due to the lack of cool air. Partial breakdown: The second form of failure is that of partial breakdown. The partial breakdown is the more difficult problem to recognize and will have further-reaching consequences than that of complete failure. If a system only partially fails, it may not be obvious to the user of that system. In the case of financial transactions, a bad calculation may produce results that are assumed to be correct. The result of a partial failure will be the loss of trust in the computing environment's ability to deliver reliable, consistent information. Examples of a partial breakdown: An application designed to calculate mortgage payments might produce an incorrect result. If the application were to cease functioning it would be very obvious that there was a problem. But, if the application still produces a result, it becomes incumbent upon the operator of that application to recognize that there has been an error in the calculation. A business phone system may experience partial failure in some subset of its features. In most cases, a dial tone will still be available and the phone may seem to function normally The problem may occur with the reports that detail the duration of each phone call. For organizations that use this information for billing and/or tracking, the erroneous reports may not be immediately recognized and automated billing systems may generate faulty invoices. What kinds of computer systems are affected by the Year 2000 problem? Answer: This problem exists in the mainframe, mini, Unix and PC environments. The mainframe has the worst overall problem, but there are Year 2000 concerns on other platforms as well. How can I get the Microsoft Year 2000 Product Guide? Answer: Browse www.microsoft.com/year2000. The Web site will provide an easy-to-use interface to navigate Microsoft's Year 2000 information. Beyond the Product Guide, the Microsoft Year 2000 Resource Center will provide additional information for organizations dealing with the Year 2000 problem. Year 2000 Tools Reference Guide. There will be a section dedicated to tools vendors. The tool vendors section will be a directory of third-party tools vendors who are providing Year 2000 tools for the Microsoft platform and products. We will include information concerning vendors associated with the PC platform in general. The list of third-party tools vendors will be where organizations and individuals concerned with the Year 2000 issue and their desktop/PC Server environments will find the tools they need to be successful. Each vendor will include a paragraph on their products, contact information, and a technical summary of what they do. Microsoft will not evaluate the tools, nor will we make recommendations to our customers as to which vendors to choose. Support channel. The final section of the site revolves around our strategic partners and our solution provider channel. The lack of human resources within the legacy environment is putting a huge strain on Year 2000 projects. Today the labor pool of PC expertise has hardly been touched for Year 2000 work. Microsoft and its partners will be able to provide thousands of technically trained professionals to assist any organization with its Year 2000 concerns. |
While none of them could
harm users don't expect the viruses to have their teeth filed for long.
Soon they could cause significant problems for users who get them.
Technically, the viruses resemble normal programs. There is no security
in Windows that limits what VBScript can do, said Grebert. Can it read
your files? Yes. Can it format your hard drive? Yes."
What are the main points of exposure for the PC? Answer: Six layers. The PC has 6 main layers of exposure to Year 2000 problems. 1. Hardware 2. Operating System 3. Runtime Library 4. Applications 5. Custom Code 6. Data Interfaces Hardware: The most common hardware problem is associated with the BIOS (Basic Input/Output System) of the PC. The BIOS is responsible for providing the basic information which the computer needs to boot. It also contains one of the critical clocks used by the PC. The most common hardware problem presented by the Year 2000 has to do with the proper role of the first two digits of the century portion of the date from "19" to "20." For a BIOS that is affected by this problem, it is possible to properly function once the date is properly set to 2000. The difficulty is in getting it there. The PC real-time clock keeps track of the time and date. The BIOS receives time/date information from the real-time clock in a two-digit century format. The BIOS then adds the necessary bits to store the date in four digits. When the date changes from "99" to "00" but the century bits do not change from "19" to "20," the operating system sees 1900 instead of 2000. Microsoft operating systems do not recognize 1900 and automatically reset the system clock to 1980, our base date. The change of date suddenly to 1980 is one of the best ways to identify this iteration of the BIOS problem. By understanding what the error result will be, organizations will be able to identify problem machines quickly. Once the broken machines are identified, repair of those systems can begin. A BIOS fix has been inserted into the newer Microsoft Operating Systems to help alleviate this problem. Windows NT 3.51(sp5), Windows NT 4.0, Windows 98 and Windows NT 5.0 all have logic built into them that will recognize 1900 as an error case and will automatically compensate by setting the date to 2000. The Microsoft BIOS correction mechanism will only correct the most common BIOS issue described above. There are other BIOS problems that we do not compensate for. For example, some BIOS's revert back to 1900 every time the system reboots. For all of the year 2000, the Microsoft fix will set the clock to 2000 every boot. When that system reaches 2001 and it resets itself to 1901, Microsoft's fix will not recognize it as a Year 2000 problem and will revert back to the base date of 1980. Other BIOS's have error handling built into them that resets a 1900 date before our operating system begins to interact with the BIOS. If that date is a valid date, such as 1993, then the Microsoft operating system will assume that it is correct. Microsoft recommends that all BIOS platforms be identified and tested to ensure functionality beyond 2000. To see Microsoft's recommendations on how to address this issue, please see Question #15, titled "What are Microsoft's recommendations for working with the PC BIOS issue?". Operating systems. It is important for the customer to identify all operating systems being used and obtain appropriate Year 2000 information. The Microsoft Product Guide discusses specific date handling for Microsoft operating systems. Microsoft operating Systems all store and manipulate dates in four-digit formats. Additionally, the system clocks have been designed to recognize the year 2000 as a leap year. Within the operating system, the file systems have been designed to handle dates beyond the year 2000 as well. The File Allocation Table (FAT) 16 bit and 32bit versions used by MS-DOS, Windows, Windows 95 and Windows NT recognizes dates up to 2108. The File Allocation Table for the Windows CE operating system recognizes dates up to 2999. The Windows NT File System (NTFS) recognizes dates to 29,601. Applications: Some applications have internal calendars that could miscalculate the leap year; others may force a two-digit date, depending on the manufacturer of that particular application. Microsoft applications that store and manipulate dates do so in four digits. We calculate the year 2000 as a leap year. We do not use any special date codes. Runtime Library: Runtime Libraries are files that provide functionality to applications. Users do not directly interact with runtime libraries; rather, it is the users' actions with an application that utilize runtimes. There is interdependency between the runtime libraries and applications. By loading a Windows application you are using runtime libraries. It is possible, though, that you can be running an application such as Excel and then add a third party product that provides yet another runtime library. If that is the case, the dependency roles are reversed. If a runtime library mishandles the date, it doesn't matter if the application, operating system or BIOS were designed properly. The environment is still not ready. Therefore, it is possible for a non-Microsoft runtime library to be used in conjunction with a Microsoft application and for it to break the Microsoft application. Custom code: Custom code is the largest exposure to Year 2000 problems on any platform. Many organizations have in-house or contracted programmers developing custom applications that better meet business needs. Due to non-standard programming practices throughout the software development community, date handling is not consistent and will need to be examined on an application-by-application basis. An example problem in custom code would be if someone placed a two-digit date in a text string and then based a calculation on that date. The application would have no way of interpreting those two digits as a date. As a result, the calculation could be wrong. If this were done in VBA to enhance an Office application it could lead to date handling problems. Even though the application (e.g.: Excel) is handling dates correctly, the VBA custom code could cause it to malfunction. Data interfaces. An end-to-end view of the organization is the best way to deal with understanding problems with data interfaces. The PC platform in an organization may be just fine for the year 2000. Yet, if there is an interface from that PC to a legacy system that is not working properly with dates, the information placed into the PC environment can cause problems. The PC is just one step of many in some organization's information processing. The interfaces between the PC and other platforms must be understood, inventoried, analyzed, fixed, and tested, just like any other portion of the Year 2000 project. On Microsoft's Year 2000 Web site, there is a Tools Guide that will assist customers in finding resources to help with the problems mentioned above. The information available for the listed tools outline, what the tool does and how it can help an organization. What are Microsoft's recommendations for working with the Year 2000 on a PC? Answer: End-to-end examination of computing environment. Microsoft recommends that every organization looking into the impact of the year 2000 take an end-to-end look at their environments. "End-to-end" means understanding how data enters an environment (user input, electronic transfer, etc.), how it is manipulated, stored, calculated, sorted, sequenced, etc. within the environment, what systems are involved with the handling of that data, and finally, how the data leaves that environment (user interface, printed hard copy, electronic data interface, etc.). "End-to-end" encompasses both hardware and software. Microsoft technologies are just one piece of most environments. Use a test-bed. We recommend that customers DO NOT test year 2000 issues on production PCs. There are many date-related functions on the average desktop of which people may not be aware. Arbitrarily setting the clock ahead can have some unforeseen results. For example, auto archiving on scheduling programs, automated backup systems, special licensing timeouts on vertical applications, and demonstration applications can all be adversely affected by the Year 2000 problem. Use an MS-DOS boot disk to check the BIOS and system clock. Microsoft advocates the use of a DOS boot disk to check the system for clock issues. This will separate the day-to-day functionality of the system from the date testing. After the user sets the clock ahead for testing, make sure to reboot the machine to the boot disk and set the clock back to the right time. Inspect custom code. In any computing environment, custom code represents the largest exposure to year 2000 issues. We advocate that an experienced programmer evaluate any custom code in your information systems. To locate third-party products that can assist in the inspection of custom code, please see the Microsoft Year 2000 Resource Center Tools Guide at http://www.microsoft.com/year2000. Use management tools where possible for inventory and distribution of fixes. If your PCs are on a network and you have a network management tool such as Microsoft Systems Management Server, you can use the inventory and analysis features of the tool to understand what is in your environment. Once you have this information, you can begin the process of organizing the work needing to be done. Many management tools also offer the capability of distributing software. This mechanism can be employed to distribute patches and fixes, as needed. |
Number 194 - July 1999 |
|