Tietokone-lehti 2/1997

Y2K uhkaa

Pahaenteinen lyhenne Y2K voisi olla uuden bakteerin tai tietokoneviruksen koodinimi. Se ei ole kumpaakaan, vaan kyseessä on amerikkalaistyylinen lyhenne sanoista Year 2000, jolloin K merkitsee kiloa eli tuhatta. Y2K eli kotoisasti yy-kaa-koo voittaa kuitenkin vaarallisuudessaan kaikki tunnetut tietokonevirukset.

Kyseessä on lähes jokaisen ATK-ammattilaisen tuntema asia: kun vuosituhat vaihtuu, tietokoneiden sovellukset saattavat toimia väärin ja tuottaa arvaamattomia seurauksia. Asiasta on puhuttu julkisuudessa jo muutaman vuoden ajan, mutta mitä lähemmäksi vuosi 2000 tulee, sitä suuremmalta ongelma alkaa näyttää.

Pahinta on, että Y2K-ongelmat alkavat jo ennen vuotta 2000 eivätkä ne suinkaan lopu vuosituhannen vaihtumiseen. Ellei oma yrityksesi ole vielä tiedostanut ongelmaa, nyt on käsillä 11. hetki sen ratkaisemiseksi.

Säästöä ja laiskuutta

Periaatteessa kyse on yksinkertaisesta asiasta. Tietokoneiden käsittelemät päivämäärät on usein tallennettu niin, että vuodelle on varattu vain kaksi merkkiä. Esimerkiksi helmikuun viidestoista päivä 1997 on tietokonemuodossa yleensä 150297 tai 970215.

Syy siihen, että vuotta merkitään vain kahdella numerolla, on osittain historiallinen. Aikanaan, kun levy- ja muistitila oli kallista, lyhyiden numeroiden käyttö säästi selvää rahaa. Sittemmin kahta numeroa on käytetty sekä laiskuudesta että yhteensopivuudesta, kun uusien ohjelmien on haluttu lukevan vanhoja tiedostoja.

Kun vuoden 99 jälkeen tuleekin vuosi 00, uuden ja vanhan vuosituhannen päiväysten välisiä eroja laskevat ohjelmat alkavat käydä takaperin. Esimerkiksi ihmisen ikä ja korko muuttuvat negatiivisiksi. Laskennan ohella myös päivämäärien lajittelu menee sekaisin, kun 2000-luvun päiväykset tulevat ennen 1900-lukua. Nämä tekijät riittävät tuottamaan mitä kummallisempia virheitä.

Pahimmassa tapauksessa seuraukset voivat olla katastrofaalisia. Kun vuosi 1999 loppuu ja 2000 alkaa, taivaalta saattaa ilotulitusten keskellä putoilla muutakin kuin raketteja.

Valtava ongelma

Tämän verran Y2K-uhkasta on yleisesti tiedossa. Mutta vain harva on huomannut, miten hankala ja laaja ongelma lopulta onkaan.

Kyse ei nimittäin ole pelkistä pankeista tai vakuutusyhtiöistä, vaan ongelma koskettaa tavalla tai toisella meistä jokaista. Yritysten kirjanpito, laskutus, varastonvalvonta, kulunvalvontajärjestelmät ja jopa kodinelektroniikan laitteet saattavat seota ja tuottaa ikäviä yllätyksiä.

Okei – kyse on ohjelmissa olevista puutteista, joten nehän voidaan aina korjata. Vai voidaanko? Ikävä kyllä suurin osa uhanalaisesta koodista on vanhoissa, 10-30 vuotta sitten tehdyissä keskuskoneohjelmissa, joiden lähdekoodia ei enää ole käytettävissä. Ja vaikka koodi olisi säilynytkin, mistä löytyy enää ohjelmoijia, jotka osaavat käyttää tuonaikuisia ohjelmointivälineitä ja kieliä? Varmaa on, että Cobol-taitoiset wanhat koodarit ovat kohta haluttua tavaraa.

Muutostöiden kustannukset ovat valtavia. Gartner Groupin arvion mukaan Y2K-ongelman ratkaisu maailmanlaajuisesti maksaa käsittämättömät 500 miljardia dollaria. Ei nimittäin riitä, että pelkät ohjelmat korjataan, sillä myös kaikki tallennettu data pitäisi vaihtaa kahden merkin muodosta neljän merkin muotoon. Muutos dataan ja käytössä oleviin sovelluksiin pitäisi kaiken lisäksi tehdä yhtä aikaa, jotta vanhaa ja uutta päiväystä käyttävät ohjelmat datoineen eivät menisi sekaisin.

Ja jotta asia olisi todella hankala, kukaan ei tarkkaan ottaen tiedä, missä kaikissa muutoksia tarvitaan. Erään arvion mukaan 90 prosenttia käytössä olevista sovelluksista pitää korjata ennen vuosituhannen vaihdetta. Hyvästä yrityksestä huolimatta monet ohjelmat jäävät huomaamatta ja ongelma paljastuu vasta vuoden vaihduttua.

Parasta olisi, jos tietojärjestelmien kelloja voitaisiin jo nyt siirtää testimielessä vuoteen 2000 ja katsoa, mitä tapahtuu. Mutta niin ei tietenkään voi tehdä, koska tuotantokäytössä olevia tietojärjestelmien kelloja ei voida peukaloida. Siksi osa ongelmista havaitaan väistämättä liian myöhään.

Onneksi 2.1.2000 on sunnuntai, joten arki alkaa vasta vuoden kolmantena päivänä. Maanantaista 3.1.2000 tuleekin kansainvälinen kaaospäivä, sillä yhteiskunta toimii jo nyt pelottavan paljon tietokoneiden varassa. Jos ne sekoavat, vaikutukset näkyvät kaikkialle.

PC:tkin sekoilevat

Ensimmäisestä arkipäivästä tulee kaaos, koska vuoden vaihteen yli kiinni olleet PC:t eivät ole siirtyneet oikein uudelle vuosituhannelle. Tätä on helppo kokeilla itsekin: siirrä mikrosi kello osoittamaan 31.12.99 23:59, sulje kone, odota muutama minuutti ja käynnistä kone uudelleen. Todennäköisesti kalenteri osoittaa sen jälkeen tammikuuta 1980.

Lähes kaikissa nykyaikaisissa PC-mikroissa kalenterin voi siirtää käsin 1.1.2000 ja sen jälkeen kello käy taas oikein, mutta jo yksikin väärä päiväys riittää vanhentamaan salasanat, sotkemaan tiedostojen varmuuskopioinnin ja estämään tietokantojen päivitykset. Esimerkiksi Notes-kantojen replikointi sekoaa jo siitä, että PC:n kelloa siirtää muutamalla tunnilla eteenpäin ja taas takaisin Notesin ollessa käynnissä. Ongelma ei koske yksin keskuskoneita, vaan myös mikroja.

Mielenkiintoinen kaaos on odotettavissa myös netissä, kun sähköpostin aikaleimat saattavat heittää lähettävän ja vastaanottajan koneen välillä jopa sadalla vuodella.

Y2K:n kaltaisia tilanteita on ollut ennenkin. Esimerkiksi vuoden 1989 loppuessa osa vanhoista PC:istä oli korvattava uusilla, koska niiden kellot eivät yksinkertaisesti toimineet 90-luvulla. Eräät Unix-apuohjelmat, joissa oli käytetty 15-bittistä signed int-tietotyyppiä 16-bittisen unsigned-tyypin sijaan, sekosivat 19.9.1989 kalenteritiedon ylivuodon johdosta. Ja PDP-6, johon vuonna 1964 ohjelmoitiin vain 12-bittinen kalenterikenttä, jouduttiin päivittämään vuonna 1975 samasta syystä.

Y2K-ongelman rinnalla tämä oli kuitenkin vasta verryttelyä.

Ongelmat alkavat jo 1999

Vuoteen 2000 on vielä vajaat kolme vuotta aikaa, mutta ongelmat alkavat jo aikaisemmin. Vaarassa ovat kaikki sovellukset, jotka joutuvat käsittelemään vuoden 2000 yli meneviä päiväyksiä laskiessaan esimerkiksi maksun eräpäivää tai korkoa määräpäivään mennessä.

Erityisen vaarallinen päivä on 9.9.1999, koska merkintää 9.9.99 tai 9/9/99 on yleisesti käytetty korvaamaan aikaa, jota ei tiedetä tai jota ei tule. Merkintää näkee vieläkin esimerkiksi tavaroiden lähetyslistoissa kuvaamassa jälkitoimitusta, jonka lopullista toimituspäivää ei tiedetä. Siksi 10.9.1999 yritysten tietojärjestelmät luulevat, että kaikki jälkitoimitukset on yhtäkkiä saatu hoidettua!

Kun uusi vuosituhat on sitten päässyt hyvään alkuun, ongelmat jatkuvat. Vuosi 2000 on nimittäin karkausvuosi, vaikka 1900 ja 1800 eivät olleet. Läheskään kaikki kalenterit eivät osaa ottaa tätä huomioon, joten ne siirtyvät suoraan maaliskuun puolelle. Silloin viikonpäiviä laskevat ohjelmat pitävät maaliskuusta 2000 lähtien sunnuntaita maanantaina, mikä riittää sotkemaan arki- ja pyhäpäivien seurannan.

Ja kun tämäkin ongelma on ratkaistu, edessä on jälleen uusi haaste. Suunnitelmien mukaan Euro-nimiseen valuuttaan siirrytään vuonna 2002, jolloin tietokannoissa olevat rahamäärät, palkat ja osto-, myynti- sekä varastohinnat on kertarysäyksellä muunnettava uuteen arvoon. Suuria ongelmia seuraa, jos osa hinnoista on muunnettu ja osa ei – tai jos hintatietoja siirretään järjestelmästä toiseen.

Meillä suomalaisilla riittää työtä myös henkilötunnuksia käsittelevien ohjelmien muokkauksessa. 1900-luvulla syntyneiden tunnuksessa on miinus, joka on koodattu kiinteästi moniin ohjelmiin. Vuonna 2000 tai sen jälkeen syntyneitä on merkittävä jollain uudella merkillä, joten virhetarkistuksetkin on ohjelmoitava uudelleen.

Varaudu ajoissa

Mitä siis tehdä? Ellet ole vielä kartoittanut oman yrityksesi tietojärjestelmien tilannetta, nyt on jo kiire. Jos yrityksen laskutus tai varastonvalvonta sekoaa vuosituhannen vaihtuessa, edessä voi olla monen kuukauden katkos toimintaan ja jopa konkurssi. Ohjelmoijat ovat tuohon aikaan niin kiireisiä, ettei pikaista apua saa mistään.

Nyt käytössä olevia ohjelmia voi yrittää muokata ja korjata, mutta ilman lähdekoodia se on mahdotonta. Muokkaustyön on arvioitu maksavan vajaan 10 markkaa ohjelmariviä kohti. Hinta on kova, koska operatiivisissa sovelluksissa voi olla kymmeniä tuhansia rivejä, mutta jos muutostyö tehdään huolimattomasti, muutos voi pilata jonkin ohjelman muuten toimivan osan.

Monissa tapauksissa onkin helpompaa korvata vanhat tietojärjestelmät kokonaan uusilla. Siksi vuodesta 2000 tuleekin client/server- ja intranet-tekniikoiden lopullisen läpimurron vuosi. Mutta uusien sovellusten kehittäminen vie aikaa, joten nyt alkaa olla jo myöhäistä.

Jos itse olet ohjelmoija, varmista että kaikki tuottamasi koodi osaa käsitellä päiväykset ja lajittelut oikein. Älä oleta, että vuosiluku alkaa aina 19:llä äläkä tarkista henkilötunnuksen viivaa, koska se korvautuu muutaman vuoden kuluttua toisella merkillä.

Ja jos olet joskus osannut Cobolia, kaiva pölyttyneet manuaalit ajoissa esiin! Saatat pian saada houkuttelevia työtarjouksia.

<takaisin