st.gif (6578 bytes)

st_modem.gif (4576 bytes)

st_ip.gif (4808 bytes)

st_isdn.gif (4753 bytes)



ST a problém roku 2000 - úvod

Čo znamená problém roku 2000?

´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.

Prečo nastala táto situácia?

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.

Príklady kedy môže nastať problém roku 2000

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:

  1. ´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ť.
  2. 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.

Ako sa stavia ST k problému roku 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.

Aké sú normy ST?

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):

  1. 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,
  2. 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,
  3. 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,
  4. 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.)