hobbel van
365,2422 dagen
Ontwikkelingen
Naast het jaartalprobleem, kent veel programmatuur nóg een hob
bel, die domweg is ontstaan door onkunde bij programmeurs. Een jaar
bestaat uit 365,2422 dagen. Omdat dat zo'n onwerkbaar getal is, heeft
Julius Caesar besloten een jaar op 365 dagen te stellen en de uren die
daardoor afvallen, eens per vier jaar te compenseren met een schrikkel
dag. Vandaar dat februari eens per vier jaar een extra dag heeft. Maar
die ene dag is eigenlijk iets teveel van het goede. Vandaar dat Paus Gre-
gorius het systeem later aanpaste. Elk honderdste jaar vervalt de schrik
keldag. Omdat dit met de eeuwen toch de nodige uren tekort geeft, is
besloten elk vierhonderdste jaar de schrikkeldag wel in te roosteren
(bent u er nog?).
Samengevat geeft dit de volgende regels:
Een jaar is een schrikkeljaar als het jaartal deelbaar is door 4 (zoals
bijv. 1996), behalve als het ook deelbaar is door 100.
Een jaar is een schrikkeljaar als het deelbaar is door 400.
Volgens de eerste regel is 2000 geen schrikkeljaar (deelbaar door 4
én 100). Maar volgens regel 2 is het wel degelijk een schrikkeljaar.
Een computer moet vanzelfsprekend met dit systeem bekend zijn. Nu
kent vrijwel iedereen de eerste regel, maar de tweede regel is veel min
der bekend. Vandaar dat er nogal wat programma's zijn die niet in de
gaten hebben dat er in het jaar 2000 een 29ste februari hoort te zijn.
Ook dit probleem neemt Team 2000 mee in zijn inspanningen.
tot geen verkeer zijn, op maandag
wel. Als het programma dat die liften
aanstuurt op vrijdag 8 januari 2000
aanneemt dat het zondag 8 januari
1900 is, kun je je het gedrang wel
voorstellen in de hal van dat gebouw.
Zo'n probleem kan ook ontstaan met
het programma dat het tijdslot van
een kluis bestuurt. Op 8 januari 2000
blijft de kluis dan dicht, terwijl - ie
een kleine week eerder, op zondag 2
januari, open was omdat het pro
gramma toen dacht dat het maandag
2 januari 1900 was. En zo zijn er tal
loze voorbeelden. Wat dacht je van
een programma dat uitstaande faktu-
ren beheert en op dinsdag 4 januari
plotseling aanmaningen ophoest voor
rekeningen die al jaren geleden zijn
betaald. Of een salarisprogramma dat
ineens weigert te betalen omdat alle
werknemers nog in dienst moeten
komen...'
De oorzaak
van het probleem
is zuinigheid en
'gemakzucht'. In
de prehistorie
van het compu
tergebruik - zo'n
20, 25 jaar gele
den, toen zelfs
voor de 'grote'
centrale compu
ter een 4 MB
Ram-geheugen
heel bijzonder
was - waren de
systemen voor
het opslaan van
gegevens nogal
duur. Hoe minder
geheugenruimte
een programma
nodig had, hoe
beter het dus
was, ook al
omdat de gege
vens op die ma
nier sneller gesor
teerd en getrans
porteerd konden
worden. Handige
programmeurs
zochten overal
naar de kortste
weg en voor het
gebruik van data
was die snel gevonden. In plaats van
21-9-1971 toetste men 21-9-71. Door
zo per datum twee posities minder te
gebruiken, bleef er op de harde schij
ven of magneetbanden kostbare ge
heugenruimte vrij voor andere nuttige
zaken.
IJzeren logica Hartstikke slim en eco
nomisch, natuurlijk, maar wel met
één bedenking: bij data tot het jaar
1999 is er niets aan de hand, maar
vanaf 2000 gaat het mis. De compu
ter 'leest' namelijk niet 1-1-2000
maar 1-1-00. Met de ijzeren logica
die dergelijke machines eigen is, doet
hij dan één van twee dingen: ofwel hij
constateert dat het om een datum
gaat in het jaar 1900 óf hij consta
teert dat er iets niet klopt en weigert
dienst. 00 is immers minder dan 99?
Van Mourik: 'Omdat met de jaren
opslagsystemen zoals harde schijven
niet alleen veel beter maar ook stuk
ken goedkoper zijn geworden, zou je
verwachten dat de eeuwindicatie in de
meeste programma's is aangepast,
maar helaas is dat niet zo. Heel veel
van die oudere programma's zijn wel
iswaar gemoderniseerd, maar de da
tumaanduiding is doorgaans hetzelfde
gebleven. Vooral omdat de gebruikers
het te omslachtig vinden om elke keer
weer het hele jaartal in te typen.
'Het gaat overigens niet alleen om
oude programma's. Ook een redelijk
nieuw programma als Excel 5.0 gaat
de fout in. Tik bij wijze van proef
maar eens een begindatum in van 01-
06-1996 en een einddatum van 31-
05-21Je zult zien dat er een foutmel
ding komt omdat volgens de bereke
ningen van de computer het contract
al is afgelopen voor het is afgesloten.
De allernieuwste programma's zijn
wel voorbereid op de eeuwwisseling
en gaan er bij 00 automatisch van uit
dat het om 2000 gaat, tenzij de ge
bruiker anders aangeeft. Maar daar
mee is nog niet gezegd dat het goed
gaat. Programma's op de kleinere, de
centrale systemen en de pc's gebrui
ken vaak gegevens van de centrale
computers, waardoor er alsnog een
conflict kan ontstaan. Of het basisge
heugen van de pc kan niet met de
eeuwwisseling overweg. Kortom, het
kan op heel veel plaatsen misgaan en
wij zijn daarom nu heel druk bezig
alle computerprogrammatuur die bij
de Rabobank wordt gebruikt door te
lichten zodat er gepaste maatregelen
kunnen worden genomen.'
Domweg testen 'w;j' zjjn de leden van
het Team 2000 dat in mei van dit jaar
(1996) aan de slag is gegaan onder
leiding van René Leek, manager bij
Spectrum. Het Team bestaat uit maxi
maal zestien ploegen, elk bestaande
uit een medewerker van de Rabobank
en een externe software-deskundige.
Veel mensen, maar het gaat ook om
veel werk. 'In veel gevallen', zegt Van
Mourik, 'is de enige manier om te
achterhalen of een programma pro
blemen kan geven, domweg tests
doen. De software steeds weer andere
handelingen laten verrichten en kij
ken wat er gebeurt. Dat moet met
sommige programma's heel voorzich-