Čevela MX COBOL Practice Compiler - cvičný kompilátor Cobol

Individuální licence pro účastníka školení Cobol u firmy ČEVELA programátorské služby COBOL - verze 2.10 - srpen 2002 - kontakt: cevelavl@vol.cz

Jedná se o svého času velice úspěšný kompilátor, původně vyvinutý v KS Brno v rámci operačních systémů DOS EC dodávaných VÚMS Praha, pro počítače RVHP řady EC1021-EC1027, EC1045 a další. Poslední verze kompilátoru pak byla pod označením MX COBOL převedena do prostředí UNIX, resp. DOS. V roce 1994 byla práva na výhradní šíření i další rozvoj zakoupena firmou Čevela a postupně bylo realizováno rozšíření o možnost práce s indexovými soubory v síti, provedeny některé další potřebné úpravy, a doplněno využívání objektového generátoru zdrojových textů. Úspěšně byl použit pro převod i značně rozsáhlých projektů z EC na PC, velice dobře se v něm tvoří drobnější programy, ale především poskytuje vynikající nástroj k nácviku programování a myšlení v klasickém "Mainframe Cobolu". Pracuje v 16-bitovém prostředí DOS i v příkazovém režimu 32-bitového prostředí Windows NT/95 - ve vyšších Windows zatím nebyl důsledně ověřován.

Podstatnou vlastností cvičného kompilátoru MX COBOL je, že nepřekládá do žádného spustitelného ani vnitřního tvaru, ale do zdrojového textu v jazyku C - optimalizováno pro Borland Turbo C 2.0. Tato koncepce tedy vyžaduje další zpracování některým kompilátorem C (do vyčerpání zásob možno po dohodě dodat Borland Turbo C 2.0) nebo C++, ale přináší i zajímavou možnost zařazení úseků v jazyku C přímo do zdrojového textu COBOL.

Cvičný kompilátor MX COBOL má sice některé vlastnosti ANSI 85 a dokonce též ISO/IEC 2002, ale obecně nedosahuje nyní běžné výkonnosti ani spolehlivosti a v současné době pro něj není poskytována podpora pro případnou údržbu či další rozvoj. Proto k němu nelze poskytnout obvyklé garance, není určen k realizaci profesionálních aplikací a dodáván je pouze jako doplněk k firemnímu školení pro řešení cvičných příkladů.

Vzhledem k rozsahu dokumentace, která měla v původní tištěné formě pro EC(JSEP) přes 1000 stran, a již ukončenému vývoji, nebylo únosné detailně upravovat jednotlivé kapitoly, takže dále souhrnně uvádíme některá známá omezení a nedostatky i s příp. možnostmi řešení - ale mohou se vyskytnout i další. Obecně tedy nelze zaručit, že kompilátor skutečně má všechny vlastnosti, detailně uváděné v dokumentaci.

Fungující vlastnosti MX COBOL:

Všechny příkazy jazyka Cobol dle ANSI-74, včetně "initialize", "end-if" a "end-perform" dle ANSI-85 a "screen section" dle ISO/IEC 2002 kromě vyjímek, specifikovaných dále.

Kompilátor vytvoří protokol a překladu s referencemi i výpisem případných chyb a vygeneruje výsledné zdrojové texty v jazyku C. (viz kapitoly v závěru této dokumentace).

Problematické vlastnosti MX COBOL:

Kompilátor MX COBOL je nastaven na práci s kompilátorem Borland Torbo C 2.0 a rovněž vygenerovaný zdrojový text C odpovídá vlastnostem této verze. Při použití jiného kompilátoru pro jazyk C, případně C++ si musí uživatel příslušné nastavení cest, spouštění atd. zajistit sám a rovněž ošetřit případnou nekompatibilitu zdrojů v jazyku C.

Vzhledem ke koncepci práce s překladačem C je velikost zdrojového programu COBOL omezena. Toto omezení není možno přesně definovat, ale hranice bývá cca 700 až 900 řádků zdrojového textu. Větší programy lze rozdělit na několik podprogramů, volaných příkazem "call", ale počítá se pouze se statickým linkování, t.j. již v čase překladu.

Při používání podmínkových jmen úrovně 88 může někdy nastat jejich chybné vyhodnocování v "procedure division". Tyto chyby lze vyloučit, jejich uváděním v závorkách např.:

                1   KOD pic 99.
                 88  PRIJEM value 31 32 33 34 35.
                 88  VYDEJ  value 41 42 43 44 45.
                ...
                    if (PRIJEM) ... else
                    if (VYDEJ) ... .
  

Při složitějším vícenásobném větvení "if" (cca 10 a více podmínek) může někdy dojít k ignorování posledních dotazů. Nezbývá, než souvislé podmínky přerušit tečkou, anebo využít možnost pokračování přes "perform".

Mohou vzniknout problémy při prvním vytváření a hned následném zpracovávání indexového souboru v jednom programu. Proto je vhodné indexové soubory vytvářet sekvenčním výstupem a indexy doplnit dodatečně služebním programem BLDIND. Problémy se mohou též vyskytnout při použití sekundárních klíčů. S vyjímkou textového souboru "line sequential" nelze počítat ani se spolehlivou funkcí variabilních formátů vět.

Některé systémové podprogramy "ICxxx" nefungují.

V případě zde neuvedených problémů, je možno e-mailem požádat o nezávazné doporučení k jejich řešení nebo obejití, pokud bude reálně možné. Vzhledem k zastavení vývoje však nelze řešit žádné úpravy či opravy chyb v kompilátoru, takže základem individuální licence je, že kompilátor MX COBOL je poskytován k použití pouze ve stavu "tak jak je" !

Obsah jednotlivých kapitol dokumentace


Uznání .COB1 -
Úvod .
.
1. ZÁKLADNÍ POJMY JAZYKA .
1.1. Syntaktické formáty .
1.2. Množina znaků jazyka .
1.3. Literály .COB2 -
1.3.1. Numerické literály .
1.3.2. Alfanumerické literály .
1.4. Jméno položky .COB3 -
1.5. Položka .
1.6. Figurativní konstanty .
1.7. ALL-klauzule .
1.8. Externí jméno .
1.9. Libovolný řetězec .
1.10. Pravidla interpunkce .
1.11. Formát zdrojového programu .COB4 -
1.12. Struktura zdrojového programu .

2. IDENTIFICATION DIVISION .ID -

3. ENVIRONMENT DIVISION .ED1 -
3.1. SPECIAL-NAMES .
3.1.1. Klauzule DECIMAL-POINT .
3.1.2. Klauzule CURRENCY SIGN .
3.1.2.A. Klauzule CURSOR .
3.1.2.B. Klauzule CRT STATUS .
3.1.3. Definice speciálních jmen .
3.2. Soubory dat v MX COBOLu .
3.2.1. Logická věta, blok, soubor dat .
3.2.2. Tabulka souboru .
3.2.3. Fyzické zařízení .
3.3. INPUT-OUTPUT SECTION .ED2 -
3.4. Paragraf FILE-CONTROL .
3.4.1. Formát klauzule SELECT .
3.4.2. Klauzule ASSIGN .
3.4.3. Systémové jméno, organizace souboru .
3.4.4. Klauzule ACCESS, přístupové metody .
3.4.5. Klauzule ORGANIZATION .ED3 -
3.4.6. Klauzule RELATIVE KEY .
3.4.7. Klauzule NOMINAL KEY .
3.4.8. Klauzule RECORD KEY .
3.4.9. Klauzule FILE STATUS .
3.5. Paragraf I-O-CONTROL .
3.5.1. Klauzule RERUN .
3.5.2. Klauzule SAME .
3.5.3. Klauzule MULTIPLE .
3.5.4. Klauzule APPLY WRITE-VERIFY .
3.5.5. Klauzule APPLY EXTENDED-SEARCH .
3.5.6. Klauzule APPLY CYL-OVERFLOW .
3.5.7. Klauzule APPLY BLOCK-DENSITY .
3.5.8. Klauzule APPLY CORE-INDEX .
3.5.9. Klauzule APPLY CYL-INDEX a MASTER-INDEX .
3.5.10. Klauzule APPLY WRITE-ONLY .
3.5.11. Klauzule APPLY DUPLICATE-KEY .
3.5.12. Klauzule APPLY FIXED-ADDRESS .
3.5.13. Klauzule APPLY FILE-ID .

4. DATA DIVISION .DD1 -
.
4.1. Podřízenost položek .
4.2. Kvalifikace .
4.3. Indexování .
4.4. FILE SECTION .DD2 -
4.4.1. Formát klauzule FD .
4.4.2. Klauzule RECORDING .
4.4.3. Klauzule RECORD .
4.4.4. Klauzule VALUE OF FILE-ID .
4.4.5. Klauzule LINAGE .
4.4.6. Klauzule REPORT .DD3 -
4.4.7. Použití pracovní oblasti .
4.5. Popis položky .
4.5.1. Číslo úrovně a jméno položky .
4.5.2. Klauzule REDEFINES .
4.5.3. Klauzule PICTURE .DD4 -
A) Alfanumerická položka .
B) Alfanumerická editovaná položka .
C1) Numerická položka s pevnou řádovou tečkou .
C2) Exponenciální znaková položka .DD5 -
C3) Numerická editovaná položka .DD6 -
4.5.4. Klauzule BLANK .DD7 -
4.5.5. Klauzule USAGE .
4.5.6. Klauzule JUSTIFIED .DD8 -
4.5.7. Klauzule SYNCHRONIZED .
4.5.8. Klauzule VALUE .
4.5.9. Klauzule OCCURS .
4.5.9.1. Klauzule DEPENDING .
4.5.9.2. Klauzule ASCENDING/DESCENDING .DD9 -
4.5.9.3. Klauzule INDEXED .
4.5.10. Klauzule SIGN .
4.5.11. Klauzule ENTRY .
4.5.12. Klauzule EXTRN .
4.6. Podmínkové jméno .DD10 -
4.7. Číslo úrovně 66, klauzule RENAMES .
4.8. WORKING-STORAGE SECTION .
4.9. LINKAGE SECTION .
4.10. Výplňkové byty .DD11 -
4.11. Položky definované překladačem .
4.11.1. Soubor MXCOMREG.COB .

5. PROCEDURE DIVISION .PD -
5.1. Členění PROCEDURE DIVISION .
5.2. Odkazy na procedury .
5.3. Aritmetický výraz .
5.4. Podmíněný výraz .PD-IF -
5.4.1. Relační test .
5.4.2. Znaménkový test .
5.4.3. Test NUMERIC .
5.4.4. Test ALPHABETIC .
5.4.5. Test podmínkového jména .
5.4.6. Test UPSI-bytu .
5.4.7. Složený podmíněný výraz .
5.4.8. Zamlčené levé operandy a relační operátory .
5.5. Deklarativní sekce .USE-PD -
5.5.1. Deklarativní sekce pro zpracování návěští .
5.5.2. Dekl. sekce k ošetření chyb vstupu/výstupu .
5.5.3. Deklarativní sekce pro Generátor sestav .
5.6. Příkaz NOTE .NOTE -

6. PŘESUNY A ARITMETICKÉ PŘÍKAZY .MOVE -
6.1. Příkaz MOVE .
6.2. Příkaz STRING .STRING -
6.3. Příkaz UNSTRING .UNSTRING -
6.4. Společné vlastnosti aritmetických příkazů .PD-ARITM -
6.5. Příkaz COMPUTE .COMPUTE -
6.6. Příkaz ADD .ADD -
6.7. Příkaz SUBTRACT .SUBTRACT -
6.8. Příkaz MULTIPLY .MULTIPLY -
6.9. Příkaz DIVIDE .DIVIDE -
6.10. Formát mezivýsledků aritmetických příkazů .COMPUTE -
6.11. Příkazy s klauzulí CORRESPONDING .PD-CORR -
6.12. Příkaz INITIALIZE .INITIALI -

7. PŘÍKAZY PRO VĚTVENÍ PROGRAMU .IF-ON -
7.1. Příkaz IF .
7.2. Příkaz ON .
7.3. Činnost příkazů IF a ON .
7.4. Příkaz GO .GO -
7.5. Příkaz ALTER .ALTER -
7.6. Příkaz PERFORM .PERFORM -

8. PŘÍKAZY PRO PRÁCI SE SOUBORY .PD-SB -
8.1. Příkaz OPEN .OPEN -
8.2. Příkaz READ .READ -
8.3. Příkazy WRITE, REWRITE a DELETE .W-R-D -
8.4. Příkaz START .START -
8.5. Příkaz SEEK .SEEK -
8.6. Příkaz CLOSE .CLOSE -
8.7. Zpracování sekvenčního souboru .PD-SS -
8.7.1. Vytvoření sekvenčního souboru .
8.7.2. Čtení a opravování sekvenčního souboru .
8.8. Zpracování relativního souboru .PD-RS -
8.8.1. Vytvoření relativního souboru .
8.8.2. Sekvenční zpracování relativního souboru .
8.8.3. Přímé zpracování relativního souboru .
8.9. Zpracování indexového souboru .PD-IS -
8.9.1. Vytvoření indexového souboru .
8.9.2. Sekvenční čtení indexového souboru .
8.9.3. Přímé zpracování indexového souboru .
8.9.4. Zpracování index. souboru s ACCESS DYNAMIC .

9. POMOCNÉ VSTUPY A VÝSTUPY .PD -
9.1. Pomocné soubory .
9.2. Příkaz DISPLAY .DISPL2 -
9.3. Příkaz EXHIBIT .EXHIBIT -
9.4. Příkaz ACCEPT .ACCEPT-1 -
9.5. Příkaz STOP .STOP -
9.6. Příkaz READY .READY -
9.7. Příkaz RESET .RESET -

10. TRANSFORM, EXAMINE, UFO, UFD A INSPECT .TRANSFOR -
10.1. Příkaz TRANSFORM .
10.2. Příkaz EXAMINE .EXAMINE -
10.3. Příkazy UFO a UFD .UFO -
10.4. Příkaz INSPECT .INSPECT -

11. PŘÍKAZY PRO SPOJOVÁNÍ PROGRAMU .PD-SPOJ -
11.1. Příkaz CALL .CALL -
11.2. Příkaz ENTRY .ENTRY -
11.3. Příkaz GOBACK .GOBACK -
11.4. Příkaz EXIT .EXIT -
11.5. Předávání řízení v COBOLu .PD-SPOJ -
11.6. Vzájemné vyvolávání podprogramů .
11.7. PROCEDURE DIVISION USING .PD-USING -
11.8. Příkaz FETCH .FETCH -
11.9. Příkaz LOAD .LOAD -

12. ZPRACOVÁNÍ TABULEK .SET -
12.1. Příkaz SET .
12.2. Příkaz SEARCH .SEARCH -

13. GENERÁTOR SESTAV .RS1 -
13.1. Základní informace .
13.2. Položky definované Generátorem sestav rs2 .RS2 -
13.2.1. PAGE-COUNTER .
13.2.2. LINE-COUNTER .
13.2.3. PRINT-SWITCH .
13.2.4. CBL-CTR .
13.3. Výstupní soubor sestavy .
13.4. Klauzule RD .
13.4.1. Klauzule CONTROL .
13.4.2. Klauzule PAGE .RS3 -
13.4.3. Klauzule CODE .
13.5. Popis skupiny sestavy .RS4 -
13.5.1. Klauzule TYPE .
13.5.2. Klauzule LINE .RS5 -
13.5.3. Klauzule NEXT GROUP .
13.5.4. Klauzule COLUMN .RS6 -
13.5.5. Klauzule VALUE .
13.5.6. Klauzule SOURCE .
13.5.7. Klauzule SUM .
13.5.8. Klauzule RESET .RS7 -
13.5.9. Klauzule GROUP .
13.5.10. Klauzule SHIFT .
13.6. Příkazy pro zpracování sestavy .
13.6.1. Příkaz INITIATE .INITIATE -
13.6.2. Příkaz GENERATE .GENERATE -
13.6.3. Příkaz TERMINATE .TERMINAT -
13.6.4. Příkaz SUPPRESS .SUPPRESS -
13.7. Deklarativní sekce pro Generátor sestav .USE-R -

14. TŘÍDĚNÍ .TRIDENI -
14.1. Úvodní informace .
14.2. Klauzule SD .
14.3. Třídicí klíče .
14.4. Vstup log. vět do třídění, příkaz RELEASE .RELEASE -
14.5. Výstup log. vět ze třídění, příkaz RETURN .RETURN -
14.6. Příkaz SORT .SORT -
14.7. Příkaz MERGE .MERGE -
14.8. Realizace příkazů SORT a MERGE trideni .TRIDENI -
14.9. Položky pro třídění definované překladačem .
14.10. Klauzule RERUN .
14.11. Třídění vět proměnných délek .

15. PŘÍKAZY COPY A REPLACE .COPY -
15.1. Příkaz COPY .
15.2. Příkaz REPLACE .REPLACE -

16. PARAMETRY CBL .PREKLAD -
16.1. Parametr CBL QUOTE .
16.3. Parametr CBL NOMUL .
16.4. Parametr CBL TRUNC .
16.7. Parametr CBL CALL .
16.8. Parametr CBL FLAGE .
16.9. Parametr CBL TALLY .
16.10. Parametr CBL AFTER .
16.14. Parametry CBL DEBUG a CBL NODEBUG .
16.15. Parametry CBL CZECH a CBL ENGLISH .
16.17. Parametr CBL SUM .
16.19. Parametr CBL BEG .
16.20. Parametr CBL TABELn .
16.21. Parametr ALIGN .
16.22. Parametr READY .
16.23. Parametr CBL USXREF .
16.24. Parametr CBL ZDROJ .

16.1-16.24 Zkrácený prac. přehled parametrů CBL .CBL-PAR -

17.UŽIVATELSKÉ PODPROGRAMY .PD-IC -
17.1. ICHEXA .ICHEXA -
17.4. ICUGETV .ICUGETV -
17.5. ICUFREE .ICUFREE -
17.7. ICUNPKB .ICUNPKB -
17.8. ICPACKB .ICPACKB -
17.14. Elementární (matematické) funkce .FCE-EM -
17.15. ICMVC .ICMVC -
17.18. ICMOVEX .ICMOVEX -
17.19. ICVIRG .ICVIRG -
17.20. ICVIRF .ICVIRF -
17.21. Třídění v paměti (ICSORT, ICSORTM, ICSORTP) .ICSORT -
17.24. ICGEN .ICGEN -
17.26. ICIDENT .ICIDENT -
17.31. ICVOLNY .ICVOLNY -
17.34. ICTIMEB .ICTIMEB -

18. OBRAZOVKOVÝ REŽIM .SS -
18.1. SCREEN SECTION .
18.1.1. Klauzule AUTO .
18.1.2. Klauzule BACKGROUND-COLOR .
18.1.3. Klauzule BELL .
18.1.4. Klauzule BLANK .
18.1.5. Klauzule BLANK WHEN ZERO .
18.1.6. Klauzule BLINK .
18.1.7. Klauzule COLUMN .
18.1.8. Klauzule FOREGROUND-COLOR .
18.1.9. Klauzule FULL .
18.1.10. Klauzule GRID .
18.1.11. Klauzule HIGHLIGHT .
18.1.12. Klauzule JUSTIFIED .
18.1.13. Klauzule LEFTLINE .
18.1.14. Klauzule LINE .
18.1.15. Klauzule OCCURS .
18.1.16. Klauzule OVERLINE .
18.1.17. Klauzule PICTURE .
18.1.18. Klauzule PROMPT .
18.1.19. Klauzule REQUIRED .
18.1.20. Klauzule REVERSE-VIDEO .
18.1.21. Klauzule SECURE .
18.1.22. Klauzule SIGN .
18.1.23. Klauzule SIZE .
18.1.24. Klauzule UNDERLINE .
18.1.25. Klauzule VALUE .
18.1.26. Klauzule ZERO-FILL .
18.2. Obrazovkové formáty příkazu ACCEPT .ACCEPT -
18.3. Obrazovkové formáty příkazu DISPLAY .DISPL1 -
18.4. Podprog. pro řízení obrazovky a klávesnice .FCE-KBSC -
18.4.1. ICPUTCH .ICPUTCH -
18.4.2. ICGETCH .ICGETCH -
18.4.3. ICSCTRL .ICSCTRL -
18.4.4. ICFUNKY .ICFUNKY -
18.4.5. ICSCRIO .ICSCRIO -
18.4.6. ICKBHIT .ICKBHIT -
18.4.7. ICGSIZE .ICGSIZE -
18.4.8. ICCLRSCR .ICCLRSCR -
18.4.9. ICSOUND .ICSOUND -
18.4.10. ICGOTOXY .ICGOTOXY -

Popis ovládání kompilátoru MX Cobol
-----------------------------------
Úvod .OVL1 -

1. Instalace MX COBOL .
1.1. Průběh instalace .
1.2. Konfigurační soubor pro MX COBOL .
1.3. Konfigurační soubor pro TURBO C .
2. Překlad a sestavení cobolských programů .
2.1. Proces překladu a sestavení cob. programu .
2.2. Driver MXC .OVL2 -
2.3. Protokol o překladu .
Protokol o zdrojovém programu .
Adresář položek .OVL3 -
Protokol o syntaktických chybách .
2.4. Omezení rozsahu překládaných programů .
3. Ladící prostředky .
4. Pomocné programy .
4.1. BLDIND - vytvoření indexů .

Date 2006-03-21 - Text Builder 0.65 - Time 11:16:34