WO2000020988A1 - Procede et dispositif permettant de diagnostiquer et de corriger le bogue de l'an 2000 - Google Patents
Procede et dispositif permettant de diagnostiquer et de corriger le bogue de l'an 2000 Download PDFInfo
- Publication number
- WO2000020988A1 WO2000020988A1 PCT/AU1998/000831 AU9800831W WO0020988A1 WO 2000020988 A1 WO2000020988 A1 WO 2000020988A1 AU 9800831 W AU9800831 W AU 9800831W WO 0020988 A1 WO0020988 A1 WO 0020988A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- datestr
- ddmmyy
- buffer
- case
- mιd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/78—Methods to solve the "Year 2000" [Y2K] problem
Definitions
- the present invention is related to a technique of modifying a computer file without requiring recompiling of the computer file, and in particular to a method, apparatus and computer readable medium for diagnosing and correcting the millennium bug in computer files of personal computers (PC).
- PC personal computers
- the Year 2000 bug is an error that will be experienced by any computer file using the abbreviated date format.
- This abbreviation is one used in all programming languages to ascertain from the ROM BIOS of any computer the currently set date.
- the date conventions typically used are: y for year, m for month, d for day, h for hour, n for minute, s for second.
- the file displays, when run, a date in the format 15/03/97 for 15 September 1997 for example. If however the date is specified as dd/mm yyyy, the return date is 15/03/1997.
- date formats There are numerous date formats that are possible, examples of such are: dmyy, dddd mmmm yy, d/m/yy, dd-m-yy, etc.
- a date is in an abbreviated format as shown hereinbefore and the date 15/03/00 is entered while the system clock is still within the 1900s, the date is returned as 15/03/1900.
- the return date is 15/03/2000.
- any date entered into a computer application using an abbreviated date format is read by the application as a 1900s date until the 1st January 2000, at which time all the dates are read as 2000s dates.
- a date entered as 1997 in the abbreviated format is treated by the application as a 1997 date until 1/1/2000 when it will be treated by the application as a 2097 date.
- a method of modifying a computer file comprising the step of replacing one or more specified code portions in said computer file with a modified code portion without requiring recompiling of the computer file.
- a method for modifying a computer file comprising the steps of: detecting one or more portions of the computer file containing a specified pattern; and replacing the one or more detected portions with respective portions of coded values, without requiring recompiling of the computer file.
- a method for correcting the millennium bug in a computer file comprising the step pf modifying one or more short date formats in the computer file to have long date formats without altering the functioning of the computer file.
- a method for correcting the millennium bug in a computer file comprising the steps of: detecting one or more date formats in the computer file having the millennium defect; and replacing the one or more defective date formats with respective corrected date formats having the century in the year component, without altering the functioning of the computer file.
- the computer file is a program capable of being executed using a computer.
- the detection may carried out by checking the computer file in binary format, and the replacement may be carried out using corrected date formats in hexadecimal format.
- the detecting step comprises the step of pattern matching a short date format against the computer file.
- the replacing step comprises the steps of determining if the detected date format is more than a predetermined number of characters, and if so replacing the short date format with a long date format.
- the predetermined number of characters is preferably a minimum of five.
- the replacing step further comprises the step of writing back the corrected date format in the computer file.
- the computer file is processed in one or more segments of predetermined size, and the above steps are carried out using the one or more segments of predetermined size.
- the method is carried out until all segments of the computer file or portions thereof have been processed.
- the size of the segments is 64KB.
- a predetermined size portion of the previous segment is processed with the next segment to be processed or portion thereof.
- the predetermined size portion is 19 bytes.
- an apparatus for correcting the millennium bug in a computer file comprising: means for detecting one or more date formats in the computer file having the millennium defect; and means for replacing the one or more defective date formats with respective corrected date formats having the century in the year component, without altering the functioning of the computer file.
- the apparatus is implemented using a general purpose computer. Still further, the apparatus is implemented using a computer program or software for execution using the general purpose computer.
- a computer readable medium having recorded thereon a computer program executable by a computer for correcting the millennium bug in a computer file, the computer program comprising the steps of: detecting one or more date formats in the computer file having the millennium defect; and replacing the one or more defective date formats with respective corrected date formats having the century in the year component, without altering the functioning of the computer file.
- the computer file is a file used for the operation of the computer.
- Fig. 1 is a flow diagram illustrating the diagnostic process according to the preferred embodiment of the invention
- Fig. 2 is a flow diagram illustrating the corrective process of the preferred embodiment.
- Fig. 3 is a block diagram of a general purpose computer with which the processes of Figs. 1 and 2 may be implemented.
- the present invention is directed to a method of modifying a computer file by replacing specified portions of the computer file with different code portions, while at the same time not causing the computer file to have to be recompiled to operate properly when run by a computer.
- the present invention is directed to a method or process, apparatus and computer readable medium for correcting the millennium bug in a computer file.
- the method is preferably adapted for use in the Microsoft (TM) Windows (TM) family of operating systems, including Windows 3.X, Windows NT and Windows 95.
- TM Microsoft
- TM Microsoft
- TM Microsoft
- TM Microsoft
- TM Windows
- the Year 2000 error affects all Windows (TM) 16-bit applications as they will work in either the 19XX or 20XX centuries, dependent on the clock setting from the ROM BIOS.
- one or more date formats are ⁇ o detected in the computer file having the millennium defect.
- the types of computer files may include .EXE, .COM, .DLL, .VBX, etc.
- the one or more defective date formats are then replaced with respective corrected date formats having the century in the year component, without altering the functioning of the computer file.
- a computer program in which the millennium bug has been corrected will operate
- the apparatus for correcting the millennium bug in the computer file in accordance with this method is preferably implemented using software executing on a personal computer (PC) or compatible.
- the executing software diagnoses
- FIG. 3 illustrates a representative embodiment of such a personal computer system for implementing the processes of diagnosing and correcting the millennium bug in accordance with the preferred embodiment.
- GUI graphical user interface
- the computer system 300 includes a computer 302, and a video display monitor 304. It may also include one or more input devices 318, 320. User inputs to operate the computer 302 are provided by the input devices. For example, a user can provide input to the computer 302 via the keyboard 318 and/or a pointing device such as the mouse 320.
- the computer system 300 may be connected to one or more other computers using a communication channel such as a modem communications path, a computer network, or the Internet, for example. Further, any of several types of output devices including plotters, printers, laser printers, and other reproduction devices may be connected to the computer 302.
- the representative computer 302 has one or more central processing units
- the video interface/adaptor 306 connected to the video display monitor 304 provides video signals from the computer 302 for display on the video display monitor 304.
- the storage device(s) 308 may comprise a floppy disc, a hard disc drive, a magneto-optical disc drive, magnetic tape, CD-ROM and/or any other of a number of non-volatile storage devices.
- the components 306 to 316 shown in Fig. 3 are coupled to each other via a bus 310.
- the bus 310 in torn can comprise data, address, and control buses.
- the overall structure and individual components of the computer system 300 are conventional and are well known to persons skilled in the art. Thus, the system 300 is simply provided for illustrative purposes and other configurations can be employed without departing from the scope and spirit of the invention. Operation of the system according to the preferred embodiment is described hereinafter with reference to Figs. 1 and 2 and Appendices A and B.
- the description of the software is broken into two processes: diagnostic and corrective processes.
- the corrective process is reliant on the diagnostic process to complete its functionality, with some of the functionality of the diagnostic process re- used in the corrective process.
- Each process may stand alone as a separate software package, or the two processes may be combined as one software package.
- the apparatus is implemented by executing the diagnostic and corrective processes recorded as software or computer programs on a computer readable mediums and loaded into the computer system 300 from the computer readable medium.
- Examples of such computer readable medium include a floppy disk, magnetic tape, a hard disc drive, a ROM or integrated circuit, a magneto-optical disk, a radio or infra-red transmission channel between the computer and another device, a computer readable card such as a PCMCIA card, a network connection to another computer or networked device, and the Internet and Intranets including email transmissions and information recorded on websites and the like.
- a computer readable medium such as a PCMCIA card
- a network connection to another computer or networked device such as a PCMCIA card
- the Internet and Intranets including email transmissions and information recorded on websites and the like.
- Fig. 1 is a generalized flow diagram illustrating the diagnostic process according to the preferred embodiment of the invention. Processing commences in step 100. This may be done at the push of a button.
- a file is selected for processing.
- the file is selected preferably through the use of automatic selection of drives, directories, type, location, name or through user input.
- a 64KB segment of the file or portion thereof is loaded into a buffer (area of computer memory). Initially, the first 64KB of binary code of the relevant file is loaded into the buffer.
- pattern matching is performed on the loaded 64KB segment to search for long or short format "year" dates in the segment. Thus, the segment of the computer file or code is searched for a pattern matching either a "yy" or "yyyy” format which includes day, month, spaces and separators ( ⁇ , ._-
- date formats may vary from the shortest form “dmyy” to the longest form “yyyy, dddd d-mmmm” and include standard formats such as
- step 106 processing continues at step 108.
- step 108 the date format is added to a list of relevant date formats detected in the file (it can be recorded in a to-do column, for example). Processing then continues at decision block 110. Otherwise, when step 106 returns false (no) from
- processing continues at decision block 110.
- decision block 110 a check is made to determine if there are any more 64KB segments. If decision block 110 returns true (yes), processing continues at step 104 and the hereinbefore described process (steps 104 to 110) is repeated. Otherwise, if decision block 110 returns false (no), processing continues at step 112. Thus, once the first 64KB segment or block of the computer file or code has been searched and any
- this segment or block of binary code is cleared from the buffer and the next 64KB segment of binary code in the file is loaded into the buffer, if available.
- This 64KB segment includes the final 19 bytes of the previous 64KB segment. This reloading of the previous 19 bytes allows for the identification of any date formats that may have appeared partially at the same end of the pervious 64KB of binary code.
- step 112 the final bytes (less than or equal to 64KB) are loaded into the final bytes.
- step 114 pattern matching is again conducted against the loaded remaining portion of the file in memory to determine long or short date formats therein.
- processing continues at step 116.
- step 116 the date format is added to the relevant list.
- processing continues at step 118.
- step 118 This process is repeated until all of the binary code has been searched for any date patterns. If the file is less than 64KB or the last segment of the file is less than 64KB, only the required space is loaded into buffer for pattern matching.
- step 118 all code remaining in the memory is removed from the memory.
- step 120 This prepares the diagnostic process to be ready to handle the next file in step 120. This process may be repeated for one or more files. In step 122, the process terminates.
- binary code is the common language of all computers, the language that the file was written in and the platform the file operates on are irrelevant. If date formats are specified within the code of an application in any form other than y, m, d, h, n, s, the binary code transposes this format to the y, m, d, h, n, s, format.
- Hex is the format binary code takes when it is communicating with the actual processor. Hex or hexadecimal represents binary code as paired symbols ranging from 0-9 and A-F (e.g. 2000 is represented in hex as 07 DO).
- Source code for implementing the diagnostic process is set forth in detail in Appendix A, which is incorporated herein (note that carriage returns in the source code have been replaced by the tilde (N) character to reduce the number of pages required to reproduce the source code).
- Fig. 2 is a flow diagram illustrating the corrective process according to the preferred embodiment of the invention. Processing commences in step 200.
- step 202 the file location and path of a file is determined from the relevant list. The file is selected from the list of short date format files logged by the diagnostic module preferably or the user may select a file using any of a number of standard methods.
- step 204 a 64KB segment in hexadecimal is loaded into the memory or buffer from the file.
- pattern matching is carried out to determine the year component of the short date format.
- the first 64KB of binary code is loaded into the buffer, but unlike the diagnostic process a search through the use of pattern matching is made for "yy" .
- step 208 the hex address is identified for the short format date "yy" in the loaded 64KB segment.
- step 210 a check is made to determine if the short date format is to the left or right of "yy” .
- a composition is made as to the usage of "d” and "m” . This is to determine if the date structure is to the left or right of the "yy " .
- step 212 the number of characters and spaces involved in the date is determined. That is, a count is made of the number of characters, spaces and separators used in the date format.
- step 216 If this is less than five (5) bytes (characters, spaces and separators combined), the date format is skipped and reported to the user, preferably as "Unable to modify" . If the result of step 216 is less than five characters, processing continues at step 224. In step 224, the list is updated and processing continues at decision block 226. Otherwise, if step 212 determines that five or more characters are contained in the date, processing continues at step 214.
- the separator type is identified, (e.g. /, ⁇ ,-, etc). That is, if there are five or more bytes available, the type of separator used is identified and the location and number of spaces is identified. If there are two spaces between the previous component of binary code and the date format and two spaces after the date format, then one space at either end is counted. If there are three spaces at one end and four at the other end, only two spaces on one end and three on the other are counted. Similarly, if there is only one space on one side, no spaces are counted.
- step 216 the number of spaces is identified and one space (00 or 20) is allowed after the previous hex entry and one space is allowed prior to the next.
- step 220 the updated date format is written back to the file loaded in the buffer. 5
- step 222 the tracking list is updated so that the current date format is novel from a to-do column to a done column is updated, and processing continues at decision block 226.
- the functioning of the computer file relates to the overall operation of the computer file when run on a computer, without requiring recompilation of the computer ⁇ o file itself to run properly. That is, the modified computer file is capable of being run by a computer and is not damaged by the changes that have been made.
- the number of characters between index points is determined by the software. Based on this, a substitution is made within the buffer to ensure that the modified date format is a long date format and that it fits within the same space so that the entries within the allocation table are not changed. Once the process is finished for a single or multiple substitutions, the 65KB segment of data stored in the buffer is written back into original
- 64KB segmenting is used in the preferred embodiment is that the majority of PC's support 16-bit applications, and 64KB is the largest segment that can be addressed using 16 bits.
- decision block 226 a check is made to determine if the 64KB segment is finished being processed. If decision block 226 returns false (no), processing continues at step 206 as described hereinbefore. Thus, the locating of short date formats in the loaded 64KB is continued until all of the 64KB segment has been searched and modified where required. Otherwise, if decision block 226 returns true (yes), processing continues at decision block 228.
- decision block 2208 a check is made to determine if there is a 64KB segment or portion thereof remaining to be processed. If decision block 228 returns false (no), processing terminates in step 232. Otherwise, if decision block 228 returns true (yes), processing continues at step 230. In step 230, the remaining 64KB segment or portion thereof is loaded into memory. If this is the last segment or portion of the file, a 64KB segment or portion thereof is loaded plus 19 bytes from the previous segment (this forms part of the newly loaded 64KB segment). Processing then continues at step 204 as described hereinbefore.
- the searching/modifying is completed in one 64KB segment, it is then written back to the file replacing the original 64KB segment and the next 64KB section of binary code is loaded, again the final 19 bytes from the previous 64KB is included and the process is repeated. If the file is less than 64KB or the last segment of the file is less than 64KB, only the required space is loaded into buffer.
- the "corrected" file operates normally with the exception that it now uses a long date format making it completely 2000 compliant. The substitution is not limited to the date format used by a file, any component of a file may be altered in the same way.
- the preferred embodiment is able to correct the millennium bug in computer files and is able to do so in a manner that also occurs in computers that are so-called 2000-compliant.
- Source code for implementing the corrective process is set forth in detail in Appendix B, which is incorporated herein (again, carriage returns have been replaced by tildes (-)).
- the changed computer file is capable of operating properly on a computer although portions of the code have changed and possibly the particular operation or functioning itself of the file have changed.
- the computer file when run may do something differently from before but it still continues to run properly on the computer as though the computer file had not been
- UpcJateMFX _ DB saves inforrriat
- Replace_R ⁇ ght1 is the single module used for short date ⁇ '" * formats where yy appears on the left hand side Two characters are ⁇ '*"removed (usually non date characters) and an additional two yy's are ⁇ ' *** ⁇ nserted, to create a long date format
- This module is a variance on-'*" the replace criteria used for the substitution of date formats on ⁇ ' *** the right of a yy
- This method covers the same combinations - -Public Sub Replace_R ⁇ ght1 (DateStr As
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/AU1998/000831 WO2000020988A1 (fr) | 1998-10-02 | 1998-10-02 | Procede et dispositif permettant de diagnostiquer et de corriger le bogue de l'an 2000 |
| GB0110786A GB2359161A (en) | 1998-10-02 | 1998-10-02 | Method and apparatus for diagnosing and correcting the millenium bug |
| CA002249781A CA2249781A1 (fr) | 1998-10-02 | 1998-10-02 | Methode et dispositif de diagnostic et de correction du bogue du millenaire |
| AU93325/98A AU9332598A (en) | 1998-10-02 | 1998-10-02 | Method and apparatus for diagnosing and correcting the millenium bug |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/AU1998/000831 WO2000020988A1 (fr) | 1998-10-02 | 1998-10-02 | Procede et dispositif permettant de diagnostiquer et de corriger le bogue de l'an 2000 |
| CA002249781A CA2249781A1 (fr) | 1998-10-02 | 1998-10-02 | Methode et dispositif de diagnostic et de correction du bogue du millenaire |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2000020988A1 true WO2000020988A1 (fr) | 2000-04-13 |
Family
ID=31994767
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/AU1998/000831 Ceased WO2000020988A1 (fr) | 1998-10-02 | 1998-10-02 | Procede et dispositif permettant de diagnostiquer et de corriger le bogue de l'an 2000 |
Country Status (4)
| Country | Link |
|---|---|
| AU (1) | AU9332598A (fr) |
| CA (1) | CA2249781A1 (fr) |
| GB (1) | GB2359161A (fr) |
| WO (1) | WO2000020988A1 (fr) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1997033240A1 (fr) * | 1996-03-08 | 1997-09-12 | Adamchick J David | Procede et appareil de conversion des logiciels et bases de donnees d'ordinateurs pour l'an 2000 |
| US5668989A (en) * | 1996-09-18 | 1997-09-16 | Mao; Decao | Two-digit hybrid radix year numbers for year 2000 and beyond |
| WO1998011485A1 (fr) * | 1996-09-10 | 1998-03-19 | Unisys Corporation | Appareil et procede de revision de code programme d'ordinateur |
-
1998
- 1998-10-02 WO PCT/AU1998/000831 patent/WO2000020988A1/fr not_active Ceased
- 1998-10-02 AU AU93325/98A patent/AU9332598A/en not_active Abandoned
- 1998-10-02 GB GB0110786A patent/GB2359161A/en not_active Withdrawn
- 1998-10-02 CA CA002249781A patent/CA2249781A1/fr not_active Abandoned
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1997033240A1 (fr) * | 1996-03-08 | 1997-09-12 | Adamchick J David | Procede et appareil de conversion des logiciels et bases de donnees d'ordinateurs pour l'an 2000 |
| WO1998011485A1 (fr) * | 1996-09-10 | 1998-03-19 | Unisys Corporation | Appareil et procede de revision de code programme d'ordinateur |
| US5668989A (en) * | 1996-09-18 | 1997-09-16 | Mao; Decao | Two-digit hybrid radix year numbers for year 2000 and beyond |
Also Published As
| Publication number | Publication date |
|---|---|
| AU9332598A (en) | 2000-04-26 |
| CA2249781A1 (fr) | 2000-04-02 |
| GB2359161A (en) | 2001-08-15 |
| GB0110786D0 (en) | 2001-06-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5528753A (en) | System and method for enabling stripped object software monitoring in a computer system | |
| US6442684B1 (en) | Determining a current machine state of software | |
| US6526529B1 (en) | Dynamic error messaging | |
| US6071317A (en) | Object code logic analysis and automated modification system and method | |
| US6110227A (en) | Systems and methods for pre-processing variable initializers | |
| US6978401B2 (en) | Software application test coverage analyzer | |
| KR100655124B1 (ko) | 주문 제작 컴퓨터시스템을 위한 소프트웨어 설치 및 테스트를촉진하는 데이타베이스 | |
| US7254810B2 (en) | Apparatus and method for using database knowledge to optimize a computer program | |
| US6327705B1 (en) | Method for creating and maintaining user data | |
| US5809500A (en) | System for converting programs and databases to correct year 2000 processing errors | |
| US6530039B1 (en) | Porting engine for testing of multi-lingual software | |
| US6658416B1 (en) | Apparatus and method for creating an indexed database of symbolic data for use with trace data of a computer program | |
| JP3106409B2 (ja) | パーソナルコンピュータ用診断システムおよびインタフェース | |
| US7536294B1 (en) | Method and apparatus for translating computer programs | |
| US20040205327A1 (en) | System and method for computer hardware identification | |
| US7315962B2 (en) | Managing boot errors | |
| EP0938050A2 (fr) | Procédé et dispositif modulaire de stockage à etre utilisé avec des applications de logiciels | |
| US5418954A (en) | Method for preparing and dynamically loading context files | |
| US20030018965A1 (en) | System and method for launching generic download processing in a computer build-to-order environment | |
| US20040221275A1 (en) | Apparatus and method for modifying a kernel module to run on multiple kernel versions | |
| KR20010022215A (ko) | 2000년 테스트 케이스들을 생성하는 시스템 및 방법 | |
| CA2492761A1 (fr) | Generateur de code automatique a auto-generation | |
| US20040194114A1 (en) | Method and system for managing the contents of an event log stored within a computer | |
| US20060037011A1 (en) | Persisting and resolving application assembly binds | |
| US20080313208A1 (en) | Apparatus, system, and method for automated context-sensitive message organization |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AK | Designated states |
Kind code of ref document: A1 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
| DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| WWE | Wipo information: entry into national phase |
Ref document number: 93325/98 Country of ref document: AU |
|
| ENP | Entry into the national phase |
Ref country code: GB Ref document number: 200110786 Kind code of ref document: A Format of ref document f/p: F |
|
| REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
| 122 | Ep: pct application non-entry in european phase |