ST a problém roku 2000 - úvod
´Problém roku 2000´, alebo tiež ´problém AD2000´, ´Y2k problem´, ´The
milenium bug´ a podobne predstavuje súhrn príčin a dôsledkov skutočnosti, že pri
tvorbe informačných systémov nebolo predpokladané ich používanie po roku 1999.
Samotná podstata problému vyplýva z nižšie uvedených faktov.
V časoch, keď boli pamäte a externé pamäťové médiá neúmerne drahé, bol
každý ušetrený byte považovaný za ´dobrý skutok´. Elegantným spôsobom, ako vo
veľkých databázach ušetriť miesto bolo uloženie roku v dátumových položkách len
pomocou posledných dvoch číslic namiesto štyroch, pričom sa automaticky
predpokladalo, že prvé dve číslice sú 19. Teda zápis bol napríklad ´87´ namiesto
´1987´. Takto sa usporili 2 byty na každom dátume, čo vo veľkej databáze (s
rozmermi rádovo 10 a viac tisíc záznamov) predstavovalo významnú úsporu miesta.
Takéto skrátenie zápisu nespôsobovalo žiadne problémy dokonca ani pri
výpočtoch.
Problém však nastane, ak chceme do takéhoto formátu zapísať rok 2000 a väčší.
Ešte väčší problém nastane, ak takto zapísaný rok 2000 (a väčší) vstupuje do
aritmetických, prípadne databázových operácií spolu s rokom menším ako 2000.
Platí totiž:
1998 - 1996 = 2 |
98 - 96 = 2 |
aj |
avšak |
2000 - 1998 = 2 |
00 -98 = -98 (!!!) |
Takýto výsledok môže v aplikáciách spôsobiť
nepredpokladateľný zmätok, pretože číslo je nielen neprirodzene veľké, ale navyše
aj záporné čo spôsobí v každom systéme úplne iný skutočný výsledok (v
závislosti od typu premennej, v ktorej je uložený výsledok). Z veľkej množiny
možných následkov pre telekomunikácie je možné menovať:
- telekomunikačná ústredňa nebude schopná správne určiť dĺžku trvania hovoru,
ktorý prebiehal počas polnoci z 31.12.1999 do 1.1.2000,
- počítač po 31.12.1999 bude vytrvalo tvrdiť ´neplatný dátum´,
- systém vypočíta nepredpokladateľnú (možno aj zápornú) mzdu, čo zrejme spôsobí
nevyplatenie miezd zamestnancom so všetkými následkami,
- systém nebude schopný určiť vek osoby a následne napríklad výšku dôchodku
apod.,
- systém namiesto pripísania úrokov za 1 rok odpíše úroky za 99 rokov,
- tovary s určitou trvanlivosťou budú automaticky vyradené zo skladu ako napríklad 90
rokov staré, čo už u stredne veľkého skladu spôsobí zmätok v skladovom
hospodárstve.
Taktiež v databázových operáciách vznikne zmätok, nakoľko:
1998 > 1996 |
2000 > 1998 |
aj |
avšak |
98 > 96 |
00 < 98 (!!!) |
Pri triedení údajov sú následky takéhoto výsledku pochopiteľné.
Ako príklad je možné uviesť:
- systém spracúvajúci len niekoľko najnovších údajov bude opakovane spracovávať
údaje z roku 1999 a k údajom z roku 2000 sa vôbec nedostane,
- rýchle vyhľadávacie algoritmy pracujúce na princípe utriedeného zoznamu prestanú
byť funkčné,
- výstupné zostavy budú neprehľadné.
Okrem dvojcifernej reprezentácie roku v dátumových položkách sú s rokom 2000
spojené ešte 2 ´nepríjemné´ záležitosti:
´99´ a ´00´ ako hodnoty zvláštneho významu - v niektorých
databázových systémoch je pre hodnotu zvláštneho významu použitá maximálna alebo
minimálna hodnota v zobraziteľnom rozsahu (ide o hodnoty indikujúce stavy hodnota
neprítomná, údaj vymazaný, údaj je potrebné zadať, koniec súboru apod.). Pre
dátumové položky to predstavuje hodnotu ´31.12.99´, resp. ´1.1.1900´. Tento fakt je
väčšinou skrytý v databázovom systéme a aplikácia naň nemá žiaden vplyv. Ako sa
takýto systém bude správať v roku 1999 a neskôr, je ťažké predpokladať.
Priestupný rok 2000 - podľa definície gregoriánskeho kalendára
bude rok 2000 rokom priestupným. Vyplýva to z tretieho pravidla pre určovanie
priestupných rokov. Pravidlá znejú takto:
- rok je priestupný, ak je deliteľný číslom 4 (každý štvrtý rok), ale
- rok nie je priestupný, ak je deliteľný číslom 100 (všetky roky koncov storočí),
ale
- rok je priestupný, aj je deliteľný číslom 400 (každý štvrtý rok konca
storočia).
Ak nie je v logike aplikácie implementované 3 pravidlo, bude rok 2000 vyhodnotený
ako rok nepriestupný, čo spôsobí posun dátumu v systéme o 1 deň po 1. marci 2000.
- Vrcholový manažment ST prikladá problému roku 2000 najvyššiu prioritu a preto už
v roku 1997 pristúpil k riešeniu.
- ST sa zaväzujú byť včas pripravené na prechod do nového tisícročia bez
obmedzenia služieb štátu a zákazníkom.
- V súčasnosti je vytvorený projektový tím Rada AD2000
koordinujúci všetky organizačné zložky, ktoré sa podieľajú na zabezpečení
splnenia tohto cieľa.
- Všetky otázky ohľadom problému roku 2000 smerujte na adresu
Rady AD2000.
ST prijali pre riešenie problému roku 2000 nasledovné medzinárodné
normy a štandardy:
Podľa týchto štandardov má byť dátum reprezentovaný vo formáte YYYY-MM-DD, kde
YYYY je rok s explicitne uvedeným storočím (teda štvorciferný), MM je mesiac uvedený
číslom a DD je deň v mesiaci.
Výbor britského štandardizačného inštitútu (British
Standards Institution Committee) vypracoval a definoval kritériá pre produkty,
ktoré sú označené ako vyhovujúce pre rok 2000 (BSI - DISC
PD2000-1:1998):
- všeobecná integrita produktu
- žiadna aktuálna hodnota dátumu nespôsobí
prerušenie vykonávanej operácie. Aktuálna hodnota dátumu znamená ´dnešný´ dátum
v podobe v akej je známy zariadeniu alebo produktu,
- dátumová integrita
- funkcie založené na dátume sa musia správať konzistentne
pred, počas a po roku 2000. Funkčnosť v tomto prípade zahŕňa ako funkčnosť
procesov tak aj správnosť výsledkov produkovaných týmito procesmi,
- explicitné/implicitné označenie storočia
- vo všetkých rozhraniach a
pamäťových médiách musí byť v každom dátume jednoznačne špecifikované
storočie, a to buď explicitne alebo jednoznačným algoritmom alebo odvodzovacími
pravidlami,
- rok 2000 musí byť rozpoznaný ako priestupný rok – definícia priestupného
roku je uvedená v predchádzajúcej kapitole a vychádza zo štandardu ISO 8601:1988.
(spracované na základe interných dokumentov ST,
a.s. Bratislava a SPT Telecom, Praha.)
|