Het millenium probleem
Over het 'Jaar 2000' probleem is afgelopen twee jaar heel veel geschreven. Veel
verhalen schetsen beelden van neerstortende vliegtuigen en weigerende liften. Nu waren wij
van FCB toch al van plan op het moment suprème liever met een glas champagne in de hand
en een paar (of juist een hoop!) leuke en gezellige mensen om ons heen. Dus de kans dat we
tegen juist dié voorbeelden aanlopen lijkt ons bijzonder klein.
Toch is er wel een grond van kleine ongerustheid: voor veel programma's maakt het
immers niet uit wat de exacte datum is, bij enkele types programma's echter wèl. Overal
waar een vergelijking wordt gemaakt tussen twee data (=datums), kan het misgaan.
Voorbeelden zijn bijvoorbeeld financiële software, projectberekeningen en overal waar
wordt gewerkt met data (=datums).
Bij het opvragen van de datum vanuit bijvoorbeeld DOS blijken soms de problemen al. Zo
kan op 1 januari 2000 de datum als één van de volgende waarden worden gepresenteerd:
LET OP: voordat u gaat experimenteren met het verzetten van de datum raden wij u heel
sterk aan om toch voor de zekerheid een back-up van uw systeem te maken (safety first!).

01-01-80 of 01-01-84
Uw computer denkt dat hij terug is bij de geboortedatum van de PC-XT of PC-AT van IBM.
Dit probleem is, voor zover wij weten, alleen op te lossen door een nieuwe BIOS of een
drivertje van uw BIOS fabrikant. In feite is dit probleem al eens eerder gesignaleerd:
Olivetti heeft tot in 1988 PC-systemen verkocht (model M240, een 8086) , die niet
bestendig bleken te zijn tegen het jaar 1994: de teller had zijn rondje gemaakt en viel
terug naar 1984. Dit probleem is dat jaar opgelost door een kleine routine die voorin de
config.sys moest worden geplaatst. Het jaar daarop werkte deze oplossing ook niet en heeft
men een nieuw drivertje gemaakt, die tot op de dag van vandaag nog steeds werkt.
01-01-00 Uw computer denkt dat we in
1900 zijn aangekomen en belsuit misschien wel dat de computer in dit jaar nog niet is
uitgevonden. Kritiek is nu de software die u gebruikt: als deze de aanduiding '00' blijft
interpreteren als 1900, dan kunt u bij bepaalde functies de mist ingaan.
01-01-2000
Uw computer rapporteert in ieder geval het juiste jaar, zodat dit dus in orde is.
Alleen als de programmeur van de door u gebruikte applicatie (of de door u geschreven
applicaties) zelf de datum als twee cijfers heeft gebruikt, door bijvoorbeeld te werken
met zgn. jaarweken (zoals 9822, 9952, en 0001?), kunnen problemen ontstaan. Uw
computerhardware is in ieder geval millenium bestendig. Rest wel de tests om te bekijken
of ook de volgende jaren goed worden verwerkt èn dat even wordt getest of 29 februari
2000 wel wordt herkend (want 2000 is namelijk wèl een schrikkeljaar).
01-01-1900
Uw computer denkt dat het 1900 is. U bent nu volledig afhankelijk van het gebruikte
programma: het programma moet deze fouten van de PC onderkennen en automatisch bepalen dat
het gebruik rond 1900 niet waarschijnlijk is en aannemen dat het jaar daadwerkelijk 100
jaren hoger is, dus vanaf 2000. De truuk hierachter is dat PC's pas bestaan vanaf 1980,
dus bij een jaar voor het jaar 1980 dus niet door de PC wordt meegemaakt. Dit houdt in dat
alle jaartallen onder de 80 jaren in de 21-ste eeuw zullen zijn.

PowerBASIC Year 2000 Compliance
Dit is een vrije vertaling van een artikel van de PowerBASIC Inc.
site
Alle rechten voorbehouden (C) 1998 by Henk Broekhuizen
Voor veel computer en software systemen zal het jaar 2000 een scala van problemen geven
voor programma's die het jaar als twee digits (dus met twee cijfers) vastleggen. Dit
document beschrijft de 'Jaar 2000' problemen die samenhangen met de PowerBASIC
productlijn.
De BASIC programmeertaal, zoals geïmplementeerd door PowerBASIC ondersteunt tot
nu toe slechts één datum gerelateerd commando: DATE$. De DATE$ systeem variabele
stelt een programma in staat om de huidige datum op te vragen of de systeemdatum in te
stellen. De systeem datum is de datum die wordt bijgehouden door het computersysteem.
Gebruik makend van de syntaxis:
A$=DATE$
kan een programma de courante systeemdatum ophalen. De datum wordt gerapporteerd met
een viertal cijfers voor het jaar, zoals '01-01-2000'.
Gebruik makend van de syntaxis:
DATE$="01-01-2000"
kan een programma de systeemdatum veranderen. De meeste BASIC dialecten, inclusief
PowerBASIC, staan toe dat dat het jaar met slechts twee cijfers wordt opgegeven.
Bij deze wijze van gebruik nemen de meeste BASIC dialecten aan dat het gaat om de
jaren 1900 - 1999. Dit is het enige potentiële 'Jaar 2000' of millenium probleem in de
PowerBASIC taal.
Turbo BASIC, PowerBASIC 2.x en PowerBASIC 3.0/3.1/3.2 zullen alle aannemen dat het
om de jaren 1900 - 1999 gaat als u slechts twee cijfers voor het jaar opgeeft. In de
meeste besturingssystemen zoals alle versies van MSDOS en Windows 95/98 zal een 'run-time
error' optreden en het systeem zal stoppen met de uitvoering als een jaar wordt opgegeven
vóór 1980. In Windows NT echter zal de systeem datum daadwerkelijk veranderen naar het
opgegeven jaar (liggend vóór 1980).
Er is geen patch beschikbaar om dit probleem in vroegere versies van Turbo/PowerBASIC
te corrigeren, noch voor applicaties die hiermee zijn gemaakt. De enige oplossing is het
her-compileren van de applicatie met PowerBASIC 3.5 for DOS (of later). PowerBASIC 3.5
voor DOS kent dit probleem echter niet. Alle twee cijfers voor het jaar worden 'vertaald'
naar een datum in de jaren 2000 - 2099.
Alle versies van PowerBASIC DLL Compiler for Windows zijn Jaar 2000 bestendig
en nemen aan dat alle jaren lager dan '80' liggen in de jaren 2000 - 2079.