Je tam schovaný a funguje ako základný časový kameň, od ktorého počítate všetky dátumy vo svojich tabuľkách. A keď sa naň pozriete bližšie, možno v ňom zbadáte 8-bitové lístky lotosového kvetu. Ponorte sa s nami do nášho seriálu Čriepky z histórie IT a poodkryte s nami závoj nad zaujímavosťami poschovávanými v dnes už často zabudnutých zákutiach času.

Microsoft Excel nesprávne považuje rok 1900 za priestupný. Ak v rámci svojich výpočtov a tabuliek budete chcieť tento rok používať, uvidíte, že sa medzi 28. februárom a 1. marcom nachádza ešte 29. február.

V základe je to tak trochu mysteriózne a čudesné.

Priestupný rok totiž nastáva každé štyri roky. Presnejšie, nastáva v každom roku, ktorý je deliteľný štvorkou, s výnimkou okrúhlych dátumov storočí (ako 1900, 2000, 2100), ktoré sú priestupnými rokmi iba v prípade, že sú deliteľné 400.

Rok 1900 teda priestupným byť nemá.

To, že Excel tento rok považuje za priestupný a vkladá do neho 29. február, je očividnou chybou, z ktorej vyplýva zlé počítanie dní a dátumov odohrávajúcich sa predtým.

Táto chyba pôvodne vôbec nevznikla v Microsofte, ale v jeho niekdajšej priamej konkurencii, vo firme Lotus, niekedy okolo roku 1982, kedy sa programoval onedlho najpoužívanejší tabuľkový procesor v podobe programu Lotus 1-2-3.

To, prečo presne k tejto chybe došlo nie je známe, avšak keďže často platí, že najjednoduchšie vysvetlenie je obvykle správne, bolo to zrejme preto, že sa tým nikto príliš nezaoberal a daný mechanizmus skrátka vznikol preto, že bol veľmi priamočiary a jednoduchý.

Rok 1900 sa vzal ako koreňový dátum a pripočítaním alebo odpočítaním 4 sme dostali priestupný rok, čím sa z roku 1900 stal priestupný rok takisto. Nikto to neriešil, pretože pre 60., 70., 80. a budúce 90. roky, ktoré sa s týmto programom používali a mali používať, všetko fungovalo a nikto s modernými počítačmi v kanceláriách neriešil veci čo sa odohrávali na prelome 19. a 20. storočia.

Program Lotus 1-2-3 na operačnom systéme Microsoft DOS

Lotus 1-2-3 sa stal v prvej polovici 80. rokov suverénne najpoužívanejším tabuľkovým programom na ranných IBM PC, Macintoshoch od Apple a ďalších počítačoch.

Keď v polovici 80. rokov pripravoval Microsoft svoj Excel, a plánoval žezlo kráľa tabuľkových programov prevziať, potreboval urobiť presedlanie pre používateľov a hlavne firmy celkom bezproblémové.

A aby dátumy v starých dokumentoch  správne fungovali, Microsoft skrátka musel dané chybné chovanie Lotusu skopírovať. Tento bug teda do Excelu úmyselne vložil, s predpokladom, že kompatibilita otváraných starých dokumentov je na prvom mieste a keďže nikomu to vlastne nevadilo ani v programe Lotus 1-2-3, nebude to nikomu vadiť ani v Exceli.

Excel vo svojej tretej verzii, ktorá sa objavila v roku 1991 za éry Windows 3.0. V tej dobe bol už jasne nadradený nad všetkou konkurenciou a v pohodlnosti používania, výkone a prívetivosti už Lotus 1-2-3 doslova zadupal do zeme

Táto chyba sa tak objavila v prvom vydanom Exceli v roku 1987 a pokračovala aj v ďalších, pričom existuje aj v súčasnej najnovšej verzii Excelu v roku 2022.

Navyše, tento bug je už vďaka Microsoftu aj súčasťou medzinárodnej špecifikácie ISO (International Standards Organization) a takisto ECMA (European Computer Manufacturers Association), kde je tento bug v rámci kancelárskeho Open XML formátu dokumentov štandardizovaný.

Každá aplikácia, ktorá tieto dokumenty otvára a vytvára má teda považovať rok 1900 v základe za priestupný, aj keď ním nie je a tak to bude na veky vekov, amen.

PREČO MICROSOFT TENTO ARCHAICKÝ PROBLÉM NIKDY NEOPRAVIL A ANI NIKDY NEOPRAVÍ?

Súčasných používateľov Excelu v roku 2022 už asi ťažko bude zaujímať kompatibilita s historickým DOS programom zo začiatku 80. rokov minulého storočia, ktorý už navyše celé dekády ani neexistuje

Prečo teda Microsoft, napríklad v roku 2000, alebo aspoň v rokoch 2006 až 2010, keď sa Office XML formát dokumentov otváral a štandardizoval, tento bug konečne neopravil?

Oprava je technicky možná a jednoduchá. Problémom je, čo by spôsobila.

Prakticky všetky dátumy, ktoré momentálne v Excel dokumentoch máte a ktoré existujú v miliardách vytvorených dokumentov najrôznejšej komplexnosti, by po otvorené v novom „opravenom“ Exceli klesli o jeden deň.

Fantastická dobová reklama na prelomový tabuľkový program Microsoft Excel, ktorý nechal všetku konkurenciu v prachu

Opraviť toto správanie, či už v rámci manuálnej práce používateľa s prepisom všetkých údajov, alebo v rámci nejakého mechanizmu, ktorý by to dodatočne riešil by si vyžiadalo obrovské úsilie a šlo by o zlom v priamej spätnej kompatibilite s predošlými verziami Excelu.

Popletené by boli nielen vzorce, pracujúce s dátumami priamo, ale aj nadväzné funkcie, ako napríklad WEEKDAY, určujúca deň v týždni, pretože štvrtok 29. február 1900 nikdy neexistoval

V mnohých ďalších funkciách a vzorcoch by sa mohlo objaviť rôzne neštandardné správanie, alebo by sa neštandardne a s popletenými dátumami mohli začať správať nadväzné programy, ktoré napríklad z Excel dokumentov môžu automaticky čítať.

Skrátka všetko je to obrovský zástup väčších, menších, známych a takisto ešte aj neznámych problémov, ktoré by sa po inak jednoduchej oprave zrazu vyrojili ako nahnevané včely z úľa.

Škatuľa s programom Microsoft Excel 2.2 pre Apple Mac z roku 1989 /Foto: J. Drake/

Porovnajte to s tým, čo sa stane, ak Microsoft túto chybu naopak nikdy neopraví:

Nič.

Keďže absolútne drvivá väčšina používateľov vo svojich tabuľkách nepoužíva dátumy z pred roka 1900, prejavenie problému s tým, že v roku 1900 existuje 29. február je veľmi raritné.

A práve preto Microsoft túto chybu už 40. rokov nechce/nemôže opraviť a zrejme aj ďalších 40 rokov neopraví.

Ďalšie drobné čriepky z IT histórie hľadajte na našom webe už najbližší štvrtok večer a takisto pod rovnomenným kľúčovým slovom.

František Urban

František Urban
Zameriavam sa najmä na prehľadové a analytické články z oblasti najrôznejších technológií a ich vývoja. Nájdete ma takisto pri diagnostike HW a SW problémov.