UZNÁNÍ Následující odstavce obsahují výňatky ze zprávy CODASYL COBOL Journal of Development 1970, kde je vyjádřen požadavek na dodržování autorských práv týkajících se jazyka COBOL. Každá organizace zainteresovaná na použití specifikací jazyka COBOL (ať už jako celku nebo pouze části) může je volně používat jako základu pro programovací příručku nebo k jakýmkoliv jiným účelům. Ovšem všechny takovéto organizace jsou žádány, aby otiskly uvedený text jako část úvodních partií publikace. Ti, kteří používají jen krátké pasáže, jsou žádáni, aby se zmínili o COBOLu jako o zdroji, nemusí ovšem přetisknout celé toto uznání. Na COBOL jako na vyvinutý jazyk nemá vlastnická práva žádná společnost nebo skupina společností ani jakákoliv organizace nebo skupina organizací. Výbor jazyka COBOL při CODASYL, stejně jako žádný z přispívajících účastníků nezaručují explicitně ani implicitně správnost a fungování programovacího systému a jazyka. Kromě toho jim nepřísluší žádná odpovědnost v tomto smyslu. Jazyk COBOL je stále upravován. Požadavky vztahující se k návrhům modifikací se zasílají Výkonnému výboru jazyka COBOL při CODASYL. Autoři a držitelé autorských práv materiálů použitých pro tuto příručku FLOW-MATIC (Trademark of Sperry Rand Corporation), Programming for the UNIVAC (R) I a II, Data Automation Systems copyrighted 1958, 1959, by Sperry Rand Corpor.; IBM Commercial Translator, Form No.F28-8013, copyrighted 1959 by IBM; FACT, DSI 27A5260-2760, copyrighted 1960 by Mineapolis- -Honeywell povolili používání tohoto materiálu vcelku i v částech při stanovení specifikací COBOLu. Toto povolení se vztahuje rovněž pro reprodukování a použití specifikací jazyka COBOL v programovacích příručkách a podobných publikacích. ÚVOD COBOL (Common Business Oriented Language) je programovací jazyk určený především pro zpracování hromadných dat. K tomuto účelu je vybaven bohatými možnostmi zpracování souborů a zpracování alfanumerických údajů. Jazyk COBOL je však přitom natolik univerzální, že jej lze s úspěchem používat i pro vědecko-technické výpočty, v nichž (přes jistou těžkopádnost zápisu) nezůstává v rychlosti zpracování pozadu za jazyky speciálně určenými pro vědecko-technické výpočty. Jazyk MX COBOL byl koncipován tak, aby co nejvíce umožňoval zpracovávat na osobních počítačích programy psané v jazyce COBOL DOS-3/JS. Případné změny jsou vynuceny odlišnými vlastnostmi operačních systémů (UPSI-byte, RETURN-CODE, COM-REG, práce s virtuálními soubory atd.). Překladač jazyka MX COBOL byl psán tak, aby pracoval v operačních systémech MSDOS a UNIX. Tuto vlastnost má vyjadřovat zkratka MX. Jazyk MX COBOL je kromě základních prostředků (přesuny, aritmetické příkazy, podmínky, skoky, vyvolání vnitřních podprogramů, transformace údajů atd.) vybaven též prostředky pro - zpracování tabulek (indexování, příkazy SET a SEARCH); - zpracování sekvenčních, relativních a indexových souborů; - třídění (SORT) a zatřiďování (MERGE); - vytváření tiskových sestav (tzv. Generátor sestav); - spojování programů (příkazy CALL, ENTRY, GOBACK); - zařazování úseků v jazyku C s možností cobolského zápisu cobolských objektů; - kopírování částí zdrojového programu ze souborů s možností modifikace (pseudopříkaz COPY); - dynamické přidělování a uvolňování paměti (příkazy CALL 'ICUGETV', CALL 'ICUFREE', CALL 'ICVIRG', CALL 'ICVIRF' a příkaz LOAD). Dále je jazyk MX COBOL vybaven účinnými ladicími prostředky, umožňujícími rychlé odladění programu a též rychlé nalezení příčiny chyby při práci již odladěného programu: Vedle obvyklých příkazů ON, EXHIBIT a READY TRACE má uživatel k dispozici ještě tzv. animátor a ladicí řádky s písmenem D v 7. sloupci, jejichž činnost lze potlačit nebo povolit bez nového překladu zdrojového programu. Animátor umožňuje krokovat COBOLský program po jednotlivých příkazech s možností zobrazování hodnot vybraných položek. Jazyk MX COBOL (překladač i uživatelskou dokumentaci) vypracovala v letech 1990 a 1991 skupina programátorů podniku Kancelářské stroje Brno ve složení Petr Bílek, Josef Brlica, Petr Dvořáček, Jiří Šmerk a Vladimír Vérosta. Uživatelská dokumentace jazyka MX COBOL se snaží o co nejpřesnější popis tohoto jazyka v té podobě, v jaké je skutečně implementován prostřednictvím překladače. Dokumentace se snaží být maximálně podrobná a poskytovat přesné informace i v těch případech, které se vlastně již netýkají jazyka, nýbrž překladače nebo operačního systému. Tato přesnost a podrobnost je výhodná pro zkušené programátory a pro školitele jazyka, může však činit obtíže začátečníkům, neboť jim neumožňuje rozlišit, které informace jsou základní a které jsou okrajové. Očekává se proto, že se pro první seznámení s jazykem COBOL začátečník zúčastní vhodného školení anebo se alespoň bude učit jazyku COBOL pod vedením zkušenějšího spolupracovníka. Od čtenáře této příručky se očekává pouze povšechná znalost základů programování. Velmi užitečná je znalost zobrazení dat v paměti a znalost základů problematiky zpracování hromadných dat. Jelikož překladač překládá COBOLský program do jazyka C, přijde uživateli vhod znalost programovacího jazyka C. Může si pak prohlédnout přeložený program a lépe porozumět funkci příkazů, o něž má hlubší zájem. Programátor používající jazyk MX COBOL potřebuje při své práci jen základní znalosti operačního systému. Minimálně by však měl být obeznámen s hierarchickou strukturou adresářů souborů a příkazem cd pro přechod z jednoho adresáře do druhého. Rovněž si musí osvojit práci s některým editorem, pomocí něhož bude vytvářet a upravovat své COBOLské programy. Autoři překladače žádají uživatele, aby jakákoliv reklamace na správnou činnost překladače obsahovala výpis COBOLského programu (pokud možno, co nejmenšího), vykazujícího reklamovanou chybu a dále výpisy obou částí přeloženého programu s příponami .c a .d. Příkazy COPY uvnitř programu by neměly obsahovat klauzuli SUPPRESS. Neměl by chybět co nejpřesnější popis situace, při níž chyba vzniká. Reklamující uživatel by neměl zapomenout uvést svou adresu, aby bylo možno získat od něho ještě dodatečné informace a případně ho informovat o vyřízení reklamace. Poznámka: Je-li třeba v některém příkladu v této příručce speciálně vyznačit, že výsledný obsah naplňované položky (většinou alfanumerické) obsahuje mezery, píšeme místo nich malé písmeno b. (Má-li se např. vyjádřit, že čtyřznaková alfanumerická položka obsahuje znaky AB ohraničené z obou stran mezerami, napíše se bABb.) 1. ZÁKLADNÍ POJMY JAZYKA 1.1. Syntaktické formáty Slova a symboly, které se vyskytují v syntaktických formátech, lze rozdělit do těchto tří skupin: 1) Rezervovaná slova, což jsou anglická slova zapisovaná ve formátech velkými písmeny. Jsou určena definicí jazyka a mají pevný, předem daný význam. Je nutno je zapisovat přesně v tom tvaru a na tom místě, jak jsou uvedena ve formátu. Je-li rezervované slovo ve formátu podtrženo, je jeho zápis povinný (pokud ovšem programátor vůbec zapisuje tu klauzuli, v níž je toto slovo použito). Není-li rezervované slovo ve formátu podtrženo, může je programátor zapsat anebo vynechat, přičemž zápis ani vynechání nijak neovlivní význam klauzule resp. příkazu. 2) Programátorská slova, což jsou česká slova zapisovaná ve formátech malými písmeny. Programátorské slovo je vlastně společný název určité skupiny zápisů určitého typu. Na to místo, kde je ve formátu uvedeno některé programátorské slovo, musí programátor ve zdrojovém programu zapsat právě jeden přípustný zápis, který odpovídá tomuto programátorskému slovu. Programátorská slova se ve formátech sice nepodtrhují, přesto však je tento zápis povinný. 3) Ostatní symboly použité ve formátech (čísla, apostrofy, závorky, aritmetické a relační operátory, tečky apod.) se sice ve formátech většinou nepodtrhují, přesto však je programátor musí povinně zapsat do zdrojového programu (zapisuje-li tu klauzuli, která je obsahuje). Poznámka: V MX COBOLu je přípustné zvolit programátorské slovo (např. jméno položky, souboru, procedury apod.) shodné s kterýmkoliv rezervovaným slovem. Při dvojí možné interpretaci se předpokládá, že se jedná o rezervované slovo. Upozorňujeme však, že v některých jiných implementacích jazyka COBOL je shoda programátorského a rezervovaného slova zakázána. { } Oba typy složených závorek mají týž význam. Používají se - - ve formátech na těch místech, kde musí programátor | | zvolit jednu z uvedených možností. Typ složené závorky < > je volen podle toho, který způsob zápisu je | | přehlednější. Ve velké složené závorce jsou jednotlivá - - slova nebo klauzule, z nichž programátor vybírá, uvedena pod sebou. V malé složené závorce jsou jednotlivé možnosti uvedeny vedle sebe, navzájem odděleny znakem |. Často se též ve formátu vyskytuje ve svorkových závorkách jediná klauzule; bývá to tehdy, následují-li za pravou svorkovou závorkou tři tečky označující možnost opakování klauzule. [ ] Je-li v hranatých závorkách uvedeno jedno slovo resp. - - klauzule, může je programátor do zdrojového programu | | zapsat anebo nezapsat. Uvedením resp. vynecháním se | | většinou mění význam příslušné klauzule resp. příkazu; - - jedná se tedy o jejich volitelné varianty. Je-li v hranatých závorkách uvedeno několik slov resp. klauzulí, programátor buďto může do zdrojového programu zapsat jedno z nich, anebo může celý tento zápis vynechat. Ve velkých závorkách se jednotlivé možnosti uvádějí pod sebou; v malých vedle sebe, přičemž jednotlivé možnosti jsou odděleny znakem |. ... Tři tečky ve formátu označují, že to, co stojí bezprostředně vlevo od nich, se může (obecně v neomezeném počtu) opakovat. Před třemi tečkami může stát programátorské slovo - pak je možné zapsat jeden nebo několik přípustných zápisů odpovídajících tomuto programátorskému slovu za sebou, přičemž tyto zápisy mohou být pochopitelně různé. Je-li bezprostředně před třemi tečkami pravá hranatá nebo svorková závorka, najdeme k ní nejprve odpovídající levou závorku; pak je možné jednou nebo několikrát opakovat celý obsah této závorky, přičemž u hranatých závorek lze též celý tento zápis vynechat a neuvést ani jedno opakování. . Je-li ve formátu uvedena tečka, musí být na tomto místě ve formátu povinně zapsána. Přitom tečka nesmí být zapsána tam, kde není uvedena ve formátu ani povolena jiným pravidlem této příručky. 1.2. Množina znaků jazyka Zdrojový cobolský program je tvořen posloupností znaků v kódu ASCII, mezi nimiž zaujímá zvláštní místo znak "nový řádek" (hexadecimálně 0A, v jazyku C '\n'), jenž rozděluje zdrojový program na zdrojové řádky. První zdrojový řádek sahá od začátku zdrojového programu po první znak "nový řádek", druhý zdrojový řádek sahá od prvního znaku "nový řádek" po druhý znak "nový řádek" atd., až poslední zdrojový řádek sahá od posledního znaku "nový řádek" do konce zdrojového programu. Samotné znaky "nový řádek" se nepočítají do žádného zdrojového řádku. Délka žádného zdrojového řádku nesmí převýšit 255 bytů. V alfanumerických literálech, v libovolných řetězcích a ve zbytku zdrojového řádku za ampersandem & zahajujícím poznámkovou část zdrojového řádku lze používat všech 255 možných bitových kombinací pro každý znak (s jedinou výjimkou znaku "nový řádek"); stejně je tomu při štítkovém formátu zdrojových řádků i v 1.-6. sloupci a počínaje 73. sloupcem každého zdrojového řádku (tzv. pořadové číslo a poznámkové pole). Mimo tyto případy lze v jazyce MX COBOL používat tyto znaky: a) velká písmena: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z malá písmena: a b c d e f g h i j k l m n o p q r s t u v w x y z b) dekadické číslice (cifry): 0 1 2 3 4 5 6 7 8 9 c) speciální znaky: . tečka $ měnový symbol , čárka + aritmetický operátor plus ; středník - pomlčka, aritm. operátor minus ( levá závorka * hvězdička, aritm. operátor krát ) pravá závorka / lomítko, aritm. operátor děleno ' apostrof = rovnítko, relační operátor "rovno" " uvozovky < relační operátor "menší než" # dvojitý kříž > relační operátor "větší než" & ampersand d) mezery a tabelátory. Poznámka: V reservovaných slovech, ve jménech objektů (mimo jméno programu v paragrafu PROGRAM-ID, systémové jméno v klausuli SELECT, externí jméno v příkazu CALL a jméno kopírovaného zdroje v pseudopříkazu COPY), v numerických literálech (v exponenciálním zápisu) a ve vzorech v klausulích PICTURE (s výjimkou znaku za Y resp. y) se malá písmena považují za rovnocenná s odpovídajícími velkými písmeny a jsou na ně převáděna. Lze tedy psát MOVE nebo move nebo Move nebo mOvE atd., položku lze pojmenovat alfa a pak ji odkazovat pod jménem ALFA nebo Alfa (nebo obráceně; přitom v chybových hlášeních a jiných protokolech budou vždy změněna všechna malá písmena na velká), numerický literál lze psát 1.2E8 nebo 1.2e8, PIC S999V99 je ekvivalentní s PIC s999v99, PIC BBBZZZ9CR je ekvivalentní s PIC bbbzzz9cr. Malá písmena se však nemění na velká v alfanumerických literálech (tedy 'abc' se nemění na 'ABC') a ve výše uvedených výjimečných jménech (která jsou předávána operačnímu systému a proto nejsou měněna).