Co je COBOL a proč na něj spoléhá tolik institucí?

Guvernér státu New Jersey nedávno poukázal na COBOL, programovací jazyk starý šest dekád. Co přesně to je? A proč je stále klíčovým prvkem finančního světa, i když jen málo lidí ho umí ovládat?

Původ programovacího jazyka COBOL

Grace Hopperová byla výjimečná osobnost. Získala doktorát z matematiky na Yale, působila jako profesorka na Vassaru a v americkém námořnictvu dosáhla hodnosti kontradmirála. Její vliv na výpočetní techniku dokládá množství nadací a programů, které vznikly na její počest. Národní centrum pro vědecké výpočty v energetickém výzkumu pojmenovalo po ní svůj superpočítač Cray XE6. Námořnictvo po ní rovněž pojmenovalo torpédoborec s řízenými střelami USS Hopper. Motto této lodi, „Aude et Effice“ (Odvaž se a dokonej), by se na Hopperovou skvěle hodilo.

S cílem vyvinout programovací jazyk, který by byl bližší lidskému jazyku, konkrétně angličtině, než strojový kód, který je srozumitelný počítačům, sestrojila Hopperová první kompilátor. To otevřelo cestu prvním kompilovaným jazykům, jako byl FLOW-MATIC. Tato práce jí zajistila pozici v Konferenci pro datové systémy (CODASYL) v roce 1959.

Hopperová se podílela na specifikaci a vývoji jazyka Common Business-Oriented Language (COBOL). První schůze se konala 23. června 1959, a zpráva a specifikace jazyka COBOL byly zveřejněny v dubnu 1960.

COBOL – revoluční koncept

COBOL představil několik průlomových myšlenek. Pravděpodobně nejdůležitější z nich byla jeho schopnost fungovat na hardwaru od různých výrobců, což bylo v té době neslýchané.

Tento jazyk byl sofistikovaný a nabízel programátorům slovní zásobu téměř na úrovni angličtiny. Byl navržen pro zpracování velkých objemů dat a vykazoval mimořádnou matematickou přesnost.

Jeho slovník vyhrazených slov (slov, která tvoří jazyk) dosahuje téměř 400. Programátor tato slova skládá dohromady tak, aby tvořila syntakticky správné a funkční programy.

Každý programátor, který má zkušenosti s jinými jazyky, vám potvrdí, že 400 je ohromující počet vyhrazených slov. Pro porovnání, jazyk C má 32 a Python jich má 33.

Další zvláštností COBOLu je přísný požadavek, aby specifické řádky programu začínaly v přesně určených sloupcích. Tento relikt pochází z éry děrných štítků. Dnes mají programátoři větší volnost při formátování COBOLu a již není nutné psát vše velkými písmeny. To zjednodušilo práci s ním a eliminovalo dojem křiklavosti, ale stále se jedná o výtvor své doby, jak ukazuje následující příklad:

IDENTIFICATION DIVISION.
PROGRAM-ID. Hello-World.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "Hello world, from How-To Geek!"
STOP RUN.
END PROGRAM Hello-World.

COBOL – stále důležitý

Většina transakcí z bankomatů stále využívá COBOL.

I když se to dnes může zdát nemotorné, COBOL byl ve své době revoluční. Získal si oblibu ve finančním sektoru, ve federální vládě i velkých korporacích a organizacích. Důvodem byla jeho škálovatelnost, možnosti manipulace s velkými objemy dat a matematická preciznost. Byl instalován v sálových počítačích po celém světě, kde se pevně usadil a prosperoval. Je jako odolný plevel, který se nechce vzdát.

Naše závislost na systémech, které stále fungují na COBOLu, je ohromující. Zpráva agentury Reuters z roku 2017 uvádí následující šokující údaje:

V současnosti se stále používá 220 miliard řádků kódu COBOL.
COBOL je jádrem 43 procent všech bankovních systémů.
Systémy založené na COBOLu zpracovávají denně obchody v hodnotě 3 bilionů dolarů.
COBOL zajišťuje 95 procent všech výběrů z bankomatů.
COBOL umožňuje 80 procent všech transakcí kreditními kartami.

Jak vidíte, je obtížné prožít den, aniž bychom nepoužili systém, který je závislý na COBOLu. Bankovní účty a služby zpracování šeků, stejně jako veřejná infrastruktura, jako jsou bankomaty a semafory, stále spoléhají na tento kód napsaný před desítkami let.

COBOL – aktuální problém

Programátoři, kteří znají COBOL, jsou buď v důchodu nebo o odchodu do důchodu uvažují, případně již nejsou mezi živými. Neustále ztrácíme odborníky, kteří mají schopnosti udržovat tyto kriticky důležité systémy v provozu. Noví, mladší programátoři COBOL neznají. Většina z nich také nemá zájem pracovat na systémech, kde je nutné udržovat starý kód nebo psát nový.

Tento problém je tak vážný, že Bill Hinshaw, veterán v oblasti COBOLu, se nechal přesvědčit, aby odešel do důchodu a založil firmu COBOL Cowboys. Tato soukromá poradenská firma pomáhá zoufalým firemním klientům, kteří nikde nemohou sehnat kodéry znalé COBOLu. „Mladíkům“ v COBOL Cowboys (jejichž mottem je „Not Our First Rodeo“) je kolem 50 let. Domnívají se, že 90 procent podnikových systémů z žebříčku Fortune 500 běží na COBOLu.

Soukromé podniky, korporace a banky samozřejmě nejsou jediní, kteří potřebují zpracovávat obrovské množství finančních dat. Federální, státní i místní vládní služby mají stejné potřeby. Stejně jako ostatní k tomu využívají sálové počítače a COBOL.

Dopady pandemie koronaviru přinesly nejen utrpení a ztráty na životech, ale také ekonomickou nejistotu pro podnikatele, zaměstnance i osoby samostatně výdělečně činné. Obrovský počet propuštěných v New Jersey přiměl guvernéra, aby vyzval zkušené programátory COBOLu k pomoci se stárnoucími systémy státu. Ty se obtížně vyrovnávají s 326 000 novými žádostmi o podporu v nezaměstnanosti.

Open Mainframe Project spustil dobrovolnickou iniciativu na pomoc. Pokud si myslíte, že můžete nějak pomoci, budou rádi, když se ozvete.

New Jersey není v této situaci ojedinělý. Více než 10 milionů lidí se zaregistrovalo na podporu v nezaměstnanosti a toto číslo stále roste. Connecticut má problémy se zpracováním čtvrt milionu nových žádostí na svých 40 let starých systémech.

Jedná se o rozšířený a hluboce zakořeněný problém. Zpráva Úřadu pro vládní odpovědnost z roku 2016 uvádí, že některé systémy COBOL běžící na sálových počítačích jsou až 53 let staré. Mezi tyto systémy patří ty, které se používají ke zpracování dat pro Ministerstvo pro záležitosti veteránů, Ministerstvo spravedlnosti a Správu sociálního zabezpečení.

Proč nemigrovat na moderní systémy?

Upgrade těchto zastaralých systémů není tak jednoduchý, jak by se mohlo zdát. Systémy jsou klíčové a musí fungovat 24 hodin denně, 7 dní v týdnu, protože na nich stojí finanční, vládní a obchodní svět. Kód je starý, mnohovrstevnatý a často nedostatečně dokumentovaný. Navíc musí fungovat neustále. Tato situace je srovnávána s odmontováním vrtulí z letadla za letu a snahou o instalaci proudových motorů.

Kromě rizika je ekonomický argument pro přechod na moderní systémy také obtížný. Finanční prostředky, které byly investovány do provozu těchto sálových počítačů a aplikací COBOL, jsou obrovské. Měly by tyto instituce všechno zrušit a začít znovu, dokud kód COBOL stále běží a plní svou funkci? Jedná se o ožehavou otázku, na kterou se zřejmě nehledá snadná odpověď. Migrace z COBOLu nebude ani levná, ani rychlá.

„Právě jsem se podílel na konverzi, abych mohl přejít z COBOLu na Javu,“ řekl Hinshaw. „Trvalo jim to čtyři roky a stále nejsou hotovi.“

Když Commonwealth Bank of Australia v roce 2012 nahradila svou základní platformu COBOL, trvalo to pět let a konečné náklady dosáhly 749,9 milionů dolarů (1 miliarda australských dolarů).

A to ještě jde o případ, kdy vše probíhá podle plánu. Britská banka TSB byla v roce 2018 nucena přejít ze systému založeného na COBOLu kvůli akvizici. Nedopadlo to dobře. Banka nemohla několik dní fungovat, což způsobilo, že náklady na migraci nakonec dosáhly 330 milionů liber. A to se jednalo o sumu navíc k rozpočtovaným nákladům na samotnou migraci. TSB navíc přišla o 49,1 milionu liber v důsledku finančních podvodů během zhroucení systémů.

Odškodnění zákazníků překročilo 125 milionů liber a banka musela investovat 122 milionů liber do najmutí nových zaměstnanců, aby zvládli 204 000 stížností zákazníků. Generální ředitel rezignoval a společnost se ještě dva roky po události vyrovnávala s následky.

COBOL – zapeklitá situace

Současný stav nemůže trvat věčně, ale vyhlídka na změnu není nijak lákavá. Nicméně jedinou cestou ke zlepšení je řízená a pečlivá migrace na moderní software a hardware.

Provedení této změny bez přerušení provozu, ztráty dat a výpadků vyžaduje moderní odborné znalosti a finanční prostředky, což je 50 procent rovnice. Druhou polovinou je odbornost v oblasti COBOLu a čas. Bohužel nám docházejí obě tyto ingredience.

Možná, že se objeví nová generace COBOLových „kovbojů“, kteří tento problém vyřeší.