Technológiák górcső alatt: Cobol

Réfi Balázs

2021. március 8.


Cobol, AS/400, RPG. 50 éves kor fölött ismerheted, alatta nem feltétlen. Pedig az üzleti tranzakiók végén még mindig sokszor Cobol fut.

More...

COBOL, AS/400, mainframe, RPG – csupa olyan szó, ami egy fiatal informatikusnak már semmit nem mond. Pedig itt vannak körülöttünk, teszik a dolgukat, csak nincsenek úgy a kirakatban és nem olyan szexik, mint egy mobil app.

Cobol infografika - Bluebird

Egy kis történelem

Az év 1959. Fidel Castro győzelemre viszi a forradalmat Kubában, itthon az 56-os forradalomban való részvételért kivégzik Mansfeld Pétert. Mozikba kerül a Disney-féle Csipkerózsika és a Ben-Hur, Magyarországon elkezdődik A Szabó család. Megjelenik az utakon az ikonikus Mini, a játékboltokban a Barbie baba. A Luna 3 műhold elkészíti az első felvételeket a Hold túlsó oldaláról. Ebben az évben született John McEnroe, Sean Bean, Magic Johnson, Emma Thompson vagy itthon Áder János, Falusi Mariann és Rudolf Péter. Feel old yet?

Mindezeken túlmenően pedig 1959-ben fektették le a Common Business-Oriented Language, vagy ahogy a világ megismerte, a COBOL programozási nyelv alapjait (az első hivatalos kiadására végül 1960-ban került sor). És hogy miért írunk 2021-ben egy több mint 60 éves történetről? Hát csak azért, mert a COBOL és az arra épülő megoldások az informatika nagy túlélői. Egy olyan iparágban, ahol az öt-tíz éves megoldások már a régmúlthoz tartoznak, a COBOL a krokodiléhoz és a cápáéhoz hasonló makacssággal egyszerűen nem hajlandó kihalni.

És nehogy azt higgyük, hogy a COBOL-ban írt programok csak a vállalati adatközpontok eldugott zugaiban, mindenkitől elfeledve működnek. Amerikai adatok szerint az ATM-tranzakciók 95 százalékát, az utazásfoglalások 96 százalékát és a POS-tranzakciók 80 százalékát COBOL-alkalmazások dolgozzák fel; az amerikai társadalombiztosítónál 60 millió sornyi, az adóhivatalnál 50 millió sornyi COBOL-kód működik. Összességében az üzleti tranzakciók 70 százalékában érintett legalább egy COBOL-program. Ha ezek egy csapásra leállnának, leállna az élet is. Bizonyos értelemben le is állt: áprilisban New Jersey kormányzója nem csak önkéntes egészségügyi dolgozókat keresett, hanem COBOL-programozókat is. Az történt ugyanis, hogy az állam 40 éves, a munkanélküli segélyért jelentkezők kérelmeit feldolgozó rendszere nem bírta a hirtelen megnövekedett terhelést.

Cobol programozási nyelv - Bluebird blog

image source: https://medium.com/modern-mainframe/beginners-guide-cobol-made-easy-introduction-ecf2f611ac76

A COBOL teremtése

Amikor a COBOL-t 1959-ben elkezdték kidolgozni, minden számítógépgyártó (volt vagy fél tucat az USA-ban) saját operációs rendszerrel és ahhoz saját programozási nyelvvel szállította a gépeit, gyakorlatilag az adott szállítóhoz (és gépcsaládhoz) kötve a programokat. Az amerikai védelmi minisztérium kezdeményezésére (és anyagi támogatásával) egy bizottság megtervezte a COBOL-t, amely aztán gyorsan elterjedt. Ez nem kis részben az akkor egyeduralkodónak számító IBM-nek volt köszönhető, amely gyorsan felkarolta a nyelvet.

Az új programozási nyelv egyik nagy újítása a szintaxis volt. Szakítottak más nyelvek (különösen a FORTRAN) inkább matematikai képletekre emlékeztető kódjaival, és erősen támaszkodtak az angol nyelvre a parancsok definiálásánál. A cél az volt, hogy érthetővé tegyék a COBOL-ban írt programot más fejlesztők és nem informatikusok számára is – a COBOL-kód mintegy „elmeséli”, hogy mit is csinál (majdnem mint a BASIC). Ebből viszont egy kimondottan szószátyár nyelv született, amit a mai programozók többsége furcsának talál.

A szintaxisnak nagyon szigorú szabályai vannak, odáig menve, hogy hány szóköznek kell lennie egy parancs előtt – ez még abból ered, hogy a programok bevitelére szolgáló lyukkártyák pontos formázása rendkívül lényeges volt.

Szintén az érthetőséget szolgálja, hogy egy COBOL-programnak szigorúan négy fő részből kell állnia: azonosítási, környezetleíró, adatleíró és eljárási főrészből (angolul sorrendben: identification, environment, data és procedural division). Az első rész egyfajta metaleírása a programnak. A második a működési környezetet írja le (ezen változtatnak, ha más hardveren akarják futtatni a programot). Az adat részben szerepelnek a fájlok és változók, az utolsó pedig a tényleges programkódot tartalmazza.

COBOL - Bluebird blog

Miért él még mindig a COBOL?

Sok hiányosságot lehet a COBOL szemére hányni. Hogy mégis máig fennmaradt, az nem kis részben annak köszönhető, hogy amit csinál, azt viszont nagyon jól csinálja. Robert L. Glass egy 1997-es cikke szerint a COBOL-nak van négy olyan képessége, amely alkalmasabbá teszi üzleti feladatok hatékony végrehajtására, mint a mai nyelvek többsége:

  • heterogén „rekord-struktúrájú” adatok kezelése
  • decimális számtani műveletek végrehajtása
  • egyszerű riportgenerálás
  • nagy tömegű adatok elérése és kezelése.

Mi tette/teszi a COBOL-t ilyen túlélővé? Egyszerűen az, hogy a benne írt programok működnek, mégpedig jól működnek – és a vállalati informatikában nem szeretik piszkálni azt, ami jól működik. Azon túl, hogy a COBOL-ban írt programok kiválóan teszik azt, amire kitalálták őket, a fennmaradás másik záloga, hogy ezek a szoftverek óriásiak – kiváltásuk, lecserélésük, újraírásuk akkora feladatot jelent, amibe nem szívesen vág bele egyetlen vállalat sem (hiszen ha működik, akkor ne piszkáljuk!).

COBOL napjainkban

Érdekes kettősség jellemzi a COBOL mai világát. A programozási nyelveket rangsoroló Tiobe indexnek csak a 25. helyén állt e sorok írásakor, még a Fortran is megelőzte. (Ha valaki nem akar kattintani: az első három helyen a C, a Java és a Python áll.) Egy felmérés szerint már 2013-ban sem tanították az egyetemek 70 százalékán, a COBOL-programozók átlagos életkora pedig 55 év.

Ugyanakkor még ma is évente mintegy 220 milliárd sornyi kód fut COBOL-ban, és ahogy láttuk, ezek a szoftverek kulcsfontosságú feladatokat látnak el. Ez pedig azt jelenti, hogy a következő években fiatalabb fejlesztőkre is szükség lesz, akik nem csak karbantartani képesek ezeket a szoftvereket, hanem alkalomadtán migrálni is tudják őket újabb rendszerekre.

AS/400, IBM Mainframe és az RPG

A COBOL és a COBOL-ban írt programok szívóssága is hozzájárult ahhoz, hogy bizonyos számítógéparchitektúrák is túléljék az informatikára oly jellemző forradalmi változásokat. A két legkézenfekvőbb példa a programnyelv születésénél is bábáskodó IBM két platformja: a mainframe és az AS/400.

IBM Mainframe

Az első „igazi” IBM mainframe az 1964-ben megjelent System/360 volt, amely egyesítette magában a korábban külön modellsorozatként elérhető tudományos és általános célú számítógépek képességeit, például a decimális és a lebegőpontos műveleteket. Hardveres memóriavédelem zárta el az operációs rendszert a futtatott programoktól, a programokat pedig egymástól, így az egyikben felmerülő hiba nem érintette a másikat. A számos fejlődési fázison átment rendszert ma már Z sorozatként emlegeti az IBM, és a hagyományos z/OS, z/VM és egyebek mellett Linux operációs rendszerrel is elérhető. És lám, mi történik? A világ legnagyobb Oracle adatbázisa és SAP rendszere is egy-egy Linuxos mainframe-en fut.

És hogy miért? Mert bizonyos esetekben egyetlen méregdrága mainframe jobban megéri, mint egy csomó olcsó x86-os szerver. Egyetlen nagygép több tucat többprocesszoros x86-os szerver feladatát tudja ellátni, jóval kisebb helyen, jóval kisebb áram- és hűtésigénnyel. A mainframe-es architektúra egyik lényege ugyanis az, hogy a különféle feladatokra külön processzorokat alkalmaz. Egy szokásos PC-szerveren az operációs rendszertől kezdve az alkalmazáson át a merevlemez-kezelésig minden feladatot a CPU lát el. A mainframe-ben, amikor az alkalmazást futtató processzor azt látja, hogy a programnak I/O-műveletre vagy lebegőpontos számításra van szüksége, elküldi a feladatot a megfelelő processzornak. Egyetlen mainframe-ben akár több száz, különböző célokra használt processzor is lehet.

A hardver is magán viseli annak a korszaknak a jegyeit, amikor a számítógépeket még mérnököknek tervezték mérnökök. A felépítése önmagában is robosztus és redundáns – egy működő mainframe-ből ki lehet húzni az alaplapot, és úgy megy tovább, mintha mi sem történt volna. Egy merevlemez meghibásodása meg sem kottyan neki. Azt is feljegyezték, hogy egy erős földrengés során az egyik japán adatközpont összes x86-osa tönkrement – az ott lévő egyetlen mainframe az oldalára borult, de tovább működött.

AS/400

A régi iskola másik, máig élő képviselője az 1998-ban bemutatott AS/400. Az AS az Application System rövidítése, ma, többszöri átnevezés után System i néven szerepel az IBM kínálatában. Számos különlegessége közük az egyik, hogy ennek volt elsőként objektumorientált operációs rendszere (az OS/400). A gépben csak az objektum neve és típusa alapján történik hivatkozás. A címzést a gép belső eljárásai végzik, a programozónak vagy a felhasználónak nincs vele dolga.
Egy másik érdekessége, hogy beépítve tartalmazza a DB2 adatbázis-kezelőt. A DB2 központi szerepe megmutatkozik a rekordorientált működésben is. Itt nem foglalkozik minden billentyűzet-leütéssel a rendszer: megvárja, amíg a felhasználó kitölti a teljes rekordot és nyom egy entert, akkor egyszerre feldolgozza az egészet. Ebből következik, hogy sokkal kisebb erőforrások felhasználásával tudott bizonyos, elsősorban tranzakciós feladatokat végrehajtani, mint a kor másik vállalati használatra szánt IBM rendszere, a Unix-ot futtató RS/6000. Nem véletlenül tett szert akkora népszerűségre a pénzügyi szektorban, hogy nemegyszer csak „könyvelőgépnek” emlegették.

IBM AS/400 - Bluebird blog

image source: https://www.cnxcorp.com/blog/wild-evolution-as400-ibm-i

AS/400 hardver

A mainframehez hasonlóan az AS/400 hardvere is hierarchikusan épül fel. A tényleges számításokat végző fő processzor mellett számtalan más processzor végzi a kiegészítő feladatokat, például a perifériakezelést. A strife-olásnak nevezett technológia révén a rendszer teljesítményét újabb és újabb merevlemezek hozzáadásával is lehet növelni. További jellegzetessége az AS/400-nak a single-level storage: a háttértárat és a memóriát egységként címzi meg, és az operációs rendszer maga gondoskodik arról, hogy az adatbázis mely elemei vannak a memóriában és melyek a merevlemezeken. Ez egyszerre lehet előny és hátrány is. Annyiban előny, hogy a memória mérete nem szab határt a program futásának. Annyiban viszont hátrány, hogy a számítógép hirtelen leállása esetén inkonzisztens lesz a rendszer – ennek kiküszöbölésére akkumulátorokat építettek a memória mellé.

A biztonság az AS/400 egyik erőssége

Az AS/400 máig tartó népszerűségének fontos eleme a biztonság is. Ha nem a sztenderd procedúrán keresztül próbálnak egy objektumot módosítani, a benne lévő hardverbit „leesik”. Ez annyit tesz, hogy az objektumot többé nem lehet pointernek használni, csak adatnak, miáltal a hackerek nem tudnak például túlcsordulásos támadást indítani. Egy AS/400-ba illetéktelenül bejutni tulajdonképpen csak a fő adminjelszó megszerzésével lehet.

Értékállóság

Nagy gondot fordított az IBM a megírt programok értékállóságára is. Ezt szolgálja például a TIMI-nek (Technology Independent Machine Interface) nevezett virtuális utasításkészlet, és az, hogy a fordító program két lépésben fordítja gépi nyelvre a forráskódot. Az első, átmeneti kód a pszeudo-kód, amit az AS/400 a végső programobjektumban is megtart. Ha a későbbiekben architektúra vagy címzésváltozást érzékel a gép, akkor a program első futtatása alkalmával menet közben újrafordítja a modult. Ennek köszönhetően a nagyon régen megírt kód is változtatás nélkül futhat az újabb rendszereken is, nem kell újrafordítani a programot, vagy pláne belepiszkálni a forráskódba – nem csoda hát, hogy évtizedekkel ezelőtt megírt szoftverek futnak még számos helyen.

Jól mutatja az előrelátást, hogy az utasításkészlet szerint minden pointer 128 bites, pedig az eredeti változatok 48 bites processzort és címezhető területet használtak, a mostaniak pedig a 64 bites PowerPC processzort. Ha a jövőben megjelenik egy általános célú 128 bites processzor, a Series i készen fog állni rá.

Az AS/400 fejlesztése

Az évek során persze komoly fejlődésen ment át az AS/400 szoftvere és hardvere is. Az operációs rendszere lehet a saját IBM i mellett AIX vagy Linux, sőt, belső blade szervereken Windows 2000-et és Windows Server 2003-at is futtathat. Az IBM i, a Linux és az AIX akár egyszerre is futtatható a gépen, az LPAR-nak nevezett logikai particionálás mellett. Az operációs rendszerbe gyakorlatilag minden, a rendszer működtetéshez és menedzseléséhez szükséges szoftver be van építve, az adatbázis-kezelőtől a webszerverig. Így, bár az ára meglehetősen borsos, számos olyan költséggel nem kell számolni, ami más rendszereknél jellemzően felmerül. Bár alapvetően terminálos elérésre tervezték, támogatja a kliens-szerver működést, az adatbázisa elérhető Javában, .NET-ben vagy más nyelveken írt programokból.

A folyamatos fejlődés lehetővé tette, hogy az évtizedekkel korábban megírt programok ma is használhatóak legyenek a platformon. A bankszektor különös előszeretettel választotta az AS/400-at, mert az integrált core banki rendszerek fejlesztése idején (az 1990-es évek első felében) ez volt a legmegbízhatóbb, legbiztonságosabb és legnagyobb teljesítményű számítógép, persze a sokkal drágább mainframe-eket leszámítva. Nem egy hazai bank továbbra is ezen futtatja számlavezető rendszerét, de arra is van példa, hogy miközben a számlavezetést már más rendszeren oldják meg, a kártyatranzakciók feldolgozása továbbra is AS/400-on megy. Szintén népszerű a kiskereskedelmi hálózatok körében – van olyan magyar áruházlánc, amely az összes egységének az adatait egyetlen iSeries gépen dolgozza fel, máshol meg kifejezetten adatbázis-szervernek használják, mert sebességben egyetlen más rendszer sem ért fel vele.

A korábban százszámra működő AS/400-ok száma nem is feltétlenül azért csökken, mert más platformra viszik át az alkalmazást. A hardverek erősödése ezen a téren is lehetővé tette a konszolidációt – amíg korábban több tucat gép szolgálta ki az igényeket, most ugyanazt a feladatot egyetlen központi rendszer is el tudja látni, akár egy másik országból is.

RPG - Az ismeretlen kistestvér

Ha a COBOL mára obskúrus programozási nyelvnek számít, mit mondjunk az RPG-ről, amely az említett Tiobe indexen nincs benn az első ötvenben? Az RPG (Report Program Generator) egy IBM által kifejlesztett programozási nyelv – érdekes módon ugyanúgy 1959-ben született meg, mint a COBOL. Eleinte mainframe programozásra használták, de később a COBOL és a PL/I magas szintű megfelelőjévé, és az AS/400 „külön bejáratú” programozási nyelvévé vált. (Magát az OS/400-at is RPG-vel írtak eredetileg, később dolgozták át a C++ felhasználásával.) Születésekor a lyukkártyák kiváltására tervezték, és ebből adódóan máig megőrizte azt a jellemzőjét, hogy kötött pozíciójú nyelv, azaz szigorúan meg van határozva, hogy mit pontosan hova (sortípus, oszlop) írhatunk.

Az AS/400-hoz először az RPG III-at használták, de az RPG IV lett az AS/400-ok igaz natív fejlesztési nyelve, amit beépítve tartalmazott az operációs rendszer. Az RPG IV számos újdonságot tartalmazott: hosszabb mezőneveket, forráskód szintű hibakeresést, új adattípusokat (lebegőpontos, Boolean, pointerek), beépített funkciókat és ILE-kompatibilitást. Ahogy az AS/400 minden eleme az üzleti alkalmazások minél hatékonyabb kiszolgálását célozta, nem volt kivétel az RPG sem. Ahogy a neve is mutatja, nem általános célú nyelv, hanem kimondottan adatbázis-kezelési feladatok rendkívül hatékony és biztonságos végrehajtására szolgál, bár írtak komplett banki tranzakció-kezelő rendszert is RPG-ben.


Ha COBOL, AS/400 vagy RPG szakértőre van szükséged, kérd ajánlatunkat!

Ha a blogbejegyzéseinkről mindig elsőként akarsz értesülni, kövess minket LinkedInen és Facebookon is!