Článek
Jedním z důvodů, který České správě sociálního zabezpečení (ČSSZ) komplikuje zvládat a ve lhůtách zpracovávat vlnu nových žádostí o důchody, má být i starý programovací jazyk COBOL, na kterém část systému funguje a kterému podle ústředního ředitele Františka Boháčka rozumí jen velmi malá skupina zaměstnanců a nikdo jiný není v podstatě schopen s ním pracovat.
O starém systému šéf ČSSZ promluvil koncem květnu v Poslanecké sněmovně, když vysvětloval průtahy s výplatami nových důchodů.
Programovacímu jazyku se dlouhodobě věnuje letos 85letý Vlastimil Čevela, který mimo jiné školil i pracovníky správy. „Nedostatek kvalifikovaných zaměstnanců také nevznikl naráz nějakou zásadní změnou v pravidlech programování, ale postupným odchodem obeznámených lidí,“ popisuje v rozhovoru, který proběhl přes e-mailem. Nahradit do budoucna COBOL bude podle programátora velmi náročné.
Jak velkou roli může hrát v aktuálním pozdním proplácení nových důchodů program v jazyce COBOL?
Program je jedním z kritických prvků, které zásadním způsobem ovlivňují počítačové zpracování důchodů. Dalšími kritickými prvky jsou lidé, kteří program umí v případě potřeby upravit, a počítač, který realizuje zpracování podle programu.
Pro zajištění dlouhodobého fungování systému je však určitě rozhodujícím kritickým prvkem koncepční řízení ze strany vrcholového vedení. Z vyjádření ústředního ředitele je zřejmé, že problém vznikl nedostatkem lidí, kteří by dokázali v potřebném termínu provést potřebné změny v programech. Tedy nikoliv, že by selhali lidé, počítač nebo program, ale že historicky se příliš mnoho času nevěnovalo koncepčnímu řízení.
Takže problém není samotný programovací jazyk jako spíš nedostatek lidí, kteří s ním umí pracovat?
Problémy kolem programů napsaných v jazyce COBOL se čas od času objevují i v USA, kde je jeho používání stále velice rozšířeno. Není to ale proto, že by byl natolik zastaralý, aby programy nedokázaly plnit účel, ke kterému byly vytvořeny, ale paradoxně je to spíš naopak. Dlouhodobě provozně fungují tak stabilně i spolehlivě přesně a drobné úpravy se v nich dají dělat i bez zvláštní kvalifikace, takže nevyžadují zvláštní pozornost.
Popisovaný problém, kdy je potřeba rychle udělat podstatnější úpravy kolem důchodů, je stejný, jako byl nedávno na webu diskutován kolem některých agend veřejné správy v souvislosti s pandemií covidu ve Spojených státech. Protože běžně není třeba se o programy moc starat, není věnována dostatečná pozornost udržení kvalifikace personálu tak, aby dokázal přiměřeně reagovat.
Jazyk COBOL vznikl už v roce 1959. K čemu původně sloužil?
S rychlým rozvojem využívání počítačů koncem 50. let minulého století vznikly první dva široce používané programovací jazyky, které byly tematicky specializované. V roce 1957 to byl „Fortran“ (formula translator = překladač vzorců), který vyvinula firma IBM pro matematické a vědecko-technické výpočty.
Roku 1959 pak COBOL (Common Business Oriented Language = všeobecně obchodně orientovaný jazyk) pro zpracování hromadných dat, potřebných v podnikové, finanční a státní správě. Ten byl vyvinut společným úsilím výrobců a uživatelů počítačů ve spolupráci s ministerstvem obrany USA.
A jak vypadaly počítače, pro které byl program původně vymyšlený?
Byla to doba velkých sálových počítačů, kdy se hromadná data nejprve pořizovala samostatně do děrných štítků, děrných pásek a disket – později pak pomocí terminálových sítí. Základem archivace dat byly rozsáhlé soubory na discích ve výpočetních centrech a do 80. let byl COBOL pro jejich zpracování prakticky světově dominantním jazykem.
Vy jste školil lidi na programování v jazyku COBOL i v České správě sociálního zabezpečení. Dá se nějak přiblížit, na co konkrétně tento jazyk používají?
Od 90. let do roku 2014 jsem školil několik stovek COBOL programátorů nejenom pro českou správu důchodů, ale i pro slovenskou, pro české i slovenské pobočky zahraničních bank, slovenskou energetiku, pro celostátní evidenci hospodářských zvířat, pro mezinárodní koncern Glavunion, který po Evropě dodává skla do aut, a kromě řady dalších také opakovaně pro firmu, která zajišťovala IT provoz Frankfurtské burzy.
Nutno dodat, že vývojové nástroje, které umožňují profesionálně programovat v COBOLu, byly a jsou hodně drahé. Proto bych jako perličku uvedl, že malý nástroj Cevela MX COBOL free Compiler, který jsem v letech 2006–2013 nabízel na internetu, si zaregistrovali zájemci, asi spíše programátorští kutilové ve více než 40 zemích.
Máte informace, kde všude se ještě COBOL využívá – ve firmách, ve státní správě, ve světě?
Oblast jeho výhodného využívání je tam, kde je třeba pracovat s velkými soubory dat, třeba několik milionů položek v kartotéce důchodců nebo, jak mi jeden kolega vyprávěl, že u Forda v USA pracoval na agendě asi dvou milionů půjček na auta. On totiž COBOL má pro jejich ovládání, třídění a vyhledávání velice účinné nástroje.
A tak, když se na internetu podíváte na TIOBE index, což je měsíčně automaticky aktualizovaný přehled světové popularity programovacích jazyků, tak v květnu 2023 najdete COBOL na 26. místě a Fortran na 19., což je na více než 60 let staré historické jazyky velice slušné umístění.
Existuje nějaká modernější alternativa? Případně jak pracné podle vás je systém přenastavit?
Moderní alternativy samozřejmě existují, ale převedení dlouhodobě provozovaných počítačových projektů z jednoho programovacího jazyka do jiného není vůbec jednoduchá záležitost.
Pokud se jedná jen o různé dialekty, je možné využít fungující zdrojové kódy programů, vytipovat a upravit rozdíly či nově potřebné funkce doplnit. Ale třeba v případě programu COBOL pro obsluhu kartotéky důchodů, u kterých bych odhadl celkový rozsah na tisíce nebo nějakou desítku tisíc řádků definic a příkazů, toto určitě není reálné. Důvodem je, že způsob práce s daty je v současných IT nástrojích koncepčně úplně jiný.
Vlastimil Čevela (1938)
Československý expert na programovací jazyk COBOL. Jako analytik-programátor se tímto jazykem profesionálně zabýval od roku 1970 následujích 20 let na sálových počítačích Tesla 200 a EC1026. V letech 1990 až 2003 pak provozoval vlastní firmu „Programátorské služby COBOL“ a do roku 2014 k tématu poskytoval konzultace a školení.
Od počátku se věnoval racionalizaci a metodice programování COBOL nejen v Ingstav Brno, kde působil, ale formou konzultací, příspěvků na odborných akcích a článcích v odborných publikacích v rámci celého tehdejšího Československa. Především pak v letech 1976 až 2006 na seminářích o programování a tvorbě softwaru v Ostravě.
Je také iniciátorem a redaktorem postupně budované virtuální expozice „Historie programování a VT u nás“ na portálu prog-story.technicalmuseum.cz, navazujícím na sbírku a expozici výpočetní techniky Technického muzea v Brně.
Kompletní přechod na moderní IT nástroje by proto vyžadoval pro tu část zpracování dat, kterou pro důchody dosud realizují programy COBOL, vytvořit zcela nové projekční a programátorské řešení, což je vždy časově i finančně velice náročné.
Protože jsem oběma způsoby několik podnikových projektů realizoval, tak k tomu doplním osobní zkušenost: Když totiž určité činnosti lidí dlouhodobě nahradí počítač, tak je následně časově i komunikačně velice obtížné od metodicky zainteresovaných pracovníků nebo z dokumentace zjistit, jak to v detailu vlastně má fungovat.
Kolik lidí odhadujete, že aktuálně dnes ovládá COBOL na úrovni, že v něm například umí najít chybu, nebo ho upravit?
Nedovedu odhadnout, protože nevím, kolik firem či organizací u nás tento jazyk stále využívá, ale inzeráty, které hledají programátory se znalostí tohoto jazyka, se občas objevují.
Vzhledem k poměrně malému a spíše specializovanému rozsahu využití se však u nás nevyplatí ho učit, takže není snadné potřebnou kvalifikaci získat.
Skutečností ale je, pokud někdo kvalifikovaně programuje v některém z moderních programovacích jazyků, jako je například Python, rodina C či Java, tak ví, že programování spočívá v identifikaci dat, uložených v paměti, se kterými se pomocí příkazů, funkcí či dalších pokynů pracuje. A COBOL používá stejný princip – jen trochu jinak. Pro skutečného profesionála by při dostatečné motivaci proto nemělo být problémem jeho základy zvládnout.
Ony totiž téměř všechny agendy, které jsou psány v jazyku COBOL, zpravidla realizují především manipulaci s datovými položkami či jejich skupinami nebo soubory a kupecké počty jednoduchou aritmetikou. Rovněž syntaxe zdrojového programu, tedy způsob definování datových položek a příkazů, které s nimi pracují, byl od počátku navrhován pro méně zkušené programátory a tak jde vlastně o částečně formalizovaný anglický text.
Můžete shrnout, v čem se COBOL odlišuje od jiných programovací jazyků?
První rozdíl je v tom, že zmíněné moderní jazyky jsou navrženy jako univerzální pro různé typy úloh, zatímco COBOL byl od počátku specializovaný na práci s velkými objemy složitě strukturovaných dat.
Druhý, který asi nejvíc odrazuje a evidentně i provokuje pravověrnou matematickou a vědeckou komunitu, je v tom, že nepotřebuje abstraktní matematické symboly či definice ani terminologii, ale vystačí si s jednoduchou angličtinou a necelým tuctem aritmetických a relačních operátorů (+, -, *, /, **,=,>,<,>=,<=).
COBOL v praxi
Na obrázku je zjednodušený příklad, napsaný podle normy COBOL 1985, který bude fungovat i dnes. Program řeší přečtení kartotéky důchodců s výpočtem, kolik z nich v letošním roce 2023 dosáhne 85 let věku a kolik činí jejich současný průměrný důchod.
Je to logické, protože ke svému úzkému zaměření na výše popsané typy úloh si s tím bohatě vystačí. A když jsou nějaké matematické, statistické či jiné výpočty potřeba, tak má možnost si pro ně přivolat buď specializované vlastní interní funkce anebo libovolné funkce ze současných moderních jazyků.
Třetí, možná zásadní rozdíl je v tom, že přímo v zadání pro vytvoření jazyka COBOL z roku 1959 bylo mimo jiné stanoveno, že rychlé zvyšování požadavků vede k nutnosti častých úprav v programech. Proto je žádoucí, aby součástí programu byla tak úplná dokumentace, která by tyto změny umožňovala.
Na webovém portále Technického muzea v Brně, kam externě přispíváte, je váš článek z roku 2002 s vysvětlením, proč COBOL přežil rok 2000. Je pro vás překvapením, že se COBOL stále využívá i v roce 2023?
To, že jsou na něm stále provozovány projekty s rozsáhlými daty, mě nepřekvapuje, protože jeho nástroje na popis datových struktur byly tak chytře vymyšleny, že se později staly i základem popisu databank. Spíše mě zaujalo a potěšilo, že se i poslední době objevují snahy o nová, volně dostupná vývojová prostředí.
Myslím, že není třeba vyhazovat programy, když dlouhodobě spolehlivě fungují, ale určitě je vhodné využívat bohaté možnosti pro spolupráci programů COBOL s moderními jazyky, které toho samozřejmě v mnoha směrech umí daleko víc a jsou podstatně jednodušší na provozování.
Proto jsem také v poslední době zkusil programování v Pythonu, který je mi velice blízký svým striktním požadavkem na grafické odsazovaní úrovní zdrojového textu bez zbytečných oddělovačů. Pokud ale kouknu na program v Pythonu po čase a nemůžu najít, jak to vlastně funguje, tak si říkám zlatý dokumentačně ukecaný COBOL, protože ten umí textově lidsky srozumitelně pojmenovat i podmínku.