Adresář položek Každému objektu (položce, podmínkovému jménu, speciálnímu indexu, souboru, třídicímu souboru, komunikační oblasti nebo sestavě) z DATA DIVISION je věnován jeden řádek adresáře (při více než osmi referencích několik řádků) s tímto obsahem: a) Číslo úrovně položky (CU); nejedná se však o číslo úrovně položky uvedené v jejím popisu, ale o "upravené" číslo úrovně rovné počtu položek nadřízených k naší položce zvětšenému o 1: ve zdrojovém programu v protokolu (adresáři) --------------------------------------------------------- 01 A. 01 A ... 05 B. 02 B ... 08 C PIC XXX. 03 C ... 08 D PIC 999. 03 D ... 04 E. 02 E ... 09 F PIC 99. 03 F ... 09 G PIC XX. 03 G ... U souboru se na místě čísla úrovně vypisuje FD, u třídicího souboru SD, u komunikační oblasti CD a u sestavy RD. Čísla úrovně 66, 77 a 88 se uvádějí shodně s popisy ve zdrojovém programu. U speciálního indexu se číslo úrovně nevypisuje. b) Jméno položky (JMENO). Má-li jméno položky resp. speciálního indexu více než 15 znaků, vypisují se všechny další údaje až na následující řádek protokolu. c) Relativní adresa prvního bytu položky vzhledem k začátku jí nadřízené položky s číslem úrovně 01 (ve FILE SECTION a v LINKAGE SECTION) resp. k začátku úseku paměti přiděleného WORKING-STORAGE SECTION (ve WORKING-STORAGE SECTION, v COMMUNICATION SECTION a u položek definovaných překladačem) resp. k začátku úseku paměti přiděleného REPORT SECTION (v REPORT SECTION) (ADRESA). Jedná-li se o položku s proměnnou adresou (tj. ležící v téže struktuře za položkou s klauzulí OCCURS DEPENDING), odpovídá vypsaná relativní adresa situaci, kdy všechny celočíselné položky uvedené za příslušnými slovy DEPENDING mají hodnotu é. U položek s indexy (tj. "pod OCCURSem") se relativní adresa týká položky se všemi indexy rovnými 1. U speciálního indexu se zde vypisuje pořadové číslo speciálního indexu v rámci zdrojového programu (počínaje od 0, tzn. 0,1,2,3,...). Poznámka: Má-li položka uvedenu v protokolu relativní adresu m, má výraz jazyka C vyjadřující ukazatel na její první byte tvar F[n].r01+m resp. L[n]+m resp. W+m resp. R+m (podle toho, ve které sekci je položka popsána). Má-li speciální index uvedeno na místě relativní adresy číslo m, je mu přidělen "long" S[m]. d) Typ položky (TYP). Jsou tyto možnosti: GR ... skupinová položka AN ... alfanumerická položka AE ... alfanumerická editovaná položka DI ... numerická rozpakovaná položka PA ... numerická pakovaná položka (s USAGE COMP-3) BI ... numerická binární položka (s USAGE COMP) EK ... exponenciální krátká položka (s USAGE COMP-1) ED ... exponenciální dlouhá položka (s USAGE COMP-2) EZ ... exponenciální znaková položka NE ... numerická editovaná položka UI ... položka s USAGE INDEX SI ... speciální index e) Délka položky (DEL) v dekadickém tvaru. Jedná-li se o položku s proměnnou délkou, vypisuje se její "minimální" délka odpovídající situaci, kdy všechny celočíselné položky uvedené za příslušnými slovy DEPENDING mají hodnotu 0. f) Pořadové číslo zdrojového řádku, na kterém začíná popis objektu (DEFN). g) Čísla zdrojových řádků, na nichž je objekt použit (REFERENCE); při uvedení kvalifikace se vypisuje pořadové číslo toho řádku, jenž obsahuje první slovo kvalifikace. Neevidují se použití objektu v klauzulích REDEFINES, ASCENDING/DESCENDING a REPORT, ani jeho použití v roli kvalifikátoru, evidují se však použití objektu v roli indexu. Poznámky: 1) Informace o speciálních indexech se v adresáři vypisují stejně jako u položek, chybí u nich jen číslo úrovně (CU). Na místě relativní adresy je pořadové číslo (viz výše), délka speciálního indexu je vždy 4 byty. 2) Z položek definovaných překladačem (viz 4.11.) se v adresáři objeví pouze položky TALLY, NSTD-REELS, WHEN-COMPILED, SORT-FILE-SIZE, SORT-CORE-SIZE, SORT-MODE-SIZE a SORT-RETURN (tyto položky mají přidělenu paměť na konci WORKING-STORAGE SECTION, na místě pořadového čísla zdrojového řádku DEFN se u nich uvádí 0000) a dále položky PRINT-SWITCH, CBL-CTR, LINE-COUNTER a PAGE-COUNTER (tyto položky mají přidělenu paměť v rámci REPORT SECTION a na místě DEFN se u nich uvádí číslo řádku pro příslušnou sestavu RD, pouze u položky PRINT-SWITCH se na místě DEFN uvádí 9999). 3) V adresáři se vypisují též informace o souborech, třídicích souborech, komunikačních oblastech, sestavách a podmínkových jménech. Tiskne se nich vždy pouze FD, SD, CD, RD resp. 88 na místě čísla úrovně CU, JMENO, DEFN a REFERENCE; údaje ADRESA, TYP a DEL budou neobsazené. 4) V rámci REPORT SECTION se vypisují též informace o pomocných položkách, které si definuje Generátor sestav pro své vnitřní účely. Jejich jména vždy začínají znakem podtrhovátko (_). 5) Objekty se v adresáři vypisují v tom pořadí, v němž jsou popsány ve zdrojovém programu. 6) Není-li uveden parametr CBL USXREF, vypisují se informace o všech objektech z DATA DIVISION nezávisle na tom, zda jsou nebo nejsou někde použity. Je-li uveden parametr CBL USXREF, vypisují se informace pouze o těch objektech, které jsou alespoň jednou použity (tj. pro něž je alespoň jedna reference), zatímco řádky pro nepoužité objekty ( mezi něž vždy patří všechny FILLERy a všechny bezejmenné položky) se vynechávají. Protokol o syntaktických chybách Protokol o syntaktických chybách obsahuje pro každou syntaktickou chybu informaci tvaru radek rrrr: chyba nnnn zavaznosti z (vysvětlující text) a) "rrrr" je číslo zdrojového řádku, na němž byla nalezena syntaktická chyba (tj. jejž překladač zpracovával, když chybu zjistil). Někdy (např. při vynechané tečce) se může chyba hlásit i s číslem následujícího řádku. U chyb nalezených v rámci zpracovávání objektu z DATA DIVISION (položky, speciálního indexu, podmínkového jména, souboru atd.) bude "rrrr" číslo zdrojového řádku pro první slovo kvalifikace. U většiny ostatních chyb nalezených v rámci některého příkazu bude "rrrr" číslo zdrojového řádku pro první slovo příkazu; výjimkou jsou chyby zjištěné čtecím programem překladače a některé další chyby (nepřípustné slovo apod.), u nichž bude "rrrr" vždy aktuální číslo zdrojového řádku. b) "nnnn" je čtyřciferné číslo chyby, které může být použito pro vyhledání případných doplňujících informací v přehledu syntaktických chyb (viz kapitolu ???). c) Kód závažnosti chyby "z". Jsou tyto možnosti: 0 - Upozornění. Zdrojový program je sice syntakticky správný, je však použito nějakého neobvyklého obratu, který bude mít možná jiný účinek, než jaký programátor zamýšlel. Programátor by si měl označené místo důkladně prohlédnout a ujistit se, zda skutečně zmíněného obratu chtěl použít. Namísto "chyba nnnn" se v případě závažnosti 0 vypisuje "upozornění nnnn". (Pomocí parametru CBL FLAGE může uživatel vypisování všech upozornění s kódem závažnosti 0 potlačit.) 1 - Mírná chyba v syntaxi, kterou se překladač pokusil opravit, takže ve většině případů může výpočet proběhnout dle záměrů programátora. 2 - Vážná chyba v syntaxi. Překladač buďto ignoruje celou právě překládanou klauzuli resp. příkaz anebo je překládá chybně. Výpočet by pravděpodobně nemohl proběhnout dle záměrů programátora, proto bude po dosažení konce zdrojového cobolského programu překlad ukončen a nebude již vyvolán překladač jazyka C, takže nevzniká žádný spustitelný program. 3 - Velmi vážná chyba v syntaxi anebo přeplnění některé z pracovních oblastí překladače. Překlad se okamžitě ukončí a vypíše se pouze protokol o dosud nalezených syntaktických chybách. d) Za kódem závažnosti "z" následuje v závorkách vysvětlující text, jenž může obsahovat vložený proměnný úsek textu a v případě potřeby může pokračovat i na dalších řádcích. Protokol o syntaktických chybách je ukončen řádkem "Pocet chyb: pppp, pocet upozorneni: qqqq", kde pppp je celkový počet syntaktických chyb a qqqq je celkový počet upozornění. Poznámka: Překladač zpracovává zdrojový cobolský program slovo za slovem. Syntaktickou chybu hlásí na takové načtené slovo, po jehož načtení již neexistuje možnost, aby toto místo bylo syntakticky správné, zatímco před jeho načtení tato možnost ještě existovala. Překladač pak buďto zpracovávanou klauzuli resp. příkaz ignoruje (a čte další slova naprázdno bez hlášení chyby až do nejbližšího přijatelného slova), nebo se je pokusí opravit. Některé syntaktické chyby lze ovšem identifikovat až po zpracování určitého delšího úseku zdrojového programu. Syntaktická chyba má někdy za následek vznik tzv. "zavlečených" syntaktických chyb v následujících (byť správných) příkazech a klauzulích. Např. vynechání povinného slova v klauzuli nebo příkazu může způsobit, že se místo něj vezme první slovo následující klauzule resp. příkazu (např. při zápisu "ADD 1 TO MOVE A TO B"). Rovněž se může stát, že při vážné chybě v popisu položky (resp. souboru atd.) budou prohlášeny za chybné všechny klauzule a příkazy, v nichž se tento objekt používá. Je proto vhodné prohlížet protokol o syntaktických chybách zásadně v tom pořadí, v jakém je vytisknut, a u nejasných syntaktických chyb se podívat, zda nemohou být způsobeny reakcí překladače na předcházející syntaktické chyby. Poznámka: Nezávisle na tom, zda je nebo není zadán přepínač -g, vytváří překladač soubor obsahující protokol o syntaktických chybách; jeho jméno vznikne ze jména zdrojového cobolského programu náhradou přípony cb příponou f. Při zadání přepínače -g bude tento soubor xxxxx.f zařazen i do souboru xxxxx.g obsahujícího protokol o překladu. 2.4. Omezení rozsahu překládaných programů Jako každý programový produkt má i překladač MX COBOL jistá kapacitní omezení. Omezení se týkají jednak velikosti zdrojových programů, které mají být přeloženy a pak (což už není přímo záležitost MX COBOLu) omezení vztahovaná na rozměry, které bude v konečné fázi mít výsledný program. Prakticky nejvážnějším omezením překládaného zdrojového programu je dáno tím, že adresář překladače, tj. souhrn informací o položkách, které jsou deklarovány v oddílu DATA DIVISION je ukládán do paměti, kde je pro tyto účely vyhrazen prostor maximálně 64 KB, což vzhledem k průměrné délce položky představuje kapacitu asi pro 1800 položek. Omezení pro výsledný program v binárním tvaru vyplývají z koncepce pracovat v paměťovém modelu LARGE. Tento paměťový model je vhodný (jak uvádí literatura) pro tvorbu velmi rozsáhlých aplikací (proto byl také zvolen) a připouští, aby do výsledného binárního tvaru bylo spojeno více separátně překládaných programů, přičemž ovšem žádný z nich nesmí mít v textovém segmentu více instrukcí než kolik se vejde do 64 KB. Protože oddíl PROCEDURE DIVISION představuje náplň tohoto textového segmentu a protože je překládán jako jediná funkce _(), vyplývá z toho závěr, že v oddílu PROCEDURE žádného překládaného programu nesmí být více zdrojových příkazů, než kolik lze přeložit do max. 64 KB instrukcí. Tuto značně mlhavou definici bohužel nelze blíže kvantifikovat, neboť paměťové požadavky jednotlivých překládaných příkazů z oddílu PROCEDUR jsou velmi rozdílné a těžko hledat nějaký závazný průměr. Nicméně pro uživatele z faktu omezení velikosti funkce _() vyplývá důsledek, že při jakýchkoliv potížích, vzniklých z neúměrné velikosti oddílu PROCEDURE se tento neduh dá odstranit rozdělením programu na několik samostatně překládaných a pak spojených částí. Jde pochopitelně o omezení, které může natropit mnohé nepříjemnosti, ale bohužel není v silách překladače tomu zabránit, neboť je to omezení vyplývající z konstrukce překladačů jazyka C, na kterých je MX COBOL závislý. Celkem nesmí kód programu teoreticky přesáhnout 1 Mb, avšak prakticky je omezujícím faktorem velikost paměti zmenšená o délku jádra operačního systému MS-DOS, velikost rezidentních programů (drivery) a paměť zabranou položkami z DATA DIVISION. Pokud se pro překlad cobolského programu použije parametr -t, pak se oddíl PROCEDURE DIVISION nepřekládá jako jediná funkce _(), nýbrž překladač se snaží rozčlenit tento oddíl do dílčích funkcí, z nichž každá vlastně reprezentuje jeden paragraf zdrojového cobolského programu. Tento způsob překladu, který je z hlediska výsledného kódu v jazyce C o něco méně efektivní, lze však aplikovat pouze na paragrafy, které neobsahují příkaz PERFORM. Zkušenosti zatím ukazují, že tímto způsobem lze přeložit programy, které jsou skoro dvojnásobné oproti těm, které již nelze překládat standardním způsobem bez parametru -t. Uvedený odhad je pouze přibližný, neboť kapacitní možnosti překladače TURBO C závisí jistě na několika různých faktorech, například na složitosti příkazů apod. Pokud se týče omezení rozsahu oddílu DATA DIVISION je nejmarkantnějším omezením požadavek na maximální délku WORKING-STORAGE. Položky této sekce se překládají jako jediné znakové pole a proto zde existuje omezení délky na 64 KB. K požadavkům položek z WORKING-STORAGE musíme ovšem přičíst i položky, které vzniknou při použití REPORT SECTION. Paměťový prostor pro WORKING-STORAGE a REPORT SECTION se vyhrazuje již v okamžiku překladu a zabírá místo v sestaveném programu. Celkový paměťový nárok všech položek ze všech sekcí WORKING-STORAGE a REPORT všech spojených programů nesmí být větší než 64 KB. Pro položky úrovně 01 z FILE SECTION se paměťový prostor vyhrazuje dynamicky teprve v okamžiku otevření souboru, po uzavření se přidělená paměť opět uvolňuje. Rovněž žádná z 01 ve FILE SECTION nesmí hranici 64 KB přesáhnout. Položky úrovně 01 z LINKAGE SECTION, ať už je jim paměť přidělena jakýmkoliv přípustným způsobem, nesmí být delší než 64 KB. Pokud se bude WORKING-STORAGE jevit jako nepřípustně dlouhá (ohlásí to až překladač jazyka C), lze přeřadit některé položky úrovně 01 do LINKAGE SECTION a paměť jim přidělovat dynamicky z oblasti volné paměti pomocí podprogramu ICVIRG. Celkem tedy nesmí být v sestaveném programu více dat, než kolik se vejde do 64 KB. MX COBOL umožňuje uživateli současně otevřít až 255 souborů v každém spustitelném programu, počítaje v to ovšem i 5 souborů systémových (standardní vstup, výstup, ...). Nakonec tedy pro uživatele zůstane hranice 250 uživatelských souborů, které smí být současně otevřeny. 3. LADÍCÍ PROSTŘEDKY *3 Základním ladícím prostředkem překladače MX COBOL je tzv. animátor. Dovoluje sledování průběhu programu tím, že je uživateli u terminálu promítán zdrojový tvar té části programu, kde se výpočet právě nachází. Uživatel má možnost průběžně sledovat hodnoty vybraných položek a krokovat výpočet po jednotlivých zdrojových řádcích. Možné je rovněž nastavení stopadresy. Předpokladem pro vyžití animace je to, aby zdrojové programy byly přeloženy s přepínačem -a. Překladač pak do přeloženého programu zařadí volání animátoru a zajistí, že do výsledného programu budou začleněny příslušné animační funkce. Program s animátorem je proto vždy delší než program přeložený bez animátoru. Je proto vhodné po ukončení ladění program znovu přeložit, tentokrát již bez přepínače -a. Při spuštění programu přeloženého s požadavkem na animaci je animátor automaticky aktivován, uživatel si pak další průběh výpočtu řídí sám. Práce s animátorem předpokládá aktivní spolupráci uživatele, který musí mít znalosti o ovládání animátoru. Seznámíme se nyní s formátem stínítka tak, jak ho animátor pro svoji činnost ustavuje. Dá se schematicky popsat následujícím obrázkem: Program: XXXXX.CB --- Radek: nnn -I------ MX COBOL Animator . . . . část, kde jsou vidět zdrojové řádky . -> . (kurzor animátoru na aktivním řádku) . . -- Ukaz --------------------------------------------------- část pro zobrazování hodnot položek (i prázdná) ------------------------------------------------------------ pred rok sto

di em kaz br.uziv kone Na prvním řádku je vidět jméno zdrojového souboru, programu, jehož obsah je právě zobrazován, v místě označeném "nnn" je průběžně zobrazováno číslo řádku, na kterém stojí kurzor. Za číslem řádku je indikátor režimu opravování nebo zadávání textu. Je-li vidět velké písmeno I, je nastaven režim vkládání nových znaků (Insert), je-li místo I vidět mezera je nastaven režim přepisování znaků. Volit mezi režimy lze při práci v systému MS-DOS, přepínání se děje stisknutím tlačítka Ins. Dalších až 19 řádků se používá na zobrazení zdrojových řádků v té části programu, kde právě probíhá výpočet. Kurzor animátoru je tvořen znaky => a je nastaven na ten řádek zdrojového programu, který se má právě teď provést. Část nadepsaná "Ukaz" slouží k průběžnému zobrazování hodnot položek, které si přeje uživatel mít na očích po celou dobu animace. Nejvýš lze sledovat hodnoty pěti položek. Pro každou ze sledovaných položek je zabrán jeden řádek na stínítku, o který je pak ochuzena část pro zobrazování řádků zdrojového programu. Poslední řádek stínítka obsahuje nápovědu, obsahující stručné informace o příkazech, které smí uživatel animátoru zadat. Příkazy animátoru se zadávají stisknutím uvedených kláves, tj. kláves V, K, P, J, S, U, O a C. Kromě toho lze používat tlačítka pro posuv kurzoru stínítka (tedy ne kurzoru animátoru), kterými jsou šipka nahoru, dolů, vlevo a vpravo. Posunete-li kurzor stínítka až na nejhořejší řádek, (tj. na 2. řádek) a znovu stisknete klávesu šipka nahoru, změní se obsah této části stínítka tak, že uvidíte předcházející zdrojový řádek, který na stínítku doposud vidět nebyl a současně se všechny doposud zobrazované řádky posunou směrem dolů, přičemž nejspodnější zobrazovaný zdrojový řádek zmizí. Podobně při posuvu kurzoru směrem dolů se zobrazují další a další řádky zdrojového programu, přičemž řádky v horní části současně mizí. Říká se také, že obrazovka roluje směrem nahoru resp. dolů. Průběh programu pod řízením animátoru začíná tím, že se na stínítko obrazovky promítne okolí řádku, na kterém výpočet začíná (tedy někde těsně za PROCEDURE DIVISION) a na něj se také nastaví kurzor animátoru. Řádek, na který míří kurzor animátoru se jmenuje aktuální řádek. Další průběh výpočtu je pak řízen samotným uživatelem. Stisknete-li klávesu V (příkaz pred) nebo klávesu K (příkaz rok), provedou se všechny příkazy na aktuálním řádku a kurzor animátoru se nastaví na řádek, který dynamicky následuje. Tedy nikoliv vždy na v pořadí následující řádek (i když tomu tak dost často bude), ale na řádek, kam směřuje výpočet (např. při skoku příkazem GO TO). Je-li ovšem na aktuálním řádku uveden příkaz CALL, který vyvolává cobolský podprogram rovněž připravený pro činnost animátoru, tak se příkazů V a K liší. Příkaz K si obsahu podprogramu nevšímá a pokračuje dál v hlavním programu, zatímco příkaz V způsobí, že se na stínítku začnou zobrazovat zdrojové řádky podprogramu a sice počínaje tím řádkem, na který se skočilo (ENTRY). Uživatel má tedy možnost sledovat průběh výpočtu i v rámci podprogramu. Po návratu z podprogramu (GOBACK) se na stínítku opět objeví zdrojové řádky hlavního programu a bude se pokračovat za příkazem CALL. Uživatel tady má volbu, zda při animaci chce procházet daným podprogramem volaným příkazem CALL nebo zda jej již pokládá za odladěný a průběh výpočtu v něm sledovat nechce. Stisknete-li klávesu P (příkaz sto

), tak na řádku, na kterém právě stojí kurzor stínítka, nastavíte tzv. stopadresu. Ta se projeví tím, že výpočet se při dosažení řádku, na kterém je stopadresa, automaticky zastaví a další průběh výpočtu řídí ručně uživatel. Přítomnost stopadresy je na řádku indikována písmenem P v první pozici. Stopadresu lze zrušit tak, že pro daný řádek se stopadresou tuto stopadresu zadáme znovu, písmeno P zmizí a s ním i stopadresa. Příkaz P se používá ruku v ruce s příkazem J (di), kterým se ruší ruční řízení a přechází se na běžný automatický způsob provádění programu. Ten trvá buď do konce programu nebo do okamžiku, kdy se při výpočtu narazí na stopadresu a přejde se opět na ruční řízení. Stisknete-li klávesu S (příkaz em), rozeběhne se výpočet bez možnosti zásahu uživatele a to tak dlouho, dokud se nedostane na řádek, na kterém stál kurzor stínítka (pozor ne kurzor animátoru -> !), nebo na kterém je zadána stopadresa. Tento příkaz se používá tehdy, když chcete rychle projít určitou částí programu, kterou pokládáte za odladěnou a jejíž průběh nehodláte sledovat. Předem ovšem musíte nastavit kurzor stínítka tam, kde se má rozeběhnutý výpočet zastavit a odkud budete mít opět možnost sledovat průběh programu podrobně po jednotlivých řádcích. Stisknete-li klávesu U (příkaz kaz) a dosud jste příkaz Ukaz nevydali, zabere se část stínítka pro zdrojové řádky a zřídí se část pro zobrazování hodnot položek. Kurzor stínítka se nastaví na začátek volného řádku v této oblasti a uživatel nyní zadá jméno položky, jejíž obsah si přeje sledovat (vstup ukončí klávesou Enter). U položky nelze zadat indexy ani kvalifikaci. Od tohoto okamžiku je hodnota této položky průběžně na daném řádku v části Ukaz zobrazována a uživatel může z jejích změn usuzovat na správnost nebo závadnost průběhu programu. Musí ovšem jít zpravidla o nějakou položku, která má rozhodující vliv na chod programu, např. řídicí položky cyklu, přepínače atp. Položku, která je po dobu běhu programu prakticky konstantní, pochopitelně není potřeba sledovat. Zadáte-li příkaz Ukaz a máte-li již některé položky zobrazené, máte možnost nejen zadat novou položku, ale můžete i opravit jména již zadaných položek nebo některou položku ze zobrazování vyřadit. Těsně po zadání je kurzor nastaven na začátek volného řádku, kam můžete zapsat nové jméno položky nebo je-li oblast již zaplněna, tak na první obsazený řádek této části stínítka. Pomocí kláves pro přesun kurzoru se můžete dostat na některé z dříve zadaných jmen a opravit je. Při opravě lze kurzor posouvat vpravo vlevo a nastavit jej na znak, který chcete přepsat. Pro zrušení znaku se použije klávesa BS nebo DEL. Zadáte-li jméno neexistující položky, bude jako její hodnota zobrazena trojicí otazníků (???). Chcete-li jméno zrušit přepište jeho první znak mezerou, jméno ze stínítka zmizí a část určená pro zobrazování hodnot položek se o řádek zmenší. Pokud jste zrušili poslední jméno, zmizí tato část zcela. Stisknete-li klávesu O (příkaz br.uziv) dojde ke změně scény na stínítku, zmizí obrázek vytvořený animátorem a objeví se původní systémová obrazovka. Na ní jsou dost často údaje, které je nutno při ladění sledovat a kontrolovat. Jedná se zejména o výstupy příkazů DISPLAY a EXHIBIT, z jejichž tvaru lze usuzovat na zdárnost či závadnost běhu programu. Návrat zpět do animátoru se provede v okamžiku, kdy uživatel stiskne libovolnou abc klávesu. Přepnutí těchto dvou obrazovek lze provést libovolněkrát. Dojde-li běh programu až k příkazu STOP RUN, a provede-li se, je program ukončen, formát stínítka pro animátor zmizí a objeví se standardní systémový formát stínítka. Chcete-li program ukončit předčasně, stiskněte dvakrát po sobě klávesu C (příkaz Kone) a animátor okamžitě prováděný program ukončí. Pro opětovné zahájení práce animátoru je potřeba znovu spustit laděný program. V operačním systému MS-DOS lze jednotlivé příkazy pro animátor zadávat rovněž způsobem, který je kompatibilní s obsluhou programu Turbo Debugger. Možné alternativy pro zadání řídících příkazů uvádí následující tabulka: ---------------------------------------------------------- | příkaz | klávesa | příkaz | klávesa | |--------------|------------|-------------|--------------| | pred | F7 | rok | F8 | | sto

| F2 | di | F9 | | em | F4 | kaz | Ctrl-F7 | | br.uziv | Alt-F5 | kone | Alt-x | ---------------------------------------------------------- 4. POMOCNÉ PROGRAMY 4.1. BLDIND - vytvoření indexů Program BLDIND je samostatně spustitelný program, s jehož pomocí lze vytvořit pro datový soubor libovolný sekundární, ale také primární index. Volání programu má následující formát: BLDIND data index 0DRSW rl klc kln Parametr data je jméno datového souboru, ke kterému se má vytvářet nějaký index. Tento soubor musí pochopitelně existovat. Parametr index je jméno souboru, ve kterém bude zřízen žádaný index. Pokud soubor existuje, pak se bez náhrady přepíše, pokud neexistuje, pak bude vytvořen. Parametr podivného tvaru 0DRSW je určen k zadávání dalších požadavků, které mají být při vytváření indexu programem BLDIND uplatněny. Jako parametr lze uvést buď číslici 0, což znamená, že žádné další požadavky nejsou uplatňovány nebo kombinaci písmen D R S W. Jednotlivá písmena mají tento význam: D - vytvářený index má povolovat duplicitní klíče, R - hodnota klíče se má při práci s tímto indexem bitově reverzovat, S - tento index má být označen jako sekundární, V - věty datového souboru mají proměnnou délku, tj. první dva byty každé věty obsahují její délku. Parametr rl udává délku věty souboru data. Má-li soubor pevnou délku věty, musí být parametr rl celým kladným číslem, pro soubor s proměnnou délkou věty musí být parametr rl roven nule. Parametr klc udává pozici klíčového pole vzhledem k začátku věty, počítáno od nuly. Začíná-li například klíčové pole od začátku věty (tedy od 1.bytu), je parametr klc roven nule, začíná-li například od 15.bytu, je parametr klc roven 14. Parametr kln udává délku klíčového pole v bytech. Příklad: BLDIND knihy.dat autor.in0 D 1024 6 32 V souboru autor.in0 vytvoří primární index (resp. indexovou nadstavbu pro primární index) k souboru knihy.dat. V primárním indexu jsou povoleny duplicitní hodnoty primárního klíče, věta je dlouhá 1024 bytů, klíč začíná od 7. bytu a klíčové pole je 32 bytů dlouhé.