MainframeSupports
tip uge 51/1999:

Nu går det herrens år 1999 meget MEGET snart på hæld. Før det bliver alvor med år2000-problemerne skal vi allesammen gennem den søde juletid, hvor "ugens tip" ikke vil udkomme. Men lad os i denne uge kigge lidt på, hvad vi kan vente os af "sjove" fejl i det kommende år.

MainframeSupport har været dybt involveret i løsningen og afprøvningen af år2000-problemet, og vi har set lidt af hvert. Vores bud på den oftest forekommende fejl er, at '19' er hårdkodet som århundrede i diverse systemer. Vi har f. eks. stødt på følgende elegante løsning:

IF YEAR > 70
THEN
  MOVE 19 TO CENTURY
ELSE
  MOVE 19 TO CENTURY

Det skal nok hjælpe os "sikkert" ind i år 2000. En af de mere subtile fejl fandt vi ved den første passage af år 2000 på en isoleret MVS-partition. I en subrutine, der arbejdede på et pakket felt (COMP-3 i COBOL, PACKED DECIMAL i PL/1 og DECIMAL i DB2) blev der lagt 1 til århundredet ved at lægge 1 binært til den byte, der indeholdt århundredet. Efter 19 hexadecimalt kommer 1A og ikke som forventet 20 med en efterfølgende 0C7 abend (data exception) som resultat.

Der var også nogle, der mente, at bare man gemmer sine datoer i en DATE-kolonne i DB2, så er den hellige grav velforvaret. Men nu er det så viseligt indrettet, at DB2 faktisk accepterer 99-12-31 som en valid dato, mens det straks kniber lidt mere med 00-01-01. Faktisk kommer 100-01-01 efter 99-12-31 i DB2, men det er vist ikke et skudår... Ja, der findes sikkert mange andre rigtig sjove eksempler på, hvordan man rundt omkring har oplevet af år2000-problemer.

Med håb om så få fejl som muligt ønskes du hermed en rigtig glædelig jul og et godt nytår.

Sidste uges tip        Tip oversigten