18.2. Obrazovkové formáty příkazu ACCEPT Příkazy ACCEPT formátu 5 a 6, které jsou popisovány v tomto odstavci, dávají programátorovi větší možnosti pro práci s obrazovkou než příkazy ACCEPT formátu 1 až 4, které jsou popisovány v kapitole 9. Jsou však použitelné jen pod systémem MS DOS. Příkazy popsané v kapitole 9 fungují jak pod systémem MS DOS, tak i pod systémem UNIX. Příkaz ACCEPT formátu 5 a 6 čte z klávesnice do zadané položky, přičemž se používá obrazovkový režim. Formát 5 pracuje s obrazovkovou položkou, která musí být definována ve SCREEN SECTION, formát 6 pracuje s položkou, která může být definována ve FILE, WORKING-STORAGE nebo LINKAGE SECTION. Oba formáty obsahují klauzuli AT, která určuje pozici, na které bude položka na obrazovce umístěna. Formát 6 obsahuje klauzuli WITH, která uvádí požadavky na průběh příkazu ACCEPT, jenž se shodují s klauzulemi v popisu obrazovkové položky. Formát 5: ACCEPT obrazovková-položka - - - - | | AT [ LINE NUMBER {položka-1|celé-číslo-1} ] | | | | [ {COLUMN|COL} NUMBER {položka-2|celé-číslo-2} ] | | | < > | | | | | | | AT {položka-3 | celé-číslo-3} | | - - - - Formát 6: ACCEPT položka-1 - - - - | | AT [ LINE NUMBER {položka-2|celé-číslo-1} ] | | | | [ {COLUMN|COL} NUMBER {položka-3|celé-číslo-2} ] | | | < > | | | | | | | AT {položka-4 | celé-číslo-3} | | - - - - [ FROM CRT] [ MODE IS BLOCK ] - - - - | | {AUTO | AUTO-SKIP} | | | | {BELL | BEEP} | | | | BLINK | | | | {FULL | LENGTH-CHECK} | | | | GRID | | | | HIGHLIGHT | | | | LEFTLINE | | | | OVERLINE | | | | PROMPT [CHARACTER IS {položka-5 | literál-1}]| | | | {REQUIRED | EMPTY-CHECK} | | | | REVERSE-VIDEO | | | | {SECURE | NO-ECHO} | | |WITH < SIZE IS {položka-6 | celé-číslo-4} > | | | UNDERLINE | | | | {FOREGROUND-COLOR | FOREGROUND-COLOUR} IS | | | | celé-číslo-5 | | | | {BACKGROUND-COLOR | BACKGROUND-COLOUR} IS | | | | celé-číslo-6 | | | | LEFT-JUSTIFY | | | | RIGHT-JUSTIFY | | | | SPACE-FILL | | | | TRAILING-SIGN | | | | UPDATE | | | | ZERO-FILL | | - - - - Pravidla pro formát 5: 1) Je-li obrazovková položka uvedená za slovem ACCEPT elementární, pak příkaz ACCEPT pracuje pouze s touto položkou. Je-li položka skupinová, pak příkaz ACCEPT pracuje s jejími podřízenými elementárními položkami a to s těmi, které představují vstupní nebo opravné pole. 2) Klauzule AT určuje počáteční pozici obrazovkové položky na obrazovce, od které se určuje umístění jednotlivých elementárních obrazovkových položek. Je možné zadat přímo číslo řádku případně i číslo sloupce nebo obě hodnoty zadat jako hodnotu položky-3 nebo jako celé-číslo-3. Položka-3 musí mít klauzuli PIC 9(4) nebo PIC 9(6), celé-číslo-3 musí být čtyř nebo šesti ciferné. Je-li údaj čtyř ciferný, první dvě cifry označují číslo řádku a druhé dvě cifry označují číslo sloupce. Je-li údaj šesti ciferný, první tři cifry označují číslo řádku, druhé tři cifry označují číslo sloupce. 3) Je-li číslo řádku a současně číslo sloupce rovno nule, pak je počáteční pozice pro příkaz ACCEPT stanovena jako bezprostředně následující vzhledem k pozici, na které skončil svoji činnost předcházející příkaz ACCEPT formátu 5 nebo 6. 4) Je-li číslo řádku rovno nule a číslo sloupce je nenulové, pak řádek počáteční pozice pro příkaz ACCEPT bezprostředně následuje za řádkem, na kterém skončil svoji činnost předcházející příkaz ACCEPT formátu 5 nebo 6. 5) Je-li číslo sloupce rovno nule a číslo řádku je nenulové, pak sloupec počáteční pozice pro příkaz ACCEPT bezprostředně následuje za sloupcem, na kterém skončil svoji činnost předcházející příkaz ACCEPT formátu 5 nebo 6. 6) Pokud číslo sloupce ukazuje mimo obrazovku, provede se jeho úprava modulo délka řádku a číslo řádku se patřičně upraví. 7) Číslo řádku nesmí být větší než je celkový počet řádků na obrazovce, jinak dojde k násilnému ukončení příkazu ACCEPT. 8) Není-li zadána klauzule AT, pak je počáteční pozice určena řádkem 1 a sloupcem 1. Pravidla pro formát 6: 1) Položka-1 uvedená za slovem ACCEPT (budeme ji dále nazývat hlavní položka) musí být skupinová, alfanumerická, alfanumerická editovaná, numerická rozpakovaná, exponenciální znaková nebo numerická editovaná; nesmí tedy mít USAGE jiné než DISPLAY. 2) Za touto položkou musí následovat alespoň jedna z klauzulí AT, FROM CRT, MODE nebo WITH, které určují obrazovkový formát příkazu ACCEPT. 3) Klauzule AT má ve druhém formátu stejný význam jako v prvním formátu, kde je popsána. 4) Klauzule FROM CRT určuje, že příkaz ACCEPT má pracovat v obrazovkovém režimu a to i v případě, že není uvedena žádná z klauzulí AT, MODE ani WITH. 5) Klauzule MODE určuje, že s položkou-1 bude příkaz ACCEPT pracovat tak, jako by to byla elementární položka. 6) Klauzule WITH uvádí požadavky na průběh příkazu ACCEPT, které se významem a použitím shodují s klauzulemi v popisu obrazovkové položky. Její dílčí klauzule jsou při provádění příkazu ACCEPT uplatněny u všech elementárních položek, se kterými příkaz ACCEPT pracuje. 7) Klauzule UPDATE požaduje zobrazení počátečního obsahu položky předtím, než operátor začne zadávat vstupní data. 8) Klauzule LEFT-JUSTIFY, RIGHT-JUSTIFY, SPACE-FILL, ZERO-FILL a TRAILING-SIGN jsou pouze poznámkové. 9) Je-li položka uvedená za slovem ACCEPT skupinová položka, a není-li uvedena klauzule MODE, pak bude možno z klávesnice naplňovat nikoliv tuto skupinovou položku jako celek, nýbrž pouze ty její podřízené elementární položky, které - mají jméno jiné než FILLER a současně - nemají klauzuli REDEFINES ani nejsou podřízeny takové položce s klauzulí REDEFINES, která by byla sama podřízena položce uvedené za ACCEPT, a současně - nemají číslo úrovně 66 a současně - nemají USAGE jiné než DISPLAY. Takovéto podřízené elementární položky budeme zde nazývat vybrané podřízené položky. Každé vybrané podřízené položce přísluší úsek stínítka určený stejně jako u "obrazovkového" příkazu DISPLAY: jeho začátek je od místa určeného argumentem uvedeným za AT vzdálen právě o vzdálenost začátku této podřízené položky od začátku položky uvedené za slovem ACCEPT. Takto přidělený úsek stínítka smí přecházet z řádku na řádek, nesmí však zasahovat za konec stínítka. Do tohoto úseku stínítka bude nastaven kurzor při naplňování této položky a rovněž v případě zobrazování obsahu této položky (viz dále) bude tento obsah zobrazován do tohoto úseku stínítka. Ostatní podřízené elementární položky jsou při činnosti tohoto příkazu ACCEPT ignorovány; nemohou tedy být naplňovány a nebudou zobrazovány na stínítku. Není-li takováto vyloučená položka spojena pomocí klauzule REDEFINES s některou vybranou položkou, nebude během provádění příkazu ACCEPT změněna, kurzor nebude nikdy nastaven do úseku stínítka, který jí odpovídá, přičemž tento úsek stínítka bude během celého provádění příkazu ACCEPT zobrazovat tytéž znaky jako na začátku provádění tohoto příkazu ACCEPT. (Totéž platí i pro případné výplňkové byty.) Skupinová položka uvedená za slovem ACCEPT smí mít klauzuli REDEFINES nebo být podřízena položce s klauzulí REDEFINES, smí mít i indexy. Její délka smí být pevná nebo proměnná, všechny její vybrané podřízené elementární položky by však měly padnout dovnitř stínítka, jinak bude činnost příkazu ACCEPT ukončena s indikací chyby. Mezi vybranými podřízenými elementárními položkami smí být i položky s klauzulí OCCURS (i OCCURS DEPENDING a rovněž i vícerozměrné tabulky); bude existovat takový pevný nebo proměnný počet vybraných položek, jak to odpovídá klauzulím OCCURS. 10) Je-li za slovem ACCEPT uvedena elementární položka, nesmí mít jiné USAGE než DISPLAY, smí však mít klauzuli REDEFINES nebo být podřízena položce s klauzulí REDEFINES a rovněž smí mít číslo úrovně 66. Tato položka bude považována za jedinou vybranou položku a bude jí přidělen úsek stínítka určený pomocí klauzule AT. (Postupuje se stejně, jako kdyby se jednalo o skupinovou položku s jedinou podřízenou položkou.) Příkaz ACCEPT bude tedy naplňovat právě tuto elementární položku. Činnost příkazu ACCEPT: 1) Příkaz ACCEPT na začátku své činnosti (ani nikdy později) nemaže celou obrazovku, nýbrž na obrazovce zůstávají zobrazeny tytéž znaky jako před začátkem provádění příkazu ACCEPT. (Očekává se, že před příkazem ACCEPT provede uživatel "obrazovkový" příkaz DISPLAY, jímž nastaví stínítko tak, jak to bude vhodné pro operátora při naplňování vybraných položek při provádění příkazu ACCEPT.) 2) Příkaz ACCEPT na začátku své činnosti zobrazí počáteční hodnoty položek, které buď představují opravné pole nebo je pro ně uvedena klauzule UPDATE. Počáteční hodnota položek, které představují vstupní pole, bude zobrazena tak, jako by pro položku byla uvedena klauzule FROM SPACE nebo FROM ZERO podle typu položky. Dále příkaz ACCEPT nastaví kurzor následujícím způsobem: Není-li ve SPECIAL-NAMES uvedena klauzule "CURSOR IS položka", bude kurzor nastaven na první byte úseku stínítka odpovídajícího první vybrané položce. Je-li ve SPECIAL-NAMES uvedena klauzule "CURSOR IS položka", bude kurzor nastaven na ten znak stínítka, jenž odpovídá hodnotě položky uvedené v této klauzuli (dále ji nazývejme CURSOR-položka) - platí zde přesně stejná pravidla jako pro položku uvedenou za slovem AT. Pokud však hodnota CURSOR-položky určuje znak stínítka ležící mimo všechny úseky odpovídající vybraným položkám (tedy např. do úseku odpovídajícího vyloučené položce nebo před začátek úseku odpovídajícího hlavní položce), bude kurzor nastaven na začátek nejblíže následujícího takového úseku. Pokud má CURSOR-položka nulovou hodnotu nebo ukazuje až za poslední z těchto úseků, bude kurzor nastaven na začátek úseku stínítka odpovídajícího první vybrané položce). Po úvodním vystavení kurzoru se výpočet přeruší a operátor nyní může zadávat obsah té vybrané položky, do jejíhož úseku stínítka ukazuje kurzor. 3) Při zadávání obsahu vybrané položky smí operátor zadávat datové znaky (jsou to všechny tisknutelné znaky, tzn. znaky s ASCII-kódem hexadecimálně 20-7E, tedy malá a velká písmena, číslice, interpunkční znaky atd.) a používat následující řídící klávesy: - klávesy pro posun kurzoru (šipka vpravo, šipka vlevo, šipka dolů, šipka nahoru), - klávesu "zpět o znak" (BS), - klávesu "zruš znak" (DEL), - klávesu horizontální tabelátor (HT), - klávesu "návrat vozu" neboli ENTER (CR), - klávesu "nový řádek" (LF), - klávesu ESCAPE (ESC). Datové znaky se zobrazí vždy na tom bytu stínítka, na němž právě stojí kurzor, načež se kurzor automaticky posune o jednu pozici vpravo. 4) Klávesa pro posun kurzoru vpravo se používá pro změnu polohy kurzoru uvnitř úseku stínítka odpovídajícího vybrané položce o jeden znak vpravo. Stiskne-li operátor tuto klávesu v okamžiku, kdy kurzor ukazuje na poslední byte vybrané položky, je zpracování této vybrané položky ukončeno (viz dále) a kurzor se přesune na první byte následující vybrané položky (všechny vyloučené položky popsané mezi nimi se přeskočí). (Za následující vybranou položku k poslední vybrané položce se považuje první vybraná položka - přejde se tedy na její začátek.) 5) Klávesa pro posun kurzoru vlevo se používá pro změnu polohy kurzoru uvnitř úseku stínítka odpovídajícího vybrané položce o jeden znak vlevo. Stiskne-li operátor tuto klávesu v okamžiku, kdy kurzor ukazuje na první byte vybrané položky, je zpracování této vybrané položky ukončeno (viz dále) a kurzor se přesune na poslední byte předcházející vybrané položky (všechny vyloučené položky popsané mezi nimi se přeskočí). (Za předcházející vybranou položku k první vybrané položce se považuje poslední vybraná položka - přejde se tedy na její konec.) 6) Klávesa pro posun kurzoru dolů ukončí zpracování právě zpracovávané vybrané položky a přesune kurzor na první byte následující vybrané položky. (Téhož účinku lze dosáhnout i pomocí několika šipek vpravo; šipka dolů však účinkuje rychleji.) 7) Klávesa pro posun kurzoru nahoru ukončí zpracovávání právě zpracovávané vybrané položky a přesune kurzor na první byte předcházející vybrané položky. (Téhož účinku lze dosáhnout i pomocí několika šipek vlevo; šipka nahoru však účinkuje rychleji.) 8) Při zadávání hodnoty pro určitou vybranou položku postupuje uživatel tak, že do úseku stínítka odpovídajícího položce nejdříve nechá (jakýmkoliv způsobem) nastavit kurzor, zadá v něm žádný, jeden nebo několik datových znaků a pak zpracování této položky ukončí některým z dále popsaných způsobů. Jednu a touž vybranou položku smí v rámci jednoho provádění příkazu ACCEPT zpracovat i vícekrát (přičemž každé takové zpracování je nezávislé na předcházejících zpracováních), některé položky přitom nemusí zpracovat vůbec. 9) Při zadávání hodnot do vybraných položek se rozlišují dva režimy práce. První z nich se nazývá volný formát, druhý pevný formát. Režim práce se určuje pro každou zpracovávanou položku zvlášť. (I v případě, že je v rámci jednoho provádění příkazu ACCEPT táž položka zpracovávána opakovaně, mohou být používány různé formáty.) 10) Volný formát je vhodný v případě, že operátor chce do položky zapsat zbrusu novou hodnotu, která má dosavadní starou hodnotu zcela přepsat. Při zápisu hodnoty do položky musí operátor dodržet tento postup: - Poté, co nechá do úseku stínítka odpovídajícího položce nastavit kurzor, smí se v něm sice pomocí kláves pro posun kurzoru vpravo nebo vlevo jakkoliv pohybovat, ale první datový znak musí zapsat na první pozici. - Každý další datový znak musí zapsat bezprostředně za předcházející datový znak (tedy druhý znak zapíše bezprostředně za první, n-tý bezprostředně za (n-1)-ní). Mezi zápisy jednotlivých datových znaků se však smí jakkoliv pohybovat v úseku pomocí kláves pro posun kurzoru vpravo nebo vlevo a smí též opravovat dosud zapsané datové znaky pomocí kláves BS a DEL (viz dále). Navíc smí vkládat datové znaky mezi doposud zadané datové znaky (viz dále). - Zrušit znak pomocí klávesy BS smí operátor pouze tehdy, ukazuje-li kurzor na kterýkoliv z dosud zapsaných datových znaků s výjimkou prvního nebo bezprostředně za dosud poslední zapsaný datový znak (při jiné pozici kurzoru nebo při pevném formátu je klávesa BS neúčinná). Klávesa BS pak způsobí zrušení znaku stojícího bezprostředně nalevo od kurzoru, posunutí všech následujících datových znaků o jeden byte vlevo a posun kurzoru o jeden byte vlevo (tedy na to místo, na němž stál rušený znak). - Zrušit znak pomocí klávesy DEL smí operátor pouze tehdy, ukazuje-li kurzor na kterýkoliv z dosud zapsaných datových znaků (při jiné pozici kurzoru nebo při pevném formátu je klávesa DEL neúčinná). Klávesa DEL pak způsobí zrušení toho znaku, na nějž ukazoval kurzor a posunutí všech následujících datových znaků o jeden byte vlevo (poloha kurzoru se nezmění). - Zruší-li operátor pomocí kláves BS a DEL všechny dosud zadané datové znaky, vzniká stejná situace, jako kdyby dosud nezadal žádný datový znak (kurzor zůstává nastaven na první byte položky). Ukončí-li nyní zpracovávání této vybrané položky, zůstane její obsah nezměněn. - Zadá-li operátor datový znak v případě, že kurzor ukazuje na některý z dosud zadaných datových znaků, tento datový znak se vloží na to místo, na něž ukazoval kurzor, a všechny následující datové znaky se posunou o jeden byte vpravo. (Pokud je tím úsek odpovídající položce zcela zaplněn, postupuje se stejně, jako kdyby k jeho zaplnění došlo normálním způsobem (viz dále).) - Operátor se tedy může kurzorem vrátit kamkoliv do dosud zadaných datových znaků, pomocí klávesy BS nebo DEL kterýkoliv z nich zrušit a pomocí datových kláves na kterékoliv místo libovolný počet datových znaků vložit; tím ještě neporušuje pravidla pro volný formát. Po provedení všech těchto oprav by měl buďto přesunout kurzor bezprostředně za dosud poslední zadaný datový znak a pokračovat v zadávání dalších datových znaků, anebo ukončit zpracování této vybrané položky. - Chce-li operátor obsah vybrané položky skutečně změnit, musí pro ni zadat alespoň jeden datový znak. (Nezadá-li ani jeden datový znak případně všechny zadané datové znaky zruší a opustí položku pomocí kterékoliv řídicí klávesy, zůstane obsah zpracovávané vybrané položky nezměněn.) - Operátor musí zadat méně datových znaků, než kolik činí délka položky. (Pokud operátor naplní úsek odpovídající položce zcela, předpokládá se většinou pevný formát. Výjimka nastává pouze u rozpakované numerické položky v případě, že zadaný text obsahuje tečku (při klauzuli DECIMAL-POINT IS COMMA čárku) nebo některý ze znaků + nebo -; pak se i při úplném zaplnění položky předpokládá volný formát.) - Operátor ukončí zadávání nové hodnoty stisknutím klávesy HT (horizontální tabelátor), čímž zároveň ukončuje zpracovávání této položky. V případě alfanumerické nebo alfanumerické editované položky se zadaná posloupnost datových znaků považuje za vnitřek alfanumerického literálu; tento literál bude přesunut do položky dle pravidel příkazu MOVE, přičemž se respektuje případná klauzule JUST a v případě alfanumerické editované položky se provádí edice. Takto vzniklá nová hodnota vybrané položky se okamžitě zobrazí na stínítku a kurzor se automaticky nastaví na první byte následující vybrané položky. V případě numerické položky musí mít zadaná posloupnost datových znaků tvar numerického literálu (viz 1.3.1.; navíc je přípustná i desetinná tečka na konci literálu, např. 325., a formát s E resp. e bez desetinné tečky, např. 12E5 nebo 12e-5; při DECIMAL-POINT IS COMMA je třeba místo desetinné tečky uvádět desetinnou čárku). Tento literál bude přesunut do položky dle pravidel příkazu MOVE. Takto vzniklá nová hodnota vybrané položky se okamžitě zobrazí na stínítku a kurzor se automaticky nastaví na první byte následující vybrané položky. Pokud však zadaná posloupnost datových znaků nepředstavuje přípustný numerický literál anebo pokud při přesunu do položky dochází k odřezávání nenulových cifer nebo záporného znaménka literálu, výsledný obsah položky bude nedefinován, na stínítku se na místě úseku odpovídajícího položce zobrazí samé otazníky a kurzor se přesune na první byte této vybrané položky (tzn. nepřechází se na další), čímž je operátor vybídnut, aby znovu a lépe zadal hodnotu této položky. Poznámka: Úsek stínítka přidělený položce je vždy přesně stejně dlouhý jako tato položka sama. Posloupnost datových znaků tvořící "literál" ve volném formátu, jenž má být přesunován do položky, musí být tedy kratší než položka (v případě rozpakované položky smí být i stejně dlouhý, obsahuje-li desetinnou tečku resp. čárku anebo znaménko). Je zřejmé, že toto omezení může znemožnit zadání určitých hodnot pomocí volného formátu: Např. při PIC S9V9 jsou přípustné "literály" jednoznakové (5) nebo na základě výjimky též dvojznakové s tečkou nebo se znaménkem (-5, .5, 5.); ostatní dvojznakové se zpracovávají v pevném formátu (zápis 56 tedy znamená hodnotu 5.6, zápis 5F znamená hodnotu -5.6, zápis 5@ znamená hodnotu -5.0) a víceznakové zápisy (5.6, -.6, -5.6, 6e-1, -56.E-1) jsou zcela nepřípustné. Pomocí pevného formátu lze ovšem zadat jakoukoliv hodnotu. 11) Pevný formát je vhodný v případě, že operátor nechce dosavadní hodnotu položky zcela přepsat novou hodnotou, nýbrž ji chce zachovat a pouze jeden nebo několik jejích znaků opravit. Pevný formát je použit, když operátor poruší některou z podmínek volného formátu: - První datový znak po začátku zpracování této vybrané položky zapíše jinam než na její první pozici. - Prvních n datových znaků sice zapsal postupně do první až n-té pozice, další datový znak však zapíše na pozici s pořadovým číslem vyšším než n+1. (Zapíše-li jej na pozici s pořadovým číslem menším než n+1, jedná se o vložení datového znaku mezi dosavadní datové znaky, jímž se ještě volný formát neporušuje.) - Zadá pro položku tolik datových znaků, kolik činí délka této položky, tzn. vyplní úsek stínítka odpovídající položce zcela (ať už postupně nebo vkládáním), takže zapíše datový znak i do posledního bytu tohoto úseku. Pak se (s jedinou výjimkou, viz výše) předpokládá pevný formát a po naplnění vybrané položky kurzor automaticky přejde na začátek následující vybrané položky. - Úsek stínítka odpovídající položce opustí jakýmkoliv jiným způsobem než stiskem klávesy horizontální tabelátor HT (tedy z ní vyjede kurzorem vlevo nebo vpravo nebo nahoru nebo dolů anebo ukončí provádění příkazu ACCEPT některou z kláves CR, LF nebo ESC). (Tento způsob opuštění úseku je nutno použít tehdy, když operátor chce opravit pouze první znak položky a tedy zapsal první datový znak v první pozici. Ukončení znakem HT by totiž znamenalo zadání ve volném formátu a tedy nikoliv opravu pouze prvního znaku, ale naplnění celého obsahu položky novou hodnotou!) Při začátku zpracovávání určité vybrané položky (tj. po nastavení kurzoru do jí odpovídajícího úseku stínítka) nejsou dosud porušeny podmínky pro volný formát. Dokud operátor tyto podmínky neporuší, je stále zachována možnost volného formátu, a proto se všechny zadávané datové znaky ukládají nikoliv přímo do vybrané položky, nýbrž do určitého pracovního pole. Ukončí-li operátor zpracovávání této položky, aniž podmínky pro volný formát porušil, bude položka naplněna dle výše uvedených pravidel volného formátu. Jakmile operátor podmínky pro volný formát poprvé poruší, přesunou se všechny předtím zadané datové znaky (byly-li jaké) z pracovního pole na začátek položky a veškeré další zpracovávání položky již probíhá v pevném formátu, aniž by se operátor mohl vrátit k volnému formátu (leda opuštěním úseku odpovídajícího položce a novým vstupem do něj). Při zpracovávání položky v pevném formátu je každý zadaný datový znak okamžitě přesunut na odpovídající pozici v položce a též zobrazen na stínítku; opravování položky se tedy provádí průběžně a nikoliv až na konci zpracovávání položky. Při pevném formátu nejsou prováděny žádné kontroly, zda obsah položky vzniklý opravami operátora odpovídá popisu této položky; lze tedy dát i numerické položce nenumerický obsah, je však pochopitelně nepřípustné s takto naplněnou položkou dále numericky pracovat. 12) Provádění příkazu ACCEPT končí, jakmile operátor stiskne klávesu "návrat vozu" (ENTER resp. CR) nebo "nový řádek" (LF) (tyto dvě klávesy jsou zde rovnocenné) anebo klávesu ESC. Stiskne-li operátor některou z těchto kláves při zpracovávání vybrané položky, pro niž již zadal nějaké datové znaky, bude tato položka naplněna v pevném (!) formátu, i kdyby dosud nebyly porušeny podmínky pro volný formát. Chce-li operátor naplnit poslední zpracovávanou položku ve volném formátu, musí její zpracovávání ukončit klávesou "tabelátor" (HT) a teprve potom stisknout klávesu ENTER (CR), LF nebo ESC. 13) Je-li v paragrafu SPECIAL-NAMES uvedena klauzule "CURSOR IS položka", přičemž na začátku provádění příkazu ACCEPT byla hodnota CURSOR-položky nenulová, bude po ukončení provádění příkazu ACCEPT do CURSOR-položky uložena hodnota odpovídající pozici kurzoru (dle vzorečku 100x+y resp. 1000x+y podle počtu znaků 9 v popisu CURSOR-položky, jaká byla v okamžiku, kdy operátor příkaz ACCEPT ukončil. CURSOR-položka musí mít v PICTURE dostatečný počet znaků 9, aby mohla tuto hodnotu pojmout. Byla-li na začátku provádění příkazu ACCEPT hodnota CURSOR-položky nulová, zůstává i po ukončení provádění příkazu ACCEPT beze změny. 14) Je-li v paragrafu SPECIAL-NAMES uvedena klauzule "CRT STATUS IS položka", bude po ukončení provádění příkazu ACCEPT do prvního bytu této položky uložen znak '0' v případě ukončení činnosti příkazu ACCEPT klávesou ENTER (CR) nebo LF, znak '1' v případě ukončení činnosti příkazu ACCEPT klávesou ESC a znak '9' v případě ukončení činnosti příkazu ACCEPT v důsledku chyby (pokud neexistuje ani jedna vybraná položka nebo pokud hodnota argumentu uvedeného za AT ukazuje mimo stínítko anebo pokud zpracovávaná vybraná položka leží celá nebo částečně mimo stínítko). Příklad: Mějme skupinovou položku 01 A. 03 B PIC XXX. 03 FILLER PIC X(77). 03 C. 05 D PIC 9(6). 05 FILLER PIC X(10). 05 E PIC 999.99. a proveďme příkaz ACCEPT A AT 401. Pak položka A bude umístěna na stínítku od začátku 4. řádku (401 = 4 * 100 + 1, počítá se od jedné) asi takto: - - 1 | | 2 | | 3 | | 4 |XXX........................................| B,FILLER 5 |999999..........999.99 | D,FILLER,E 6 | | Pokud není v paragrafu SPECIAL-NAMES uvedena klauzule CURSOR, bude při zahájeni provádění příkazu ACCEPT kurzor nastaven na první "X" na 4.řádku.