Obsah
COBOL (Common Business-Oriented Language)
COBOL je imperativní, procedurální a od roku 2002 i objektově orientovaný programovací jazyk. Byl vytvořen v roce 1959 na popud amerického ministerstva obrany pod vedením Grace Hopperové. Jeho cílem bylo vytvořit jazyk, který se blíží přirozené angličtině a je čitelný i pro manažery, nikoliv jen pro programátory.
Hlavní charakteristiky
- Užvaněnost (Verbosity): COBOL používá velmi dlouhou syntaxi plnou anglických slov (např. místo symbolu
+se používá slovoADD). - Zpracování dat: Je excelentní v hromadném zpracování dat a v přesné desítkové aritmetice (např. při výpočtech úroků v bankách), kde by běžná binární aritmetika mohla způsobit chyby v zaokrouhlování.
- Struktura: Programy jsou pevně rozděleny do čtyř „divizí“ (Divisions), což zajišťuje přísnou organizaci kódu.
Struktura programu
Každý program v COBOLu musí obsahovat tyto části: 1. Identification Division: Název programu a informace o autorovi. 2. Environment Division: Specifikace počítače a souborů, se kterými program pracuje. 3. Data Division: Definice všech proměnných a datových struktur. 4. Procedure Division: Samotná logika programu (výpočty, podmínky).
Příklad kódu:
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, World!'. STOP RUN.
Proč je stále důležitý?
Možná vás překvapí, že i v roce 2025 COBOL stále „řídí svět“:
- Bankovnictví: Odhaduje se, že přes 70 % všech bankovních transakcí na světě stále zpracovávají programy v COBOLu.
- Mainframy: Jazyk běží na obřích sálových počítačích (Mainframes), především od společnosti IBM, které jsou extrémně spolehlivé.
- Obrovský objem kódu: Existují stovky miliard řádků kódu v COBOLu. Přepisování do moderních jazyků (Java, Python) je extrémně drahé a rizikové.
Výhody a nevýhody
Výhody:
- Škálovatelnost: Dokáže efektivně zpracovat miliony záznamů najednou.
- Čitelnost: Díky anglické syntaxi je snadné pochopit, co program dělá (pokud znáte anglicky).
- Dlouhověkost: Kód napsaný před 40 lety obvykle bez problémů funguje i na dnešních systémech.
Nevýhody:
- Nedostatek expertů: Většina programátorů COBOLu odchází do důchodu a mladí programátoři se jazyk nechtějí učit.
- Pomalý vývoj: Psaní kódu v COBOLu je zdlouhavé ve srovnání s moderními jazyky.
- Izolovanost: Těžko se integruje s moderními webovými a cloudovými službami bez speciálních nástrojů.
Problém roku 2000 (Y2K)
COBOL byl v centru pozornosti před rokem 2000. Staré programy šetřily pamětí a ukládaly rok pouze jako dvě cifry (např. 98). Hrozilo, že v roce 2000 počítače „uvidí“ rok 00 jako 1900, což by zhroutilo bankovní systémy. Díky obrovskému úsilí programátorů byla většina chyb opravena včas.
Struktura a vývoj programu
Deklarace dat v COBOLu
Data jsou v COBOLu definována v DATA DIVISION pomocí hierarchické struktury úrovní (level numbers).
01 definuje hlavní záznam. 05-49 definují podřízené položky (skupinové nebo elementární). 77 se používá pro nezávislé proměnné. 88 definuje podmíněné názvy (Condition Names) pro testování hodnot.
Základy Procedure Division
Tato sekce obsahuje spustitelný kód. Program začíná v PROCEDURE DIVISION. Příkazy se seskupují do odstavců (paragraphs) nebo sekcí. Logika se ukončuje příkazem STOP RUN nebo GOBACK.
Řídicí struktury: Větvení
Výběr je realizován pomocí konstruktu IF-THEN-ELSE.
Syntax: IF podmínka THEN ... ELSE ... END-IF.
Pro vícepodmínkové rozhodování se používá EVALUATE (obdoba switch/case v jiných jazycích).
Řídicí struktury: Iterace
Iterace probíhá primárně přes PERFORM.
PERFORM paragraph UNTIL podmínka.
PERFORM VARYING i FROM 1 BY 1 UNTIL i > 10 … END-PERFORM.
Úvod do sekvenčních souborů
Sekvenční soubory se definují v ENVIRONMENT DIVISION (asociace s fyzickým souborem) a DATA DIVISION (popis struktury záznamu - FD file description).
Pokročilé sekvenční soubory
Práce s blokováním (blocking) záznamů, definování klíčů a práce s více soubory současně pomocí OPEN, READ, WRITE a CLOSE.
Kapitola 9: Formátování výstupu (Edited Pictures)
COBOL umožňuje formátování výstupu přímo v definici dat pomocí PICTURE (masky). Například PIC $ZZ,ZZ9.99 automaticky přidá měnu, čárky a potlačí úvodní nuly.
Zpracování sekvenčních souborů
Standardní algoritmus zpracování sekvenčního souboru:
Otevření souboru. READ prvního záznamu. Smyčka PERFORM UNTIL konec souboru (EOF). Zpracování a READ dalšího záznamu. Zavření souboru.
Vytváření tabulkových dat
Tabulky (pole) se vytvářejí pomocí klauzule OCCURS. 05 ZAMESTNANEC-PLAT PIC 9(6) OCCURS 12 TIMES. (tabulka 12 měsíčních platů).
Kapitola 12: Pokročilá deklarace dat
Využití REDEFINES pro interpretaci stejného místa v paměti různými datovými typy a JUSTIFIED RIGHT pro specifické zarovnání textových řetězců.
Vyhledávání v tabulkách
Prohledávání tabulek se provádí pomocí příkazu SEARCH (lineární hledání) nebo SEARCH ALL (binární hledání, vyžaduje seřazená data a klauzuli ASCENDING/DESCENDING KEY).
Třídění a slučování (Sorting and Merging)
COBOL má vestavěný výkonný mechanismus pro třídění: SORT soubor-vstup ON ASCENDING KEY klíč USING vstup GIVING vystup.
Manipulace s řetězci
Pokročilé operace s textem pomocí příkazů:
STRING: Spojování více řetězců do jednoho. UNSTRING: Rozdělení řetězce na části podle oddělovače. INSPECT: Nahrazování znaků nebo počítání výskytů v řetězci.
Související pojmy: Mainframe, Grace Hopper, Legacy systém, Y2K, Algol, Fortran.
