COBOL -COBOL
Paradigma | Procedurální , imperativní , objektově orientovaný , generický |
---|---|
Navrhl | Howard Bromberg , Norman Discount , Vernon Reeves , Jean E. Sammet , William Selden , Gertrude Tierney , s nepřímým vlivem Grace Hopper |
Vývojáři | CODASYL , ANSI , ISO / IEC |
Poprvé se objevil | 1959 |
Stabilní uvolnění | ISO/IEC 1989:2023/2023 |
Disciplína psaní | Slabé , statické |
Přípony názvů souborů |
.cbl , .cob ,.cpy
|
Hlavní implementace | |
GnuCOBOL , IBM COBOL , Micro Focus Visual COBOL | |
Dialekty | |
COBOL/2, DEC COBOL-10, DEC PDP-11 COBOL, DEC PDP-11 COBOL-85, DEC VAX COBOL, DOSVS COBOL, Envyr ICOBOL, Fujitsu COBOL, Hitachi COBOL2002, HP3000 COBOL/II, IBM COBOL /400, IBM COBOL/II, IBM Enterprise COBOL, IBM ILE COBOL, IBM OS/VS COBOL, ICL COBOL (VME), Micro Focus ACUCOBOL-GT, Micro Focus COBOL-IT, Micro Focus RM/COBOL, Micro Focus Visual COBOL , Microsoft COBOL, Raincode COBOL, Realia COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, Tandem (NonStop) COBOL, Tandem (NonStop) SCOBOL, UNIVAC COBOL, Unisys MCP COBOL74, Unisys, Unisys MCP COBOL85 /Otevřít, Veryant isCOBOL, Wang VS COBOL | |
Ovlivněno | |
Původní: AIMACO , COMTRAN , FACT , FLOW-MATIC
COBOL 2002: C++ , Eiffel , Smalltalk | |
Ovlivnil | |
CobolScript , EGL , PL/I , PL/B | |
|
COBOL ( / ˈ k oʊ b ɒ l , - b ɔː l / ; zkratka pro „common business-oriented language“) je kompilovaný počítačový programovací jazyk podobný angličtině určený pro obchodní použití. Je to imperativní , procedurální a od roku 2002 objektově orientovaný jazyk. COBOL se primárně používá v obchodních, finančních a administrativních systémech pro společnosti a vlády. COBOL je stále široce používán v aplikacích nasazených na sálových počítačích , jako jsou rozsáhlé dávkové a transakční úlohy. Kvůli jeho klesající oblibě a odchodu zkušených programátorů COBOL do důchodu jsou však programy migrovány na nové platformy, přepisovány do moderních jazyků nebo nahrazovány softwarovými balíčky. Většina programování v COBOL je nyní čistě pro údržbu existujících aplikací; nicméně, mnoho velkých finančních institucí stále vyvíjelo nové systémy v COBOL až do roku 2006.
COBOL byl navržen v roce 1959 společností CODASYL a byl částečně založen na programovacím jazyce FLOW-MATIC navrženém Grace Hopper . Byl vytvořen jako součást úsilí ministerstva obrany USA vytvořit přenosný programovací jazyk pro zpracování dat. Původně byl považován za provizorní, ale ministerstvo obrany okamžitě přinutilo výrobce počítačů, aby jej poskytli, což vedlo k jeho širokému přijetí. Byl standardizován v roce 1968 a od té doby byl čtyřikrát revidován. Rozšíření zahrnují podporu pro strukturované a objektově orientované programování . Současný standard je ISO / IEC 1989:2014 .
Příkazy COBOL mají syntaxi podobnou angličtině, která byla navržena tak, aby byla samodokumentující a vysoce čitelná. Je však podrobný a používá více než 300 vyhrazených slov . Na rozdíl od moderní, stručné syntaxe jako , COBOL má syntaxi více podobnou angličtině (v tomto případě ).
y = x;
MOVE x TO y
Kód COBOL je rozdělen do čtyř divizí (identifikace, prostředí, data a procedura), které obsahují pevnou hierarchii oddílů, odstavců a vět. Protože chybí velká standardní knihovna , standard specifikuje 43 příkazů, 87 funkcí a pouze jednu třídu.
Akademičtí informatici se obecně nezajímali o obchodní aplikace, když byl COBOL vytvořen, a nepodíleli se na jeho návrhu; byl (efektivně) od základu navržen jako počítačový jazyk pro podnikání s důrazem na vstupy a výstupy, jejichž jedinými datovými typy byly čísla a řetězce textu.
COBOL byl po celou dobu své existence kritizován za svou výřečnost, proces návrhu a špatnou podporu pro strukturované programování . Tyto slabiny vedou k monolitickým, podrobným (zamýšleným jako v angličtině) programům, které nejsou snadno srozumitelné.
Po léta byl COBOL považován za programovací jazyk pro obchodní operace na sálových počítačích, i když v posledních letech vzrostl zájem o migraci operací COBOL na cloud computing .
Historie a specifikace
Pozadí
Koncem 50. let se uživatelé a výrobci počítačů začali obávat rostoucích nákladů na programování. Průzkum z roku 1959 zjistil, že v jakékoli instalaci zpracování dat stálo programování v průměru 800 000 USD a že překlad programů pro běh na novém hardwaru by stál 600 000 USD. V době, kdy se nové programovací jazyky množily stále větším tempem, stejný průzkum naznačil, že pokud by byl použit běžný obchodně orientovaný jazyk, konverze by byla mnohem levnější a rychlejší.
8. dubna 1959 Mary K. Hawesová , počítačová vědkyně z Burroughs Corporation , svolala setkání zástupců akademické obce, uživatelů počítačů a výrobců na University of Pennsylvania , aby zorganizovali formální setkání o společných obchodních jazycích. Mezi zástupci patřili Grace Hopper (vynálezce anglického jazyka pro zpracování dat FLOW-MATIC ), Jean Sammet a Saul Gorn .
Na dubnovém setkání skupina požádala ministerstvo obrany (DoD), aby podpořilo snahu o vytvoření společného obchodního jazyka. Delegace zapůsobila na Charlese A. Phillipse, ředitele výzkumného týmu datových systémů na ministerstvu obrany, který si myslel, že „důkladně rozumí“ problémům ministerstva obrany. Ministerstvo obrany provozovalo 225 počítačů, objednalo dalších 175 a utratilo přes 200 milionů dolarů na implementaci programů, které na nich běžely. Přenosné programy by ušetřily čas, snížily náklady a usnadnily modernizaci.
Charles Phillips souhlasil, že bude schůzku sponzorovat, a pověřil delegaci vypracováním agendy.
COBOL 60
Ve dnech 28. a 29. května 1959 (přesně rok po schůzce ALGOL 58 v Curychu ) se v Pentagonu konalo jednání o vytvoření společného programovacího jazyka pro podnikání. Zúčastnilo se ho 41 lidí a předsedal mu Phillips. Ministerstvo obrany se obávalo, zda může provozovat stejné programy pro zpracování dat na různých počítačích. FORTRAN , jediný mainstreamový jazyk v té době, postrádal funkce potřebné k psaní takových programů.
Zástupci nadšeně popisovali jazyk, který by mohl fungovat v nejrůznějších prostředích, od bankovnictví a pojišťovnictví až po veřejné služby a řízení zásob. Jednomyslně se shodli, že více lidí by mělo umět programovat a že nový jazyk by neměl být omezován omezeními současné technologie. Většina se shodla na tom, že jazyk by měl maximálně využívat angličtinu, měl by být schopen změn, být nezávislý na stroji a měl by být snadno použitelný, a to i na úkor síly.
Výsledkem jednání bylo vytvoření řídícího výboru a výborů krátkého, středního a dlouhého dosahu. Krátkodobý výbor dostal do září (tři měsíce), aby vypracoval specifikace pro prozatímní jazyk, který by pak ostatní výbory vylepšily. Jejich oficiálním posláním však bylo identifikovat silné a slabé stránky existujících programovacích jazyků a výslovně je nenasměrovalo k vytvoření nového jazyka.
Výbor krátkého dosahu termín dodržel s nedůvěrou. Jedna členka, Betty Holberton , popsala tříměsíční lhůtu jako „hrubý optimismus“ a pochybovala, že by tento jazyk byl skutečně brzdou.
Řídící výbor se sešel 4. června a dohodl se na pojmenování celé činnosti jako Výbor pro jazyky datových systémů neboli CODASYL a na vytvoření výkonného výboru.
Členové výboru pro krátké dosahy zastupovali šest výrobců počítačů a tři vládní agentury. Výrobci počítačů byli Burroughs Corporation , IBM , Minneapolis-Honeywell (Honeywell Labs), RCA , Sperry Rand a Sylvania Electric Products . Vládními agenturami byly americké letectvo , námořnictvo David Taylor Model Basin a National Bureau of Standards (nyní National Institute of Standards and Technology). Výboru předsedal Joseph Wegstein z amerického Národního úřadu pro standardy. Práce začala zkoumáním popisu dat, prohlášení, existujících aplikací a uživatelských zkušeností.
Komise zkoumala především programovací jazyky FLOW-MATIC , AIMACO a COMTRAN . Jazyk FLOW-MATIC byl zvláště vlivný, protože byl implementován a protože AIMACO bylo jeho derivátem s pouze malými změnami. Vynálezkyně společnosti FLOW-MATIC, Grace Hopperová, také sloužila jako technický poradce výboru. Hlavním přínosem FLOW-MATIC pro COBOL byly dlouhé názvy proměnných, anglická slova pro příkazy a oddělení popisů dat a instrukcí.
Hopper je někdy označován jako „matka COBOL“ nebo „babička COBOL“, ačkoli Jean Sammet , hlavní návrhář COBOL, uvedl, že Hopper „nebyl matkou, tvůrcem nebo vývojář Cobol“.
Jazyk COMTRAN od IBM, vynalezený Bobem Bemerem , byl krátkou komisí složenou z kolegů Grace Hopperové považován za konkurenta FLOW-MATIC. Některé z jeho funkcí nebyly začleněny do COBOL, aby to nevypadalo, že IBM ovládla proces návrhu, a Jean Sammet v roce 1981 řekla, že někteří členové výboru (včetně ní) byli „silně zaujatí proti IBM“. V jednom případě poté, co se Roy Goldfinger, autor příručky COMTRAN a člen výboru pro střední dosah, zúčastnil schůze podvýboru na podporu svého jazyka a povzbuzení k používání algebraických výrazů, Grace Hopperová zaslala výboru krátkého dosahu poznámku, v níž zopakovala Sperryho Randa. úsilí o vytvoření jazyka založeného na angličtině.
V roce 1980 Grace Hopper poznamenala, že „COBOL 60 je z 95 % FLOW-MATIC“ a že COMTRAN měl „extrémně malý“ vliv. Dále řekla, že bude tvrdit, že práce byla ovlivněna jak FLOW-MATIC, tak COMTRAN, jen aby „udrželi ostatní lidi šťastnými [aby] se nás nepokoušeli vyřadit“.
Funkce od COMTRAN začleněné do COBOL zahrnovaly vzorce, PICTURE
klauzuli , vylepšené IF
prohlášení, které odstranilo potřebu GO TO , a robustnější systém správy souborů.
Užitečnost práce výboru byla předmětem velké diskuse. Zatímco někteří členové si mysleli, že jazyk má příliš mnoho kompromisů a byl výsledkem návrhu komise , jiní se domnívali, že je lepší než tři zkoumané jazyky. Někteří měli pocit, že jazyk je příliš složitý; ostatní příliš jednoduché.
Kontroverzní funkce zahrnovaly ty, které byly pro uživatele zpracování dat považovány za zbytečné nebo příliš pokročilé. Mezi tyto vlastnosti patřily booleovské výrazy , vzorce a indexy tabulek . Dalším bodem sporu bylo, zda klíčová slova dávat do kontextu a jaký vliv by to mělo na čitelnost. Přestože byla kontextově citlivá klíčová slova odmítnuta, tento přístup byl později použit v PL/I a částečně v COBOL od roku 2002. Málo se zohledňovala interaktivita , interakce s operačními systémy (v té době existovalo jen málo) a funkce (myšleno jako čistě matematické a nepoužitelné při zpracování údajů).
Specifikace byly představeny výkonnému výboru dne 4. září. Zaostali za očekáváním: Joseph Wegstein poznamenal, že „obsahuje drsná místa a vyžaduje nějaké doplňky“, a Bob Bemer je později popsal jako „hodgepodge“. Podvýbor dostal do prosince, aby to zlepšil.
Na schůzi v polovině září výbor projednal název nového jazyka. Návrhy zahrnovaly „BUSY“ (Business System), „INFOSYL“ (Jazyk informačního systému) a „COCOSYL“ (Common Computer Systems Language). Není jasné, kdo vymyslel název „COBOL“, ačkoli Bob Bemer později tvrdil, že to byl jeho návrh.
V říjnu obdržela komise střední třídy kopie jazykové specifikace FACT vytvořené Royem Nuttem . Jeho vlastnosti zapůsobily na výbor natolik, že přijali usnesení, že na něm COBOL založí.
To byla rána pro komisi krátkého dosahu, která ve specifikaci značně pokročila. Přestože byl FACT technicky lepší, nebyl vytvořen s ohledem na přenositelnost nebo na základě konsensu výrobců a uživatelů. Chyběla mu také prokazatelná implementace, která umožňovala příznivcům COBOL založeného na FLOW-MATIC zvrátit usnesení. Zástupce RCA Howard Bromberg také zablokoval FACT, aby práce RCA na implementaci COBOL nepřišla vniveč.
Brzy se ukázalo, že výbor je příliš velký na to, aby bylo možné rychle dosáhnout dalšího pokroku. Frustrovaný Howard Bromberg koupil náhrobek za 15 dolarů s vyrytým „COBOL“ a poslal jej Charlesi Phillipsovi, aby dal najevo svou nelibost.
Byl vytvořen podvýbor pro analýzu existujících jazyků a skládal se ze šesti jednotlivců:
- William Selden a Gertrude Tierney z IBM,
- Howard Bromberg a Howard Discount of RCA,
- Vernon Reeves a Jean E. Sammet ze společnosti Sylvania Electric Products.
Podvýbor odvedl většinu práce při vytváření specifikace a ponechal komisi krátkého dosahu, aby přezkoumala a upravila svou práci před vytvořením hotové specifikace.
Specifikace byly schváleny výkonným výborem 8. ledna 1960 a zaslány vládní tiskárně, která je vytiskla jako COBOL 60 . Stanoveným cílem jazyka bylo umožnit snadné psaní efektivních přenosných programů, umožnit uživatelům přejít na nové systémy s minimálním úsilím a náklady a být vhodný pro nezkušené programátory.
Výkonný výbor CODASYL později vytvořil Výbor údržby COBOL, aby odpovídal na otázky uživatelů a prodejců a zlepšoval a rozšiřoval specifikace.
Během roku 1960 se seznam výrobců, kteří plánovali postavit kompilátory COBOL, rozrostl. Do září se k CODASYL připojilo dalších pět výrobců ( Bendix , Control Data Corporation , General Electric (GE), National Cash Register a Philco ) a všichni zastoupení výrobci oznámili kompilátory COBOL. GE a IBM plánovaly integrovat COBOL do svých vlastních jazyků GECOM a COMTRAN. Naproti tomu International Computers and Tabulators plánovaly nahradit svůj jazyk CODEL jazykem COBOL.
Mezitím RCA a Sperry Rand pracovali na vytvoření kompilátorů COBOL. První program COBOL běžel 17. srpna na RCA 501. Ve dnech 6. a 7. prosince běžel stejný program COBOL (i když s menšími změnami) na počítači RCA a počítači Remington-Rand Univac, což prokázalo, že lze dosáhnout kompatibility .
Relativní vliv toho, které jazyky byly použity, pokračuje dodnes v doporučených radách vytištěných ve všech referenčních příručkách COBOL:
COBOL je oborový jazyk a není majetkem žádné společnosti nebo skupiny společností ani žádné organizace nebo skupiny organizací.
Žádný přispěvatel ani výbor CODASYL COBOL neposkytuje žádnou záruku, vyjádřenou ani předpokládanou, na přesnost a fungování programovacího systému a jazyka. Navíc žádný přispěvatel ani výbor v souvislosti s tím nenesou žádnou odpovědnost. Autoři a držitelé autorských práv zde použitého materiálu chráněného autorským právem jsou následující:
- FLOW-MATIC (ochranná známka Unisys Corporation ), Programování pro UNIVAC (R) I a II, Data Automation Systems, chráněná autorským právem 1958, 1959, Unisys Corporation; IBM Commercial Translator Form č. F28-8013, chráněný autorským právem IBM z roku 1959; FACT, DSI 27A5260-2760, chráněné autorským právem 1960 společností Minneapolis-Honeywell.
Výslovně povolili použití tohoto materiálu, zcela nebo zčásti, ve specifikacích COBOL. Toto oprávnění se vztahuje na reprodukci a použití specifikací COBOL v programovacích příručkách nebo podobných publikacích.
COBOL-61 až COBOL-65
Je spíše nepravděpodobné, že by se Cobol objevil do konce dekády.
Anonymní, červen 1960
V COBOL 60 bylo nalezeno mnoho logických nedostatků , což vedlo Charlese Katze z General Electric k varování, že jej nelze interpretovat jednoznačně. Neochotný krátkodobý výbor nařídil totální vyčištění a v březnu 1963 bylo oznámeno, že syntaxe COBOLu byla stejně definovatelná jako syntaxe ALGOL , ačkoli sémantické nejasnosti zůstaly.
COBOL je složitý jazyk pro psaní kompilátoru kvůli velké syntaxi a mnoha volitelným prvkům v syntaktických konstrukcích a také kvůli potřebě generovat účinný kód pro jazyk s mnoha možnými reprezentacemi dat, implicitními převody typů a nezbytnými sadami. ups pro I/O operace. Rané kompilátory COBOL byly primitivní a pomalé. Hodnocení amerického námořnictva z roku 1962 zjistilo rychlost kompilace 3–11 příkazů za minutu. Do poloviny roku 1964 se zvýšily na 11–1000 výpisů za minutu. Bylo pozorováno, že zvýšení paměti by drasticky zvýšilo rychlost a že náklady na kompilaci se divoce lišily: náklady na výpis byly mezi 0,23 a 18,91 dolary.
Koncem roku 1962 IBM oznámilo, že COBOL bude jejich primárním vývojovým jazykem a že vývoj COMTRAN bude ukončen.
Specifikace COBOL byla během pěti let po zveřejnění třikrát revidována. COBOL-60 byl nahrazen v roce 1961 COBOL-61. To bylo poté nahrazeno specifikacemi COBOL-61 Extended v roce 1963, které zavedly zařízení pro třídění a zápis zpráv. Přidaná zařízení opravila nedostatky zjištěné společností Honeywell koncem roku 1959 v dopise výboru krátkého dosahu. COBOL Edition 1965 přinesl další objasnění specifikací a zavedl zařízení pro manipulaci se soubory a tabulkami velkokapacitního úložiště .
COBOL-68
Začalo se úsilí o standardizaci COBOLu, aby se překonaly nekompatibility mezi verzemi. Koncem roku 1962, jak ISO, tak United States of America Standards Institute (nyní ANSI ) vytvořily skupiny pro vytvoření norem. ANSI vyrobila USA Standard COBOL X3.23 v srpnu 1968, který se stal základním kamenem pro pozdější verze. Tato verze byla známá jako American National Standard (ANS) COBOL a byla přijata ISO v roce 1972.
COBOL-74
V roce 1970 se COBOL stal nejrozšířenějším programovacím jazykem na světě.
Nezávisle na výboru ANSI pracoval výbor pro programovací jazyk CODASYL na vylepšení jazyka. Popsali nové verze v letech 1968, 1969, 1970 a 1973, včetně změn, jako je nová meziprogramová komunikace, ladění a slučování souborů, jakož i vylepšené zpracování řetězců a funkce začlenění do knihovny .
Přestože byl CODASYL nezávislý na výboru ANSI, ANSI používal časopis CODASYL Journal of Development k identifikaci funkcí, které byly dostatečně populární, aby zaručovaly implementaci. Výbor pro programovací jazyk také spolupracoval s ECMA a japonským výborem COBOL Standard.
Výbor pro programovací jazyk však nebyl příliš známý. Viceprezident William Rinehuls si stěžoval, že dvě třetiny komunity COBOL nevěděly o existenci výboru. Chyběly jí také finanční prostředky na to, aby byly volně dostupné veřejné dokumenty, jako jsou zápisy z jednání a návrhy změn.
V roce 1974 ANSI zveřejnila revidovanou verzi (ANS) COBOL, která obsahuje nové funkce, jako jsou organizace souborů , DELETE
příkazy a segmentační modul. Odstraněné funkce zahrnovaly NOTE
příkaz, EXAMINE
příkaz (který byl nahrazen INSPECT
) a implementátorem definovaný modul náhodného přístupu (který byl nahrazen novými sekvenční a relativní I/O moduly). Ty tvořily 44 změn, které učinily stávající prohlášení nekompatibilní s novým standardem. Zapisovatel zpráv měl být odstraněn z COBOL, ale byl obnoven před publikováním standardu. ISO později přijala aktualizovaný standard v roce 1978.
COBOL-85
V červnu 1978 byly zahájeny práce na revizi COBOL-74. Navrhovaný standard (běžně nazývaný COBOL-80) se výrazně lišil od předchozího, což vyvolalo obavy z nekompatibility a nákladů na konverzi. V lednu 1981 Joseph T. Brophy, Senior Vice-President Travelers Insurance, pohrozil žalobou na standardní komisi, protože nebyla směrem nahoru kompatibilní s COBOL-74. Pan Brophy popsal předchozí konverze jejich 40milionové kódové základny jako „neproduktivní“ a „naprosté plýtvání zdroji našich programátorů“. Později téhož roku Asociace pro zpracování dat (DPMA) uvedla, že je „důrazně proti“ novému standardu, přičemž uvedla „zakázané“ náklady na konverzi a vylepšení, která byla „vynucena uživateli“.
Během prvního období veřejné kontroly obdržela komise 2 200 odpovědí, z toho 1 700 negativních formulářů. Dalšími odpověďmi byly podrobné analýzy vlivu COBOL-80 na jejich systémy; náklady na konverzi byly předpovězeny na minimálně 50 centů na řádek kódu. Méně než tucet odpovědí bylo ve prospěch navrhované normy.
ISO TC97-SC5 instalovala v roce 1979 mezinárodní skupina COBOL Experts Group z iniciativy Wima Ebbinkhuijsena . Skupina se skládala z odborníků COBOL z mnoha zemí, včetně Spojených států. Jeho cílem bylo dosáhnout vzájemného porozumění a respektu mezi ANSI a zbytkem světa s ohledem na potřebu nových funkcí COBOL. Po třech letech změnila ISO status skupiny na formální pracovní skupinu: WG 4 COBOL . Skupina převzala primární vlastnictví a vývoj standardu COBOL, kde ANSI učinila většinu návrhů.
V roce 1983 stáhl DPMA svůj nesouhlas s normou s odvoláním na vstřícnost výboru k obavám veřejnosti. Ve stejném roce dospěla studie National Bureau of Standards k závěru, že navrhovaná norma by představovala jen málo problémů. O rok později vydal DEC VAX/VMS COBOL-80 a poznamenal, že konverze programů COBOL-74 představovala jen málo problémů. Nové EVALUATE
prohlášení a inline PERFORM
byly obzvláště dobře přijaty a zlepšily produktivitu díky zjednodušenému toku řízení a ladění .
Druhá veřejná kontrola přinesla dalších 1 000 (zejména negativních) odpovědí, zatímco poslední jen 25, a do té doby bylo mnoho obav vyřešeno.
V roce 1985 přijala pracovní skupina ISO 4 tehdejší verzi navrhované normy ANSI, provedla několik změn a stanovila ji jako novou normu ISO COBOL 85. Byla zveřejněna koncem roku 1985.
Šedesát funkcí bylo změněno nebo zastaralé a 115 bylo přidáno, například:
- Terminátory rozsahu (
END-IF
,END-PERFORM
,END-READ
atd.) - Vnořené podprogramy
-
CONTINUE
, prohlášení o neprovedení operace -
EVALUATE
, příkaz switch -
INITIALIZE
, příkaz, který může nastavit skupiny dat na jejich výchozí hodnoty - Inline
PERFORM
smyčková těla – dříve musela být těla smyček specifikována v samostatné proceduře - Úprava reference, která umožňuje přístup k podřetězcům
- I/O stavové kódy.
Nová norma byla přijata všemi národními normalizačními orgány, včetně ANSI.
V roce 1989 a 1993 následovaly dva dodatky, z nichž první zaváděl vnitřní funkce a druhý poskytoval opravy.
COBOL 2002 a objektově orientovaný COBOL
V roce 1997 Gartner Group odhadovala, že existuje celkem 200 miliard linek COBOL, které provozovaly 80 % všech obchodních programů.
Počátkem 90. let začaly práce na přidání objektově orientace v další úplné revizi COBOL. Objektově orientované funkce byly převzaty z C++ a Smalltalk .
Původní odhad měl mít tuto revizi dokončenou do roku 1997 a návrh komise ISO (CD) byl k dispozici do roku 1997. Někteří prodejci (včetně Micro Focus , Fujitsu a IBM ) zavedli objektově orientovanou syntaxi založenou na návrhech úplné revize. Konečná schválená norma ISO byla schválena a zveřejněna koncem roku 2002.
Fujitsu/GTSoftware, Micro Focus a RainCode představily objektově orientované kompilátory COBOL zaměřené na .NET Framework .
Objevilo se mnoho dalších nových funkcí, z nichž mnohé byly v CODASYL COBOL Journal of Development od roku 1978 a propásly příležitost být zahrnuty do COBOL-85. Tyto další funkce zahrnovaly:
- Volný kód
- Uživatelsky definované funkce
- Rekurze
- Zpracování založené na národním prostředí
- Podpora rozšířených znakových sad, jako je Unicode
- Datové typy s pohyblivou řádovou čárkou a binární datové typy (do té doby byly binární položky zkráceny na základě specifikace jejich deklarace base-10 )
- Přenosné aritmetické výsledky
- Bitové a booleovské datové typy
- Ukazatele a syntaxe pro získání a uvolnění úložiště
- Pro textová uživatelská
SCREEN SECTION
rozhraní - Zařízení
VALIDATE
_ - Vylepšená interoperabilita s jinými programovacími jazyky a rámcovými prostředími, jako jsou .NET a Java .
Pro standard byly zveřejněny tři opravy : dvě v roce 2006 a jedna v roce 2009.
COBOL 2014
V letech 2003 až 2009 byly vytvořeny tři technické zprávy popisující finalizaci objektů , zpracování XML a třídy kolekce pro COBOL.
COBOL 2002 trpěl špatnou podporou: žádný kompilátor zcela nepodporoval standard. Micro Focus zjistil, že to bylo kvůli nedostatečné poptávce uživatelů po nových funkcích a kvůli zrušení testovací sady NIST , která byla použita k testování shody kompilátoru. Rovněž bylo zjištěno, že proces standardizace je pomalý a nemá dostatečné zdroje.
COBOL 2014 obsahuje následující změny:
- Přenosné aritmetické výsledky byly nahrazeny datovými typy IEEE 754
- Hlavní funkce byly volitelné, jako je
VALIDATE
zařízení, zapisovač zpráv a zařízení pro manipulaci s obrazovkou - Přetížení metody
- Tabulky dynamické kapacity (funkce vypuštěná z návrhu COBOL 2002)
Dědictví
Programy COBOL se používají globálně ve vládách a podnicích a běží na různých operačních systémech, jako jsou z/OS , z/VSE , VME , Unix , NonStop OS, OpenVMS a Windows . V roce 1997 skupina Gartner oznámila, že 80 % světového obchodu běží na COBOL s více než 200 miliardami řádků kódu a 5 miliardami dalších řádků, které se ročně napíší.
Blízko konce 20. století byl problém roku 2000 (Y2K) středem zájmu významného programovacího úsilí COBOL, někdy stejnými programátory, kteří navrhovali systémy před desetiletími. Zvláštní úroveň úsilí potřebného k opravě kódu COBOL byla přičítána velkému množství obchodně orientovaného COBOLu, protože obchodní aplikace intenzivně využívají data, a datovým polím s pevnou délkou. Některé studie připisují až „24 % nákladů na opravy softwaru Y2K společnosti Cobol“. Po úsilí o vyčištění těchto programů pro Y2K průzkum z roku 2003 zjistil, že mnohé z nich zůstaly v provozu. Autoři uvedli, že údaje z průzkumu naznačují „postupný pokles důležitosti COBOL ve vývoji aplikací během [následujících] 10 let, pokud ... nebude možné přijmout integraci s jinými jazyky a technologiemi“.
V letech 2006 a 2012 průzkumy Computerworld (352 čtenářů) zjistily, že více než 60 % organizací používá COBOL (více než C++ a Visual Basic .NET ) a že polovina z nich používá COBOL pro většinu jejich interního softwaru. 36 % manažerů uvedlo, že plánují migrovat z COBOL, a 25 % uvedlo, že by to chtěli, kdyby to bylo levnější. Místo toho některé podniky migrovaly své systémy z drahých sálových počítačů na levnější a modernější systémy, přičemž si zachovaly své programy COBOL.
Svědectví před Sněmovnou reprezentantů v roce 2016 naznačilo, že COBOL stále používá mnoho federálních agentur. Agentura Reuters v roce 2017 uvedla, že 43 % bankovních systémů stále používá COBOL s více než 220 miliardami řádků kódu COBOL.
Do roku 2019 se počet programátorů COBOL rychle zmenšoval kvůli odchodům do důchodu, což vedlo k hrozícímu nedostatku dovedností v obchodních a vládních organizacích, které stále používají systémy sálových počítačů pro zpracování velkých objemů transakcí. Snahy o přepisování systémů v novějších jazycích se ukázaly jako drahé a problematické, stejně jako outsourcing údržby kódu, a proto jsou obhajovány návrhy na zaškolení více lidí v COBOL.
Během pandemie COVID-19 a následného nárůstu nezaměstnanosti několik amerických států hlásilo nedostatek kvalifikovaných programátorů COBOL na podporu starších systémů používaných pro správu dávek v nezaměstnanosti. Mnoho z těchto systémů bylo před pandemií v procesu převodu na modernější programovací jazyky, ale tento proces byl pozastaven. Podobně i americká Internal Revenue Service přispěchala s opravou svého individuálního hlavního souboru založeného na COBOL, aby mohla vyplatit desítky milionů plateb nařízených zákonem o pomoci, pomoci a ekonomické bezpečnosti Coronavirus .
Funkce
Syntax
COBOL má syntaxi podobnou angličtině, která se používá k popisu téměř všeho v programu. Například podmínka může být vyjádřena jako nebo výstižněji jako nebo . Složitější podmínky lze „zkrátit“ odstraněním opakovaných podmínek a proměnných. Například lze zkrátit na . Pro podporu této anglické syntaxe má COBOL více než 300 klíčových slov . Některá ta klíčová slova jsou jednoduché alternativní nebo množné hláskování stejného slova, což zajišťuje více anglických prohlášení a klauzulí; např. klíčová slova a lze používat zaměnitelně, jako mohou a , a a .
x IS GREATER THAN y
x GREATER y
x > y
a > b AND a > c OR a = d
a > b AND c OR = d
IN
OF
TIME
TIMES
VALUE
VALUES
Každý program COBOL se skládá ze čtyř základních lexikálních položek : slova, literály, obrázkové řetězce znaků (viz § klauzule PICTURE ) a oddělovače. Slova zahrnují vyhrazená slova a uživatelem definované identifikátory. Jsou dlouhé až 31 znaků a mohou obsahovat písmena, číslice, pomlčky a podtržítka. Literály zahrnují číslice (např. 12
) a řetězce (např. 'Hello!'
). Mezi oddělovače patří znak mezery a čárky a středníky, za nimiž následuje mezera.
Program COBOL je rozdělen do čtyř divizí: divize identifikace, divize prostředí, divize dat a divize procedur. Identifikační divize určuje název a typ zdrojového prvku a je místem, kde jsou specifikovány třídy a rozhraní. Divize prostředí specifikuje všechny funkce programu, které závisí na systému, na kterém běží, jako jsou soubory a znakové sady . Datové dělení se používá k deklaraci proměnných a parametrů . Rozdělení procedur obsahuje příkazy programu . Každý oddíl je dále rozdělen do oddílů, které se skládají z odstavců.
Metajazyk
Syntaxe COBOLu je obvykle popsána jedinečným metajazykem pomocí složených závorek, závorek, pruhů a podtržení. Metajazyk byl vyvinut pro původní specifikace COBOL. Ačkoli forma Backus-Naur v té době existovala, komise o ní neslyšela.
Živel | Vzhled | Funkce |
---|---|---|
Všechna hlavní města | PŘÍKLAD | Vyhrazené slovo |
Podtržení | PŘÍKLAD | Vyhrazené slovo je povinné |
Rovnátka | { } | Lze vybrat pouze jednu možnost |
Závorky | [] | Může být vybrána nula nebo jedna možnost |
Elipsa | ... | Předchozí prvek se může opakovat |
Bary | {| |} | Lze vybrat jednu nebo více možností. Jakákoli možnost může být vybrána pouze jednou. |
[| |] | Lze vybrat nula nebo více možností. Jakákoli možnost může být vybrána pouze jednou. |
Jako příklad zvažte následující popis příkazu ADD
:
Tento popis umožňuje následující varianty:
ADD 1 TO x
ADD 1, a, b TO x ROUNDED, y, z ROUNDED
ADD a, b TO c
ON SIZE ERROR
DISPLAY "Error"
END-ADD
ADD a TO b
NOT SIZE ERROR
DISPLAY "No error"
ON SIZE ERROR
DISPLAY "Error"
Formát kódu
Vrchol popularity COBOL se shodoval s érou děrovacích strojů a děrných štítků . Samotný program byl zapsán na děrné štítky, poté načten a zkompilován a data vložená do programu byla někdy také na kartách.
COBOL lze psát ve dvou formátech: pevný (výchozí) nebo bezplatný. V pevném formátu musí být kód zarovnán tak, aby se vešel do určitých oblastí (zdržení z používání děrných štítků). Do COBOL 2002 to byly:
název | sloupec(y) | Používání |
---|---|---|
Oblast pořadového čísla | 1–6 | Tato oblast, původně používaná pro čísla štítků/řádků (usnadňující mechanické třídění děrných štítků, aby byla zajištěna zamýšlená sekvence programového kódu po ruční úpravě/manipulaci), je kompilátorem ignorována |
Oblast indikátoru | 7 | Zde jsou povoleny následující znaky:
|
Oblast A | 8–11 | Obsahuje: DIVISION a SECTION záhlaví procedur; Čísla úrovní 01 a 77 a deskriptory souborů/zpráv
|
Oblast B | 12–72 | Jakýkoli jiný kód není v oblasti A povolen |
Oblast názvu programu | 73– | Historicky až do sloupce 80 u děrných štítků se používá k identifikaci programu nebo sekvence, do které štítek patří |
V COBOL 2002 byly oblasti A a B sloučeny a vytvořily oblast program-text, která nyní končí ve sloupci definovaném implementátorem.
COBOL 2002 také zavedl kód volného formátu. Volně formátovaný kód lze umístit do libovolného sloupce souboru, jako v novějších programovacích jazycích. Komentáře jsou specifikovány pomocí *>
, které lze umístit kamkoli a lze je také použít ve zdrojovém kódu pevného formátu. Pokračovací čáry nejsou přítomny a >>PAGE
ukazatel nahrazuje směrnice /
.
Identifikační oddělení
Identifikační divize identifikuje následující kódovou entitu a obsahuje definici třídy nebo rozhraní.
Objektově orientované programování
Třídy a rozhraní jsou v COBOLu od roku 2002. Třídy mají tovární objekty, které obsahují metody tříd a proměnné, a objekty instance, které obsahují metody a proměnné instance. Dědičnost a rozhraní poskytují polymorfismus . Podpora pro obecné programování je poskytována prostřednictvím parametrizovaných tříd, které mohou být vytvořeny pro použití jakékoli třídy nebo rozhraní. Objekty jsou uloženy jako reference, které mohou být omezeny na určitý typ. Existují dva způsoby volání metody: INVOKE
příkaz, který funguje podobně jako CALL
, nebo prostřednictvím inline vyvolání metody, což je analogie použití funkcí.
*> These are equivalent.
INVOKE my-class "foo" RETURNING var
MOVE my-class::"foo" TO var *> Inline method invocation
COBOL neposkytuje způsob, jak skrýt metody. Data třídy však lze skrýt tak, že je deklarujete bez klauzule PROPERTY
, takže uživatel k nim nemá žádný přístup. V COBOL 2014 bylo přidáno
přetížení metody .
Divize životního prostředí
Divize prostředí obsahuje konfigurační sekci a vstupně-výstupní sekci. Sekce konfigurace se používá ke specifikaci proměnných funkcí, jako jsou znaky měn, národní prostředí a znakové sady. Vstupně-výstupní sekce obsahuje informace týkající se souboru.
Soubory
COBOL podporuje tři formáty souborů neboli organizace : sekvenční, indexovaný a relativní. V sekvenčních souborech jsou záznamy souvislé a musí se procházet postupně , podobně jako propojený seznam . Indexované soubory mají jeden nebo více indexů, které umožňují náhodný přístup k záznamům a které lze podle nich třídit. Každý záznam musí mít jedinečný klíč , ale jiné, alternativní klíče záznamu nemusí být jedinečné. Implementace indexovaných souborů se mezi jednotlivými prodejci liší, ačkoli běžné implementace, jako je C-ISAM a VSAM , jsou založeny na ISAM společnosti IBM . další implementace jsou Record Management Services na OpenVMS a Enscribe na HPE NonStop (Tandem). Relativní soubory, stejně jako indexované soubory, mají jedinečný klíč záznamu, ale nemají alternativní klíče. Klíčem relativního záznamu je jeho pořadová pozice; například 10. záznam má klíč 10. To znamená, že vytvoření záznamu s klíčem 5 může vyžadovat vytvoření (prázdných) předchozích záznamů. Relativní soubory také umožňují sekvenční i náhodný přístup.
Běžným nestandardním rozšířením je řádková sekvenční organizace, používaná pro zpracování textových souborů. Záznamy v souboru jsou ukončeny novým řádkem a mohou mít různou délku.
Datové dělení
Datové členění je rozděleno do šesti sekcí, které deklarují různé položky: spisová sekce pro spisové záznamy; pracovní a paměťová sekce pro statické proměnné ; sekce lokálního úložiště pro automatické proměnné ; sekce propojení, pro parametry a návratovou hodnotu; část sestav a část obrazovky pro textová uživatelská rozhraní .
Agregovaná data
Datové položky v COBOL jsou deklarovány hierarchicky pomocí čísel úrovní, která indikují, zda je datová položka součástí jiné. Položka s vyšším číslem úrovně je podřízena položce s nižším číslem. Datové položky nejvyšší úrovně s číslem úrovně 1 se nazývají záznamy . Položky, které mají podřízená agregovaná data, se nazývají skupinové položky ; ty, které ne, se nazývají elementární položky . Čísla úrovní použitá k popisu standardních datových položek jsou mezi 1 a 49.
01 some-record. *> Aggregate group record item
05 num PIC 9(10). *> Elementary item
05 the-date. *> Aggregate (sub)group record item
10 the-year PIC 9(4). *> Elementary item
10 the-month PIC 99. *> Elementary item
10 the-day PIC 99. *> Elementary item
Ve výše uvedeném příkladu jsou elementární položka num
a položka skupiny the-date
podřízené záznamu some-record
, zatímco elementární položky the-year
, the-month
, a the-day
jsou součástí položky skupiny the-date
.
Podřízené položky lze odlišit klíčovým slovem IN
(nebo OF
). Zvažte například výše uvedený příklad kódu spolu s následujícím příkladem:
01 sale-date.
05 the-year PIC 9(4).
05 the-month PIC 99.
05 the-day PIC 99.
Názvy the-year
, the-month
, a the-day
jsou nejednoznačné samy o sobě, protože s těmito názvy je definována více než jedna datová položka. Pro specifikaci konkrétní datové položky, například jedné z položek obsažených ve sale-date
skupině, by programátor použil the-year IN sale-date
(nebo ekvivalentní the-year OF sale-date
). Tato syntaxe je podobná „tečkové notaci“, kterou podporuje většina současných jazyků.
Další datové úrovně
Číslo úrovně 66 se používá k deklaraci přeskupení dříve definovaných položek bez ohledu na to, jak jsou tyto položky strukturovány. Tato datová úroveň, na kterou se také odkazuje přidruženou RENAMES
klauzulí , se používá zřídka a kolem roku 1988 se obvykle nacházela ve starých programech. Jeho schopnost ignorovat data hierarchické a logické struktury znamenala, že jeho použití nebylo doporučeno a mnoho instalací jeho použití zakazovalo.
01 customer-record.
05 cust-key PIC X(10).
05 cust-name.
10 cust-first-name PIC X(30).
10 cust-last-name PIC X(30).
05 cust-dob PIC 9(8).
05 cust-balance PIC 9(7)V99.
66 cust-personal-details RENAMES cust-name THRU cust-dob.
66 cust-all-details RENAMES cust-name THRU cust-balance.
Číslo úrovně 77 označuje, že položka je samostatná a v takových situacích je ekvivalentní číslu úrovně 01. Například následující kód deklaruje dvě datové položky úrovně 77 a , což jsou neskupinové datové položky property-name
, sales-region
které jsou nezávislé (nejsou jim podřízeny) na jakýchkoli jiných datových položkách:
77 property-name PIC X(80).
77 sales-region PIC 9(5).
Číslo úrovně 88 deklaruje název podmínky (tzv. úroveň 88), který je pravdivý, když jeho nadřazená datová položka obsahuje jednu z hodnot uvedených v jeho VALUE
klauzuli. Například následující kód definuje dvě 88úrovňové položky podmínky název, které jsou pravdivé nebo nepravdivé v závislosti na aktuální hodnotě znakových dat datové wage-type
položky. Když datová položka obsahuje hodnotu 'H'
, má název podmínky wage-is-hourly
hodnotu true, zatímco když obsahuje hodnotu 'S'
nebo 'Y'
, má název podmínky hodnotu wage-is-yearly
true. Pokud datová položka obsahuje nějakou jinou hodnotu, oba názvy podmínek jsou nepravdivé.
01 wage-type PIC X.
88 wage-is-hourly VALUE "H".
88 wage-is-yearly VALUE "S", "Y".
Typy dat
Standardní COBOL poskytuje následující datové typy:
Datový typ | Vzor prohlášení | Poznámky |
---|---|---|
Abecední |
PIC A(30)
|
Může obsahovat pouze písmena nebo mezery. |
Alfanumerický |
PIC X(30)
|
Může obsahovat libovolné znaky. |
Boolean |
PIC 1 USAGE BIT
|
Data uložená ve tvaru 0s a 1s jako binární číslo. |
Index |
USAGE INDEX
|
Používá se k odkazování na prvky tabulky. |
Národní |
PIC N(30)
|
Podobné jako alfanumerické, ale používající rozšířenou znakovou sadu, např. UTF-8 . |
Numerický |
PIC 9(5)V9(2)
|
Obsahuje přesně 7 číslic (7=5+2). 'V' najde implicitní desetinné místo v čísle s pevnou čárkou. |
Objekt |
USAGE OBJECT REFERENCE
|
Může odkazovat buď na objekt nebo NULL .
|
Ukazatel |
USAGE POINTER
|
Typová bezpečnost je v COBOL variabilní. Číselná data se tiše převádějí mezi různými reprezentacemi a velikostmi a alfanumerická data lze umístit do libovolné datové položky, kterou lze uložit jako řetězec, včetně číselných a skupinových dat. Naproti tomu odkazy na objekty a ukazatele mohou být přiřazeny pouze z položek stejného typu a jejich hodnoty mohou být omezeny na určitý typ.
klauzule PICTURE
Klauzule PICTURE
(nebo PIC
) je řetězec znaků, z nichž každý představuje část datové položky a toho, co může obsahovat. Některé obrázkové znaky určují typ položky a kolik znaků nebo číslic zabírá v paměti. Například a 9
označuje desetinnou číslici a a S
označuje, že položka je podepsána . Další obrázkové znaky (nazývané znaky pro vkládání a úpravy ) určují, jak má být položka formátována. Série +
znaků například definuje pozice znaků a také to, jak má být znak vedoucího znaku umístěn v datech konečného znaku; nečíselný znak zcela vpravo bude obsahovat znak položky, zatímco ostatní pozice znaků odpovídající a +
nalevo od této pozice budou obsahovat mezeru. Opakované znaky lze přesněji specifikovat zadáním čísla v závorce za znakem obrázku; například 9(7)
je ekvivalentní 9999999
. Specifikace obrázků obsahující pouze číslice ( 9
) a znaky ( S
) definují čistě číselné datové položky, zatímco specifikace obrázků obsahující alfabetické ( A
) nebo alfanumerické ( X
) znaky definují alfanumerické datové položky. Přítomnost dalších formátovacích znaků definuje editované číselné nebo editované alfanumerické datové položky.
PICTURE doložka
|
Hodnota v | Hodnota ven |
---|---|---|
PIC 9(5)
|
100
|
00100
|
"Hello"
|
"Hello" (toto je legální, ale vede to k nedefinovanému chování )
|
|
PIC +++++
|
-10
|
" -10" (všimněte si úvodních mezer)
|
PIC 99/99/9(4)
|
30042003
|
"30/04/2003"
|
PIC *(4)9.99
|
100.50
|
"**100.50"
|
0
|
"****0.00"
|
|
PIC X(3)BX(3)BX(3)
|
"ABCDEFGHI"
|
"ABC DEF GHI"
|
klauzule USAGE
Klauzule USAGE
deklaruje formát, ve kterém jsou data uložena. V závislosti na typu dat může být buď doplněn, nebo může být použit místo klauzule PICTURE
. I když jej lze použít k deklaraci ukazatelů a odkazů na objekty, je většinou zaměřen na specifikaci číselných typů. Tyto číselné formáty jsou:
- Binární, kde minimální velikost je určena buď klauzulí
PICTURE
nebo klauzulí,USAGE
jako je napřBINARY-LONG
-
USAGE COMPUTATIONAL
, kde mohou být data uložena v jakémkoli formátu, který implementace poskytuje; často ekvivalentníUSAGE BINARY
-
USAGE DISPLAY
, výchozí formát, kde jsou data uložena jako řetězec - Plovoucí desetinná čárka, buď ve formátu závislém na implementaci, nebo podle IEEE 754
-
USAGE NATIONAL
, kde jsou data uložena jako řetězec pomocí rozšířené znakové sady -
USAGE PACKED-DECIMAL
, kde jsou data uložena v nejmenším možném desítkovém formátu (typicky sbalené binárně kódované desítkové )
Autor zprávy
Report Writer je deklarativní nástroj pro vytváření reportů. Programátor potřebuje pouze specifikovat rozvržení sestavy a data potřebná k jejímu vytvoření, čímž je osvobodí od nutnosti psát kód, aby zvládl věci, jako jsou konce stránek, formátování dat a nadpisy a základy.
Sestavy jsou spojeny se soubory sestav, což jsou soubory, do kterých lze zapisovat pouze pomocí příkazů zapisovače sestav.
FD report-out REPORT sales-report.
Každá sestava je definována v sekci sestav datové divize. Zpráva je rozdělena do skupin zpráv, které definují záhlaví, základy a podrobnosti zprávy. Sestavy obcházejí hierarchické přerušení řízení . K přerušení řízení dochází, když klíčová proměnná změní svou hodnotu; například při vytváření sestavy s podrobnostmi o zákaznických objednávkách může dojít k přerušení kontroly, když program dosáhne objednávky jiného zákazníka. Zde je příklad popisu sestavy pro sestavu, která uvádí tržby prodejce a která varuje před neplatnými záznamy:
RD sales-report
PAGE LIMITS 60 LINES
FIRST DETAIL 3
CONTROLS seller-name.
01 TYPE PAGE HEADING.
03 COL 1 VALUE "Sales Report".
03 COL 74 VALUE "Page".
03 COL 79 PIC Z9 SOURCE PAGE-COUNTER.
01 sales-on-day TYPE DETAIL, LINE + 1.
03 COL 3 VALUE "Sales on".
03 COL 12 PIC 99/99/9999 SOURCE sales-date.
03 COL 21 VALUE "were".
03 COL 26 PIC $$$$9.99 SOURCE sales-amount.
01 invalid-sales TYPE DETAIL, LINE + 1.
03 COL 3 VALUE "INVALID RECORD:".
03 COL 19 PIC X(34) SOURCE sales-record.
01 TYPE CONTROL HEADING seller-name, LINE + 2.
03 COL 1 VALUE "Seller:".
03 COL 9 PIC X(30) SOURCE seller-name.
Výše uvedený popis sestavy popisuje následující rozvržení:
Sales Report Page 1 Seller: Howard Bromberg Sales on 10/12/2008 were $1000.00 Sales on 12/12/2008 were $0.00 Sales on 13/12/2008 were $31.47 INVALID RECORD: Howard Bromberg XXXXYY Seller: Howard Discount ... Sales Report Page 12 Sales on 08/05/2014 were $543.98 INVALID RECORD: William Selden 12O52014FOOFOO Sales on 30/05/2014 were $0.00
Zapisovač sestav řídí čtyři příkazy: INITIATE
, který připravuje zapisovač sestav k tisku; GENERATE
, který vytiskne skupinu sestav; SUPPRESS
, která potlačí tisk skupiny sestav; a TERMINATE
, která ukončí zpracování zprávy. Ve výše uvedeném příkladu zprávy o prodeji může rozdělení procedur vypadat takto:
OPEN INPUT sales, OUTPUT report-out
INITIATE sales-report
PERFORM UNTIL 1 <> 1
READ sales
AT END
EXIT PERFORM
END-READ
VALIDATE sales-record
IF valid-record
GENERATE sales-on-day
ELSE
GENERATE invalid-sales
END-IF
END-PERFORM
TERMINATE sales-report
CLOSE sales, report-out
.
Použití nástroje Report Writer má tendenci se značně lišit; některé organizace jej využívají ve velké míře a některé vůbec. Implementace Report Writer se navíc lišily v kvalitě, přičemž ty na nižším konci někdy za běhu využívaly nadměrné množství paměti.
Dělení procedur
Postupy
Oddíly a odstavce v dělení procedur (souhrnně nazývané procedury) lze použít jako štítky a jako jednoduché podprogramy . Na rozdíl od jiných oddílů nemusí být odstavce v oddílech.
Spouštění probíhá procedurami programu, dokud není ukončeno. Pro použití procedur jako podprogramů PERFORM
se používá sloveso.
Příkaz PERFORM
poněkud připomíná volání procedury v novějších jazycích v tom smyslu, že provádění se vrací do kódu následujícího za příkazem PERFORM
na konci volaného kódu; neposkytuje však mechanismus pro předávání parametrů nebo pro vracení výsledné hodnoty. Pokud je podprogram vyvolán pomocí jednoduchého příkazu, jako je , pak se řízení vrátí na konci volané procedury. Je však neobvyklý v tom, že jej lze použít k volání rozsahu zahrnujícího sekvenci několika sousedních procedur. To se provádí pomocí konstrukce:
PERFORM subroutine
PERFORM
PERFORM sub-1 THRU sub-n
PROCEDURE so-and-so.
PERFORM ALPHA
PERFORM ALPHA THRU GAMMA
STOP RUN.
ALPHA.
DISPLAY 'A'.
BETA.
DISPLAY 'B'.
GAMMA.
DISPLAY 'C'.
Výstupem tohoto programu bude: "AAB C".
PERFORM
se také liší od konvenčních volání procedur v tom, že zde není, alespoň tradičně, žádná představa o zásobníku volání. V důsledku toho jsou možná vnořená vyvolání (sekvence edovaného kódu PERFORM
může provést PERFORM
příkaz sám), ale vyžaduje zvláštní péči, pokud jsou části stejného kódu prováděny oběma voláními. Problém nastává, když kód ve vnitřním vyvolání dosáhne výstupního bodu vnějšího vyvolání. Formálněji, pokud řízení prochází výstupním bodem vyvolání, PERFORM
které bylo voláno dříve, ale ještě nebylo dokončeno, standard COBOL 2002 stanoví, že chování není definováno .
Důvodem je, že COBOL, spíše než "zpáteční adresa", pracuje s tím, co lze nazvat pokračovací adresou. Když řídicí tok dosáhne konce jakékoli procedury, vyhledá se adresa pokračování a řízení se přenese na tuto adresu. Před spuštěním programu je adresa pokračování pro každou proceduru inicializována na počáteční adresu procedury, která následuje v textu programu, takže pokud nedojde k žádným PERFORM
příkazům, řízení probíhá programem shora dolů. Ale když se PERFORM
příkaz provede, upraví adresu pokračování volané procedury (nebo poslední procedury volaného rozsahu, pokud PERFORM THRU
byla použita), takže se ovládací prvek na konci vrátí na místo volání. Původní hodnota se uloží a poté se obnoví, ale existuje pouze jedna paměťová pozice. Pokud dvě vnořená vyvolání fungují na překrývajícím se kódu, mohou si vzájemně zasahovat do správy pokračovací adresy několika způsoby.
Následující příklad (převzatý z Veerman & Verhoeven 2006 ) ilustruje problém:
LABEL1.
DISPLAY '1'
PERFORM LABEL2 THRU LABEL3
STOP RUN.
LABEL2.
DISPLAY '2'
PERFORM LABEL3 THRU LABEL4.
LABEL3.
DISPLAY '3'.
LABEL4.
DISPLAY '4'.
Dalo by se očekávat, že výstup tohoto programu bude "1 2 3 4 3": Po zobrazení "2" druhý PERFORM
způsobí, že se zobrazí "3" a "4" a pak první vyvolání pokračuje s "3" . V tradičních implementacích COBOL tomu tak není. První PERFORM
příkaz spíše nastavuje adresu pokračování na konec, LABEL3
takže skočí zpět na stránku volání uvnitř LABEL1
. Druhý PERFORM
příkaz nastavuje návrat na konec, LABEL4
ale nemění adresu pokračování LABEL3
, přičemž očekává, že to bude výchozí pokračování. Když tedy vnitřní vyvolání dorazí na konec LABEL3
, skočí zpět na vnější PERFORM
příkaz a program přestane tisknout pouze "1 2 3". Na druhou stranu v některých implementacích COBOL, jako je open-source kompilátor TinyCOBOL, se tyto dva PERFORM
příkazy navzájem neovlivňují a výstup je skutečně „1 2 3 4 3“. Proto je chování v takových případech nejen (možná) překvapivé, ale také není přenosné.
Zvláštním důsledkem tohoto omezení je, že jej PERFORM
nelze použít k zápisu rekurzivního kódu. Další jednoduchý příklad pro ilustraci (mírně zjednodušený z Veerman & Verhoeven 2006 ):
MOVE 1 TO A
PERFORM LABEL
STOP RUN.
LABEL.
DISPLAY A
IF A < 3
ADD 1 TO A
PERFORM LABEL
END-IF
DISPLAY 'END'.
Dalo by se očekávat, že výstup je "1 2 3 END END END" a ve skutečnosti to některé kompilátory COBOL vytvoří. Ale jiné kompilátory, jako je IBM COBOL, vytvoří kód, který vytiskne "1 2 3 END END END END ..." a tak dále, přičemž tiskne "END" znovu a znovu v nekonečné smyčce. Protože je k dispozici omezený prostor pro uložení adres pokračování zálohování, zálohy se v průběhu rekurzivních vyvolání přepisují a vše, co lze obnovit, je skok zpět na DISPLAY 'END'
.
Výpisy
COBOL 2014 má 47 příkazů (nazývaných také slovesa ), které lze seskupit do následujících širokých kategorií: tok řízení, I/O, manipulace s daty a zapisovač sestav. Příkazy pro vytváření zpráv jsou uvedeny v části pro vytváření zpráv .
Řídit tok
Podmíněné příkazy COBOL jsou IF
a EVALUATE
. EVALUATE
je příkaz podobný přepínači s přidanou schopností vyhodnocení více hodnot a podmínek. To lze použít k implementaci rozhodovacích tabulek . K ovládání CNC soustruhu lze například použít následující :
EVALUATE TRUE ALSO desired-speed ALSO current-speed
WHEN lid-closed ALSO min-speed THRU max-speed ALSO LESS THAN desired-speed
PERFORM speed-up-machine
WHEN lid-closed ALSO min-speed THRU max-speed ALSO GREATER THAN desired-speed
PERFORM slow-down-machine
WHEN lid-open ALSO ANY ALSO NOT ZERO
PERFORM emergency-stop
WHEN OTHER
CONTINUE
END-EVALUATE
Příkaz PERFORM
se používá k definování smyček, které se provádějí, dokud není podmínka pravdivá (ne když je pravdivá, což je běžnější v jiných jazycích). Používá se také k volání procedur nebo rozsahů procedur ( další podrobnosti viz sekce procedury ). CALL
a INVOKE
volání podprogramů a metod. Název podprogramu/metody je obsažen v řetězci, který může být literál nebo datová položka. Parametry lze předávat odkazem , obsahem (kde se kopie předává odkazem) nebo hodnotou (ale pouze v případě, že je k dispozici prototyp ).
CANCEL
uvolní podprogramy z paměti. GO TO
způsobí, že program skočí na zadanou proceduru.
Příkaz GOBACK
je příkaz return a STOP
příkaz zastaví program. Příkaz EXIT
má šest různých formátů: lze jej použít jako příkaz return, příkaz break , příkaz continue , značku konce nebo pro opuštění procedury.
Výjimky jsou vyvolány příkazem RAISE
a zachyceny pomocí handleru nebo deklarativního , definovaného v DECLARATIVES
části dělení procedury. Deklarace jsou sekce začínající příkazem USE
, který specifikuje chyby, které je třeba zpracovat. Výjimkou mohou být jména nebo objekty. RESUME
se používá v deklarativu ke skoku na příkaz za příkazem, který vyvolal výjimku, nebo na proceduru mimo DECLARATIVES
. Na rozdíl od jiných jazyků nemusí nezachycené výjimky program ukončit a program může pokračovat bez ovlivnění.
I/O
Soubor I/O je obsluhován samopopisujícími příkazy OPEN
, CLOSE
, READ
, a WRITE
spolu s dalšími třemi: REWRITE
, který aktualizuje záznam; START
, který vybírá následné záznamy k přístupu nalezením záznamu s určitým klíčem; a UNLOCK
, které uvolní zámek na posledním záznamu.
Uživatelská interakce se provádí pomocí ACCEPT
a DISPLAY
.
Manipulace s daty
Následující slovesa manipulují s daty:
-
INITIALIZE
, který nastaví datové položky na jejich výchozí hodnoty. -
MOVE
, který přiřazuje hodnoty datovým položkám ; MOVE CORRESPONDING přiřadí odpovídající pole se stejným názvem . -
SET
, který má 15 formátů: mimo jiné může upravovat indexy, přiřazovat odkazy na objekty a měnit kapacity tabulek. -
ADD
,SUBTRACT
,MULTIPLY
,DIVIDE
, aCOMPUTE
, které zpracovávají aritmetiku (sCOMPUTE
přiřazením výsledku vzorce k proměnné). -
ALLOCATE
aFREE
, které zpracovávají dynamickou paměť . -
VALIDATE
, která ověřuje a distribuuje data, jak je uvedeno v popisu položky v datové divizi. -
STRING
aUNSTRING
, které spojují a rozdělují řetězce . -
INSPECT
, který sčítá nebo nahrazuje instance zadaných podřetězců v řetězci. -
SEARCH
, který v tabulce hledá první položku splňující podmínku.
Soubory a tabulky se třídí pomocí SORT
a MERGE
sloveso slučuje a třídí soubory. Sloveso RELEASE
poskytuje záznamy k řazení a RETURN
získává setříděné záznamy v pořadí.
Ukončení rozsahu
Některé příkazy, například IF
a READ
, mohou samy obsahovat příkazy. Takové příkazy mohou být ukončeny dvěma způsoby: tečkou ( implicitní ukončení ), která ukončí všechny obsažené neukončené příkazy, nebo terminátorem rozsahu, který ukončí nejbližší odpovídající otevřený příkaz.
*> Terminator period ("implicit termination")
IF invalid-record
IF no-more-records
NEXT SENTENCE
ELSE
READ record-file
AT END SET no-more-records TO TRUE.
*> Scope terminators ("explicit termination")
IF invalid-record
IF no-more-records
CONTINUE
ELSE
READ record-file
AT END SET no-more-records TO TRUE
END-READ
END-IF
END-IF
Vnořené příkazy ukončené tečkou jsou častým zdrojem chyb. Prozkoumejte například následující kód:
IF x
DISPLAY y.
DISPLAY z.
Zde je záměrem zobrazit y
a z
zda je podmínka x
pravdivá. Zobrazí se však z
bez ohledu na hodnotu, x
protože IF
příkaz je ukončen chybnou tečkou za .
DISPLAY y
Další chyba je výsledkem problému s visícím else , kdy se dva IF
příkazy mohou spojit s ELSE
.
IF x
IF y
DISPLAY a
ELSE
DISPLAY b.
Ve výše uvedeném fragmentu se ELSE
asociuje s příkazem namísto příkazu , což způsobuje chybu. Před zavedením explicitních terminátorů rozsahu by jeho zamezení vyžadovalo umístění za vnitřní .
IF y
IF x
ELSE NEXT SENTENCE
IF
Samomodifikační kód
Původní (1959) specifikace COBOL podporovala nechvalně známý výrok, pro který mnoho kompilátorů vygenerovalo samomodifikující kód . a jsou označení procedur a místo toho znamená jediný příkaz v proceduře provedený po takovém příkazu . Mnoho kompilátorů jej stále podporuje, ale ve standardu COBOL 1985
byl považován za zastaralý a v roce 2002 odstraněn.ALTER X TO PROCEED TO Y
X
Y
GO TO
X
ALTER
GO TO Y
Toto ALTER
prohlášení bylo špatně hodnoceno, protože podkopalo „místnost kontextu“ a znesnadnilo pochopení celkové logiky programu. Jak napsal autor učebnice Daniel D. McCracken v roce 1976, kdy „někdo, kdo nikdy předtím program neviděl, se s ním musí co nejrychleji seznámit, někdy pod kritickým časovým tlakem, protože program selhal... pohled na GO TO prohlášení v odstavci samo o sobě, které signalizuje existenci neznámého počtu příkazů ALTER na neznámých místech v programu, vyvolává strach v srdci nejstatečnějšího programátora."
Ahoj světe
Program " Ahoj, světe " v COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. hello-world.
PROCEDURE DIVISION.
DISPLAY "Hello, world!"
.
Když zaznělo – dnes už slavné – "Ahoj, světe!" příklad programu v The C Programming Language byl poprvé publikován v roce 1978, podobný ukázkový program COBOL pro sálový počítač by byl předložen prostřednictvím JCL , velmi pravděpodobně pomocí čtečky děrných štítků a 80 sloupcových děrných štítků. Níže uvedený výpis s prázdnou DATA DIVISION byl testován pomocí Linuxu a emulátoru System/370 Hercules se systémem MVS 3.8J. JCL, napsaný v červenci 2015, je odvozen z výukových programů a ukázek Hercules, které hostil Jay Moseley. V souladu s programováním COBOL té doby se HELLO, WORLD zobrazuje velkými písmeny.
//COBUCLG JOB (001),'COBOL BASE TEST', 00010000
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) 00020000
//BASETEST EXEC COBUCLG 00030000
//COB.SYSIN DD * 00040000
00000* VALIDATION OF BASE COBOL INSTALL 00050000
01000 IDENTIFICATION DIVISION. 00060000
01100 PROGRAM-ID. 'HELLO'. 00070000
02000 ENVIRONMENT DIVISION. 00080000
02100 CONFIGURATION SECTION. 00090000
02110 SOURCE-COMPUTER. GNULINUX. 00100000
02120 OBJECT-COMPUTER. HERCULES. 00110000
02200 SPECIAL-NAMES. 00120000
02210 CONSOLE IS CONSL. 00130000
03000 DATA DIVISION. 00140000
04000 PROCEDURE DIVISION. 00150000
04100 00-MAIN. 00160000
04110 DISPLAY 'HELLO, WORLD' UPON CONSL. 00170000
04900 STOP RUN. 00180000
//LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR 00190000
// DD DSNAME=SYS1.LINKLIB,DISP=SHR 00200000
//GO.SYSPRINT DD SYSOUT=A 00210000
// 00220000
Po odeslání JCL se na konzole MVS zobrazilo:
19.52.48 JOB 3 $HASP100 COBUCLG ON READER1 COBOL BASE TEST
19.52.48 JOB 3 IEF677I WARNING MESSAGE(S) FOR JOB COBUCLG ISSUED
19.52.48 JOB 3 $HASP373 COBUCLG STARTED - INIT 1 - CLASS A - SYS BSP1
19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING
19.52.48 JOB 3 IEC130I SYSLIB DD STATEMENT MISSING
19.52.48 JOB 3 IEC130I SYSPUNCH DD STATEMENT MISSING
19.52.48 JOB 3 IEFACTRT - Stepname Procstep Program Retcode
19.52.48 JOB 3 COBUCLG BASETEST COB IKFCBL00 RC= 0000
19.52.48 JOB 3 COBUCLG BASETEST LKED IEWL RC= 0000
19.52.48 JOB 3 +HELLO, WORLD
19.52.48 JOB 3 COBUCLG BASETEST GO PGM=*.DD RC= 0000
19.52.48 JOB 3 $HASP395 COBUCLG ENDED
Řádek 10 výše uvedeného výpisu konzole je pro efekt zvýrazněn, zvýraznění není součástí skutečného výstupu konzole .
Přidružený výpis kompilátoru vygeneroval přes čtyři stránky technických podrobností a informací o běhu úlohy pro jeden řádek výstupu ze 14 řádků COBOL.
Recepce
Nedostatek struktury
V 70. letech 20. století bylo přijetí paradigmatu strukturovaného programování stále více rozšířené. Edsger Dijkstra , přední počítačový vědec, napsal dopis editorovi Communications of the ACM , publikovaném v roce 1975, nazvaný „Jak říkáme pravdy, které by mohly bolet?“, ve kterém kritizoval COBOL a několik dalších současných jazyků; s poznámkou, že „použití COBOL ochromuje mysl“.
Ve zveřejněném nesouhlasu s Dijkstrovými poznámkami počítačový vědec Howard E. Tompkins tvrdil, že nestrukturovaný COBOL byl „napsán programátory, kteří nikdy neměli výhodu strukturovaného COBOLu, dobře se učili“, a tvrdil, že jde především o školení.
Jednou z příčin špagetového kódu bylo GO TO
prohlášení. Pokusy odstranit GO TO
s z kódu COBOL však vedly ke spletitým programům a snížené kvalitě kódu. GO TO
s byly z velké části nahrazeny prohlášením PERFORM
a procedurami, které podporovaly modulární programování a umožňovaly snadný přístup k výkonným zařízením pro vytváření smyček. Dalo by se však PERFORM
použít pouze s procedurami, takže těla smyček nebyla umístěna tam, kde byla použita, což ztěžovalo pochopení programů.
Programy COBOL byly nechvalně známé tím, že byly monolitické a postrádaly modularizaci. Kód COBOL mohl být modularizován pouze pomocí procedur, které byly shledány jako nedostatečné pro velké systémy. Nebylo možné omezit přístup k datům, což znamená, že procedura mohla přistupovat a upravovat jakoukoli datovou položku. Navíc neexistoval způsob, jak předat parametry postupu, což Jean Sammet považoval za největší chybu výboru.
Další komplikace pramenila ze schopnosti PERFORM THRU
zadané sekvence postupů. To znamenalo, že řízení mohlo přeskakovat a vracet se z jakékoli procedury, což vytvořilo spletitý tok řízení a umožnilo programátorovi porušit pravidlo jediného vstupu s jedním výstupem .
Tato situace se zlepšila, protože COBOL přijal více funkcí. COBOL-74 přidal podprogramy, které daly programátorům možnost ovládat data, ke kterým měla každá část programu přístup. COBOL-85 pak přidal vnořené podprogramy, což umožnilo programátorům skrýt podprogramy. Další kontrola nad daty a kódem přišla v roce 2002, kdy bylo zahrnuto objektově orientované programování, uživatelsky definované funkce a uživatelsky definované datové typy.
Nicméně mnoho důležitého staršího softwaru COBOL používá nestrukturovaný kód, který se stal prakticky neudržitelným. Může být příliš riskantní a nákladné upravovat i jednoduchou část kódu, protože může být použit z neznámých míst neznámým způsobem.
Problémy s kompatibilitou
COBOL byl zamýšlen jako vysoce přenosný, „běžný“ jazyk. Do roku 2001 však bylo vytvořeno kolem 300 dialektů. Jedním ze zdrojů dialektů byl samotný standard: standard z roku 1974 se skládal z jednoho povinného jádra a jedenácti funkčních modulů, z nichž každý obsahoval dvě nebo tři úrovně podpory. To umožnilo 104 976 možných variant.
COBOL-85 nebyl plně kompatibilní s dřívějšími verzemi a jeho vývoj byl kontroverzní. Joseph T. Brophy, CIO Travelers Insurance , stál v čele snahy informovat uživatele COBOL o velkých nákladech na přeprogramování implementace nového standardu. V důsledku toho výbor ANSI COBOL obdržel více než 2 200 dopisů od veřejnosti, většinou negativních, požadujících, aby výbor provedl změny. Na druhou stranu se předpokládalo, že konverze na COBOL-85 zvýší produktivitu v budoucích letech, a tím ospravedlní náklady na konverzi.
Podrobná syntaxe
Slabý, upovídaný a ochablý jazyk, který používají brusiči kódu k nudným bezduchým věcem na dinosauřích sálových počítačích. [...] Jeho samotné jméno je zřídkakdy vysloveno bez rituálních projevů znechucení nebo hrůzy.
Soubor žargonu 4.4.8.
Syntaxe COBOLu byla často kritizována za svou upovídanost. Zastánci říkají, že toto bylo zamýšleno k tomu, aby se kód sám dokumentoval , což usnadnilo údržbu programu. COBOL byl také zamýšlen tak, aby se dal programátorům snadno naučit a používat, a přitom byl stále čitelný pro netechnické pracovníky, jako jsou manažeři.
Touha po čitelnosti vedla k použití syntaxe a strukturních prvků podobných angličtině, jako jsou podstatná jména, slovesa, věty, věty, oddíly a dělení. Přesto se v roce 1984 správci programů COBOL snažili vypořádat s „nesrozumitelným“ kódem a hlavní změny v COBOL-85 měly pomoci usnadnit údržbu.
Jean Sammet, členka komise krátkého dosahu, poznamenala, že „byli učiněni jen malé pokusy vyjít vstříc profesionálním programátorům, ve skutečnosti lidé, jejichž hlavním zájmem je programování, bývají s COBOLem velmi nespokojeni“, což přičítala podrobné syntaxi COBOLu.
Izolace od komunity informatiky
Komunita COBOL byla vždy izolována od komunity počítačových věd. Na návrhu COBOL se nepodíleli žádní akademičtí informatici: všichni členové výboru pocházeli z obchodu nebo vlády. Počítačoví vědci se v té době více zajímali o obory jako numerická analýza, fyzika a systémové programování než o komerční problémy se zpracováním souborů, které vývoj COBOL řešil. Jean Sammet připisoval neoblíbenost COBOLu počáteční „snobské reakci“ kvůli jeho neeleganci, nedostatku vlivných počítačových vědců účastnících se procesu návrhu a pohrdání zpracováním obchodních dat. Specifikace COBOL používala k definování své syntaxe jedinečnou „notaci“ nebo metajazyk , spíše než novou formu Backus–Naur , o které výbor nevěděl. To vedlo k „tvrdé“ kritice.
Akademický svět má tendenci považovat COBOL za upovídaný, neohrabaný a nevkusný a snaží se ho ignorovat, ačkoliv na světě je pravděpodobně více COBOL programů a programátorů než pro FORTRAN, ALGOL a PL/I dohromady. Výuku COBOL většinou poskytují pouze školy s bezprostředním odborným zaměřením.
Richard Conway a David Gries , 1973
Později COBOL trpěl nedostatkem materiálu, který jej pokrýval; trvalo to až do roku 1963, než se objevily úvodní knihy (s Richardem D. Irwinem, který v roce 1966 vydal vysokoškolskou učebnici COBOL). V roce 1985 bylo v Kongresové knihovně dvakrát tolik knih na FORTRAN a čtyřikrát tolik na BASIC než na COBOL . Univerzitní profesoři vyučovali modernější, nejmodernější jazyky a techniky místo COBOL, o kterém se říkalo, že má „obchodní“ povahu. Donald Nelson, předseda výboru CODASYL COBOL, v roce 1984 řekl, že „akademici... nenávidí COBOL“ a že absolventi počítačových věd „do nich vrazili ‚nenávist COBOL‘.
V polovině 80. let 20. století také došlo k výraznému ústupku vůči COBOLu v obchodní komunitě ze strany uživatelů jiných jazyků, například FORTRAN nebo assembleru , z čehož vyplývá, že COBOL lze používat pouze pro nenáročné problémy.
V roce 2003 se COBOL objevil v 80 % osnov informačních systémů ve Spojených státech, stejný podíl jako C++ a Java . O deset let později průzkum společnosti Micro Focus zjistil, že 20 % univerzitních akademiků si myslí, že COBOL je zastaralý nebo mrtvý, a že 55 % věří, že jejich studenti si myslí, že COBOL je zastaralý nebo mrtvý. Stejný průzkum také zjistil, že pouze 25 % akademiků mělo ve svých osnovách programování COBOL, i když 60 % si myslelo, že by ho měli učit.
Obavy z procesu návrhu
O kompetenci normalizačního výboru se objevily pochybnosti. Krátkodobý člen výboru Howard Bromberg řekl, že nad vývojovým procesem je „malá kontrola“ a že je „sužován diskontinuitou personálu a... nedostatkem talentů“. Jean Sammet a Jerome Garfunkel také poznamenali, že změny zavedené v jedné revizi standardu budou vráceny v další, a to jak kvůli změnám v tom, kdo byl ve standardním výboru, tak kvůli objektivním důkazům.
Standardy COBOL opakovaně trpěly zpožděním: COBOL-85 dorazil o pět let později, než se očekávalo, COBOL 2002 se opozdil o pět let a COBOL 2014 o šest let. Aby se zabránilo zpožděním, standardní výbor povolil vytvoření volitelných dodatků, které by přidaly funkce rychleji než čekáním na další standardní revizi. Někteří členové komise však vyjádřili obavy z nekompatibility mezi implementacemi a častými úpravami normy.
Vlivy na jiné jazyky
Datové struktury COBOL ovlivnily následující programovací jazyky. Jeho záznam a struktura souborů ovlivnily PL/I a Pascal a REDEFINES
klauzule byla předchůdcem Pascalových variant záznamů. Explicitní definice struktury souborů předcházely vývoji systémů správy databází a agregovaná data byla významným pokrokem oproti polím Fortran.
PICTURE
deklarace údajů byly začleněny do PL/I s drobnými změnami.
Zařízení COBOL COPY
, ačkoli je považováno za „primitivní“, ovlivnilo vývoj směrnic pro začlenění .
Zaměření na přenositelnost a standardizaci znamenalo, že programy napsané v COBOL mohly být přenosné a usnadnily rozšíření jazyka na širokou škálu hardwarových platforem a operačních systémů. Dobře definovaná struktura divizí navíc omezuje definici externích odkazů na divizi Environment, což zjednodušuje zejména změny platformy.
Viz také
- Abecední seznam programovacích jazyků
- BLIS/COBOL
- CODASYL
- Srovnání programovacích jazyků
- Generační seznam programovacích jazyků § založený na COBOL
- Seznam překladačů § Překladače COBOL
Poznámky
Reference
Citace
Prameny
- Bemer, Bob (1971). "Pohled do historie COBOL" (PDF) . Honeywell Computer Journal . 5 (3). Archivováno z originálu (PDF) dne 22. ledna 2016 . Načteno 28. června 2014 .
- Beyer, Kurt (2009). Grace Hopper a vynález informačního věku . MIT Press. ISBN 978-0262013109. LCCN 2008044229 .
- Brown, William R. (1. prosince 1976). "COBOL". V Belzeru, Jack; Holzman, Albert G.; Kent, Allen (eds.). Encyklopedie informatiky a techniky: 5. díl . CRC Stiskněte . ISBN 978-0824722555.
- Carr, Donald E.; Kizior, Ronald J. (31. prosince 2003). „Pokračující význam COBOL v podnikání a akademické sféře: současná situace a srovnání se studií z roku 2000“ (PDF) . Informační systémy Education Journal . 1 (52). ISSN 1545-679X . Načteno 4. srpna 2014 .
- CODASYL (červenec 1969). "CODASYL COBOL Journal of Development 1968" . Codasyl Cobal Journal of Development . Národní úřad pro standardy . ISSN 0591-0218 . LCCN 73601243 .
- Conner, Richard L. (14. května 1984). "Cobole, tvůj věk se ukazuje . " Počítačový svět . 18 (20): ID/7–ID/18. ISSN 0010-4841 .
- Cutler, Gary (9. dubna 2014). "GNU COBOL Programmer's Guide" (PDF) (3. vydání) . Staženo 25. února 2014 .
- Garfunkel, Jerome (1987). Vzorová kniha COBOL 85 . Wiley . ISBN 978-0471804611.
- ISO/IEC JTC 1/SC 22/WG 4 (4. prosince 2001). "ISO/IEC IS 1989:2001 – Programovací jazyk COBOL" . ISO . Archivováno z originálu (ZIP ve formátu PDF) dne 24. ledna 2002 . Staženo 2. září 2014 .(Odkaz jde na koncept N 0147)
- ISO/IEC JTC 1/SC 22/WG 4 (31. října 2014). INCITS/ISO/IEC 1989:2014 [2014] – Programovací jazyk COBOL . PODNĚTY .
- Klein, William M. (4. října 2010). "Historie COBOL" (PDF) . Archivováno z originálu (PDF) dne 7. ledna 2014 . Načteno 7. ledna 2014 .
- Marcotty, Michael (1978a). Wexelblat, Richard L. (ed.). Přepis relace otázek a odpovědí . Historie programovacích jazyků. Academic Press (vydáno 1981). p. 263 . doi : 10.1145/800025.1198370 . ISBN 0127450408.
- Marcotty, Michael (1978b). Wexelblat, Richard L. (ed.). Úplné znění všech zaslaných otázek . Historie programovacích jazyků. Academic Press (vydáno 1981). p. 274 . doi : 10.1145/800025.1198371 . ISBN 0127450408.
- McCracken, Daniel D. (1976). Zjednodušený průvodce strukturovaným programováním COBOL . Wiley. ISBN 0-471-58284-0.
- McCracken, Daniel D.; Golden, Donald G. (1988). Zjednodušený průvodce strukturovaným programováním COBOL (2. vydání). Wiley. ISBN 978-0471610540. LCCN 87034608 .
- Riehle, Richard L. (srpen 1992). „PROVEDENÍ považováno za škodlivé“. Komunikace ACM . 35 (8): 125–128. doi : 10.1145/135226.376106 . S2CID 18845698 .
- Sammet, Jean E. (květen 1961). Metoda kombinace ALGOL a COBOL . Příspěvky přednesené na společné západní počítačové konferenci IRE–AIEE–ACM ve dnech 9.–11. května 1961. ACM . s. 379–387. doi : 10.1145/1460690.1460734 .
- Sammet, Jean E. (1978a). Wexelblat, Richard L. (ed.). Raná historie COBOL . Historie programovacích jazyků. Academic Press (vydáno 1981). doi : 10.1145/800025.1198367 . ISBN 0127450408.
- Sammet, Jean E. (1978b). Wexelblat, Richard L. (ed.). Přepis prezentace . Historie programovacích jazyků. Academic Press (vydáno 1981). doi : 10.1145/800025.1198368 . ISBN 0127450408.
- Sammet, Jean E. (23. července 2004). "COBOL". V Reilly, Edwin D. (ed.). Stručná encyklopedie informatiky . Wiley. ISBN 978-0470090954. OCLC 249810423 .
- Shneiderman, B. (říjen 1985). „Vztah mezi COBOL a informatiky“ . Annals of the History of Computing . 7 (4): 348–352. doi : 10.1109/MAHC.1985.10041 . S2CID 1009406 .
externí odkazy
- COBOL ve společnosti Curlie
- Jazykový standard COBOL (1991; COBOL-85 s dodatkem 1), od The Open Group