PC/Workstation Solutions-Notes from the Field

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

The information below has been compiled for the field engineers & help desk folks working standby this weekend & beyond. It is in no way complete, but provides a basis to start from, for those without prior Y2k background.

This is being sent as email text, rather than it's original word document form, because everyone should be wary of email attachments by now.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

NEW Old MATH for the YEAR 2000

99 - 41 = 58 00 - 41 = 59 or 00 - 41 = -41

99 > 98 | 1999 > 1998 00 < 98 | 2000 > 1998

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

The Y2k dilemma affects computers at different LEVELS:

*--- Date-data Exchanges & Transfers ----* *=== End-User Date-data Entries ====* *---Applications & Programs ---* *=== Operating Systems ===* *-----Hardware -----* where the hardware is the smallest, and easiest to resolve level, simply by resetting the date correctly in most cases.

PC HARDWARE & THE YEAR 2000 Personal computers (PCs) include read-only memory (ROM) software called the basic input-output system (BIOS), which is responsible for basic boot functions and managing persistent data such as the date and time. Some Intel-based PC BIOS software does not correctly roll dates across the Year 2000 boundary. The years (YY) change, 99 --> 00 but the Century (CC) value needs prompting to change from 19 to 20.

PCs maintain two dates: one date in the hardware internal clock called the real-time clock (RTC/CMOS), and one in the operating system software (e.g., DOS or Windows). The date in the operating system software is created by converting the date in the internal clock to an incremental counter starting at 1 January 1980. The PC Operating system will not allow a date earlier that January 1st 1980. So if the system rolls over to January 1st 1900 by error, it most often defaults to January 4, 1980 by error/default, and will need to be reset, using a full 4-digit year date.

The RTC is battery-supported (to maintain the date and time when the system is powered down). The RTC/CMOS is also where the computer gets the date as it starts up or boots. Older Intel-based PCs have faults in their RTC/CMOS/BIOS that prevent them from rolling the century over properly. This improper date is then picked up by the operating system as the computer boots up, and is passed on to application programs when they call the operating system for the current date/time.

Without a properly functioning Y2K-compliant BIOS and RTC/CMOS, the Intel-based PC user will have to manually reset the date using either a Setup program or a Date command in the computer operating system properties, when the PC is started after 01/01/2000. This is the same procedure used to re-enter the date when the system is new or after the battery is replaced. With a YEAR 2000 date Terminate and Stay Resident (TSR) program this can be automated. (and there are other methods too)

Y2k Hardware Tools--YMARK2000 & ViewCMOS (and there are others too) A popular tool that helps you assess the compatibility of your PC hardware is YMark2000. This utility tests your system's BIOS and the real-time clock's (RTC) functionality. You'll need to test operating systems and applications separately. YMark2000 runs on any PC and can be run ONLY from DOS. The test interfaces with BIOS interrupt 0x1A, functions 2, 3, 4, and 5. The RTC date and time is set via the BIOS and allowed to roll over to the next day. The date is read via the BIOS and is examined and reported. YMARK2000 also provides batch file support.

To test PC BIOS, go to http://www.nstl.com/ and download the YMARK2000 bios test. Use format /s to format a bootable floppy diskette, then run YMARK2000 from floppy. It will test the bios rollover date from 1999 to 2000 and leap years through 2009.

Another tool for viewing how the RTC, CMOS and OS clocks are working is "ViewCMOS" from http://WWW.RighTime.com Rightime also has tools to test and fix older non-Y2k ready PC hardware.

Remember, the hardware is the smallest part of your Year 2000 problems/solutions. In most cases the date can manually be reset (using a full 4-digit year) to resolve the issue.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Y2K SOLUTION POINTS One can experience different levels of failure with the Year 2000. Complete breakdown of systems will be obvious. For example, an order-entry application may no longer 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, you'll know immediately that there is a problem. Although these complete breakdown problems will be easier to spot and fix before they arise, one should still have an awareness for all business-critical functions.

* Some systems will ABORT, ABEND, or STOP Working and will be very easy to discover.

* Some systems will create Noticeable ERRORS, that can be spotted, and these can be isolated and fixed, IF they're noticed.

* Some systems will create UN-NOTICEABLE Errors, that may only show up on Monthly, Quarterly, Yearly, etc. runs. So be aware!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Y2K AND YOUR PC OPERATING SYSTEM After the Hardware level, the next concern is Operating System. Many companies still have older computers that run older apps on older operating systems. In newer operating systems, the system clocks have been designed to recognize the Year 2000 as a leap year. In addition, the file systems have been designed to handle dates beyond the Year 2000. According to Microsoft, the File Allocation Table (FAT) 16-bit and 32-bit versions used by MS-DOS, Windows, Windows 95, and Windows NT recognize 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 BUT one may have to manually set preferences & protocols to allow other Programs & Applications to recognize 4-digit years for example: Goto: Settings_Control Panel_Regional Settings_Date/Time and set Short Date Style to a 4-digit year, so that other programs & applications use the full 4-digit year.

Consult http://www.microsoft.com/year2000/ for the latest patches or for other Microsoft products The following are recommendations as of Dec. 10. 1999, but be aware, Microsoft makes changes regularly.

DOS Compliant with minor issues - There will be no fixes from Microsoft

Windows 95 ( All versions ) * Install the Y2K patch W95Y2K.exe released May 19,1999 Quick Check: W95Y2K.txt is in C:\Windows Note: The first Y2K patch ( win95y2k.exe ) was replaced by w95y2k.exe. The first patch is listed in Control Panel, Add Remove Programs. The last patch does not show up in Add Remove Programs. Do not de-install the old patch, just install the new one. * If DUN 1.3 and Winsock2 product updates have been applied, download the Y2K update for these and install...the Y2K patch will not update DUN1.3 and Winsock2. http://www.microsoft.com/Windows95/downloads/contents/WURecommended/s_WUNetworking/dunwinsky2k/default.asp * Update DCOM to V1.3 ( Required for MDAC ) Windows 95 ONLY. http://www.microsoft.com/com/dcom.asp * Update Microsoft Jet Engine using jet35sp3.exe. Msjet35.dll must be version 3.51.0623 or higher before applying this update. If you are running Office 97 SR-2 msjet35.dll will be the correct rev. http://www.microsoft.com/technet/year2k/product/user_view69954EN.htm * Update MDAC to V2.1 SP2 ( Data Access Components V2.1.2.4202.3) Quick Check: MSADO15.dll should be version 2.10.4202.1 http://www.microsoft.com/data * Update Schedule +. There are replacement files for msspc32.dll V7.0, V7.0a and V7.5 from Microsoft. http://www.microsoft.com/technet/year2k/product/user_view32535EN.htm * Microsoft Virtual Machine must be one of the following versions to be Y2k compliant: 1520, 2436, 3165, 3167 or higher These components and versions can be identified by downloading the Microsoft Y2K Analyzer from http://www.microsoft.com/year2000/ or search for the file msjava.dll and check properties. If not equal to the above, download and install the virtual machine msjavx86.exe. http://technet.microsoft.com/cdonline/content/complete/windows/winnt/msjvm199.htm

Windows 98 ( See the Windows 98 web page ) Install the latest W98 SP1 Second Edition is Y2K Ready Update MDAC to V2.1SP2 ( Data Access Components ) Install Microsoft Virtual Machine msjavx86.exe. Virtual Machine must be version: 1520, 2436, 3165, 3167 or higher

Windows NT V4.0 ( Intel ) Install SP4 minimum Post SP4 Hotfix biosfixi.exe Post SP4 Hotfix y2kupd.exe (mfc40.dll) Post SP4 Hotfix Times Fix netfixi.exe Other Hotfixes are located at http://support.microsoft.com/support/ntserver/hotfixes.asp

For NT V4.0 SP5: Post SP5 Hotfix Bios-3 Fix biosfixi.exe Post SP5 Hot Fix NNTP Fix Q238020i.exe ( 9-24-99 ) Post SP5 Hot Fix Times-Fix netfixi.exe ( 9-24-99 ) Check Microsoft web site before installing Hotfixes Other Hotfixes are located at http://support.microsoft.com/support/ntserver/hotfixes.asp

Windows NT V3.51 ( Intel ) SP5 + Hot Fix ( Hot Fix will be included in SP6 ) Post SP5 Hot Fix #1 y2k351-i.exe ( 11-3-98 ) Post SP5 Hot Fix#2 netfixi.exe ( 9-24-99 ) These components can be identified by downloading the Microsoft Y2K Analyzer from http://www.microsoft.com/year2000/

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Y2K AND YOUR RUNTIME LIBRARY Runtime libraries are another often-overlooked part of many companies' Y2K compliance plans. What are runtime libraries? They are files that provide functionality to your applications, such as third-party products for Excel or Word. Users do not directly interact with runtime libraries; rather, it is the user's actions within an application that utilize runtimes. There is, however, interdependency between the runtime libraries and applications. For example, when you launch an application that utilizes runtime libraries, the program will fail if the runtime library is not Y2K compliant/ready/capable, and it mishandles the date. Make sure you check your runtime libraries as well as the main software application!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

LEAP YEAR CALCULATIONS One potential Y2K problem seems to be overlooked quite often. While everyone is searching for two-digit dates, many forget to address a potential problem caused by leap years. 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 causes 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 4. But if it is also divisible by 100, it is NOT a leap year. IF, however, it is divisible by 400, it IS a leap year. Thus, the Year 2000 is a special-case leap year that occurs once every 400 years.

Logic sensitive to day-of-week will be one day off after February 28, 2000. Calculating day of week for all dates following this will be incorrect. This will occur the first time input data contains Feb. 29, 2000, or will occur on this leap day.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

YEAR 2000 YEAR-DATE ISSUES WITH PROGRAMS & APPLICATIONS Once the Hardware & Operating System have been addressed, a bigger issue arises concerning the date-data status of all the programs and applications running on the computer, and the consideration that not all interacting computers have the same programs at the same Y2k Revision Level as they exchange data.

Internet Explorer ( Intel ) IE4.0.1 SP2 + Outlook Express Update en-x86-Q234680.exe ( for IE4.01 SP2 ONLY ) or IE 5

Office 97 Install SR-1 then SR-2 If using Access you may need jet35sp3.exe. See http://support.microsoft.com/support/kb/articles/Q172/7/33.asp

These patches are not Y2K patches but are recommended: Install Word97 security patch WD97SP.exe and Excel Security patch jetcopkg.exe

OUTLOOK 97 Office 97 SR-2 plus o97dtfix.exe http://www.microsoft.com/technet/year2k/product/product.asp

OUTLOOK 98 Office 97 SR-2 plus o98dtfix.exe http://www.microsoft.com/technet/year2k/product/product.asp

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PROGRAMS & APPLICATIONS AND THE YEAR 2000 "Century' Windows" & "Date Serial Number"(DSN)

"Century Windowing" - changing a 2-digit year to a 4-digit year automatically A 'pivot' year is selected, for example '50' All years before '50' get a '20' in front of them. All years '50' or greater get a '19' in front of them. So: 00 becomes 2000 20 becomes 2020 49 becomes 2049 50 becomes 1950 99 becomes 1999 The problem is that no standard was used, and some programs window at 50, some at 19, some at 29, some take the current year and add 20, and some do not window at all. AND dates outside the 100 year window values (1950-2049 as in this example) are invalid or totally misinterperated.

"Date Serial Number" - Using an incremental counter from a specific time to keep track of the date/time. Microsoft Excel, Access, FoxPro, Lotus 1-2-3, Approach, & others use dates converted to incremental numbers beginning with (in most cases) January 1, 1900. This is most often referred to as the "Date Serial Number"(DSN). When dates are entered in a cell or field, they are recognized as dates by the pattern of characters and numbers. If the year is 2 digits, the year is expanded to 4 digits based on the "Century Window " of the application, and then stored as a "Date Serial Number"(DSN).

>From that point forward, all date manipulations are done by simple arithmetic using the DSN.-(no Y2k problems here). The formatting of cells & fields determines how the information is displayed or reported to the user as dates, and does not effect how dates are transferred, stored or calculated. Changing the format from 2 to 4-digit dates does not change the DSN. (Note: quite a few Y2k database remediation programs report all 2-digit year cells in error, and makes one think that there is a huge amount of data changes to the spreadsheet needed, but this is a view format change, not a data DSN value change needed.)

Short Year formats are NOT a Y2k issue for correct results, only a display & report issue, unless it is transferred (copy & paste) incorrectly. How the 2-digit year date is transformed into a 4-digit year DSN is an issue.

Test it yourself: *Open a spreadsheet & format column A for 2-digit years *Enter the following formulas: A1: 12/31/99 A2: 1/1/00 A3: 36512 A4: 1 A5: 2/3/45 A6: =(365*100) + 30 + 1 A7: 2/29/00 And everything will be displayed as dates *Change the column to 4-digit date format and values w/ century remains the same. *Change the format to show Number, and the field shows the DSN *Change the format back to short years and everything is the same. Note: It is recommended to have/leave the format set to 4-digit years for Y2k !

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PROGRAMS & APPLICATIONS AND YEAR2000

Century Windowing & OLEAUT32.DLL Century Windows are Deceptive Different versions software packages may use different 'Century Window' logic to change 2-digit to 4-digit year dates. When upgrading from one version to another with a different 'Century Window' logic, Dates transferred are based on the Date Serial Number value, and do not change, but newly entered dates may not expand as expected due to a different pivot Window values on the new version. Databases/spreadsheets should be tested immediately when the software upgrade occurs.

As Operating Systems moved from 16 to 32-bit and OLE automation, Date handling rules moved from control by the application, to the domain of the Operating System (through the OLEAUT32.dll). A change in the assumption rule - 2-digit dates would default to the current century, as defined by the system clock, was also initially established. Later Microsoft decided default to current century was not the best approach, and introduced the date 'window'. These rules interpreted the entry of 2-digit years, but different versions of the same application sometimes used different 'window' pivot points. OLEAUT32.DLL Version 2.20.4049 or later versions use the 1930-2029 windowing range, earlier versions leave you at risk

Some Century Windows Microsoft Excel 4.0 - 1900-1999 5.0, 7.0 1920-2019 8.0 1930-2029 Microsoft Access 2.0 1900-1999 7.0, 8.0 1930-2029 (using oleaut32.dll) Microsoft Visual Basic 2.0, 3.0 1900-1999 7.0 depends on oleaut32.dll Microsoft Outlook 4.0 16 bit current century Outlook 97/98 must update OUTTLIB.DLL to V8.03 The system date plus xx years, For instance: In 1999, pivots at: "Current + 20" = 2019 Outlook 2000 1930-2029 Microsoft Word 6.0, 7.0 '00' is 2000 but all others dates 1901-1999 8.0 1930 -2029 MS Money Money 97 Pivots at '49' Money 98/99 Varies Intuit Quicken 98/99 pivots at '29' Lotus Lotus 1-2-3 1900-1999 or 1950-2049 or pivots at:'current + 20' (depending on preference settings) Approach 97 1930-2029 Approach Millennium pivots at: 'current + 20' Organizer 97 pivots at: 'current + 50' Organizer Millennium pivots at:'current + 20' Corel Paradox & Quattro Pro pivots at '51'

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PROGRAMS & APPLICATIONS AND YEAR2000

Some Real Issues Some database/spreadsheet functions interpret 2-digit years in a fixed way, rather than using the Century Window logic. In client/server environments, various versions can receive, re-interpret, and send back different date values and computational results. Third-party controls or libraries need to be standardized version levels across the enterprise. These include: Custom controls (.OCX) Dynamic Link Libraries (.DLL) Library Databases (.MDA) Resource files (.RES) also to look at are (*.INI) files, the default initialization file for program/application start-up settings, & Virtual Device Drivers (.VXD) should be the current Y2k version.

Multiple copies in various locations are okay if all are the same (y2k compliant/ready/capable) version, otherwise there may be issues. A lot of programming data has been remediated to read MM-DD-YYYY, BUT the form, or program, or application, or data is reading only YY, (which in some cases are the first 2 digits of the year), and everything becomes year 19 (or soon 20). This can be a disaster if there is also a routine to delete records older than 'X' years, and everything with year '19', '20' (or even '00') disappears.

More Real Y2k Issues Microsoft Access (& Visual Basic) =dateserial( ) Does not always use Century Window ?#12/31/29# returns 12/31/2029 ?#12/31/30# returns 12/31/30, and century of 19 is hidden.

Microsoft Excel (early versions) =date(mm,dd,yy) yy = 00 is always 1900 Lotus 1-2-3 (early versions) @date(mm,dd,yy) yy = 00 is always 1900 @year( ) returns 2-digit year format

SQL Strings can break a date into it's components, using 'left' and 'right', and loose century data, and calculate '00' less than '99' E.g.: SELECT NEWORDERS Orders, (Order ID), Orders, (Customer ID), Orders, (Order Date), FORM Orders Where ((Right((Order Date),2)>98)) dates with year "00" will never be reported, even from year'2000'.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Another insidious problem is one often referred to as a "Register overflow" although it is not restricted to date data reads in registers alone but in all the data read and storage facilities available to the program after the overflow. This results when an incremental year counter moving from 99 goes to 100, not 00, and results in an extra character in a 2 digit space, which if not discarded "corrupts" all the other stored and manipulated data by 1 character.

Y2k YEAR Dates we've seen: 19100 1900 1980 1986 1994 00 100 ?? :0 2000 (and there are others)

And one more issue: even printers can become problematic if not updated. Dates can be an issue on servers configured with TCP/IP, at which point the SNMP services might be enabled, and SNMP ia a date oriented protocol. HP has noted that their 'Jet Direct' cards for printers are "compliant with customer installation" on TCP/IP Networks, meaning the customer has to install the upgrade to make it work correctly. See http://www.hp.com/cposupport/networking/support_doc/bpj05431.html for more details.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Not all programs will care what the year rolls to, BUT some do: For example: Monitoring Systems Logging Systems Security Systems Supervisory Control Systems and Calendar Scheduling Systems do care - to name a few we've seen.

Year 2000 issues are solvable ! Replacing hardware does NOT solve any of the issues with the Operating System, Programs/Apps, Or Date Data, so be aware of where you look for solutions.

Resetting the date to an earlier time as a temporary solution is a possibility, but be aware of security issues that don't like the date being turned backwards or changed.

"Encapsulation"/Time Shifting - turn the clock back 28 years. Why 28 years? 7 days per week, 4 years per leap year, (7x4=28), so, 28 years ago (1972) the same Day of Week (DOY) & leap year existed, as year 2000. Note: DOS & Windows can not have a date before 1980, so 1972 does not work here.

good luck, AND DON'T FORGET TO HAVE A GOOD BACK-UP ON HAND (one that works & is current AND verified)

Mark - still doing back-ups & hard copies - Slotnick

All normal & abnormal disclaimers apply. http://www.MrFixit-RTP.com

._____________. |.___________.| | | | | | |Y2k Okay | | | |_________| | |_____________| __[_________]__ |______________ | | O [____] | |_______________|

-- Mark SLotnick (mark.slotnick@ieee.org), December 31, 1999

Answers

Thanks Mark. I printed your post out just incase I need to reformat.

-- Hokie (Hokie_@hotmail.com), December 31, 1999.

Moderation questions? read the FAQ