Programátorská příručka.Přikazy všechny.
Zde se uvádí alfabeticky podle prvního znaku všechny příkazy, kterým VaxNt rozumí.
    A - proměnná
    V - přímá hodnota
    C - přímá hodnota a je to char
    I - přímá dodnota a čeká se integer
    P - přímá hodnota a je to jeden z mála parametrů výpočtu
    N - přímá hodnota a je to typicky jméno skriptu apod
    L - délka
    F - field
    T - target, návěští uvitř skriptu
    Q - query
    Src - zdrojov proměnná
    Dst - cílová proměnná
    Interpretace - jde v udaném souboru shora dolů a provádí příkaz za příkazem. Má vlastní sadu proměnných (Context) a podle jinde popsaných pravidel hodnoty vrací
        zpět.
    Konec interpretace - ukončuje se buď pomocí return (vnořené skripty) nebo exit a nebo překročením konce interpretovaného souboru. Ukončení má dvojí efekt:
        Je-li skript vlán iniciálně nad pohledem do databáze, řídí se pomocí návratového kódu způsob překreslení (vůbec, vše načíst znova, jenom aktuální řádek načíst a překreslit)
        Ke konci interpretace se vezmou všechny neprázdné proměnné a vrazí se jako výsledek do Contextu volajícího skriptu.
        Je-li ale volajícím formulář, předává se jen reference na data a tudíž se každá změna hned promítne. To je žádoucí chování. Jelikož je toto hodně silné, často jsou
        počítavé věci dedikovány do podřízenného skriptu, který vynuluje vše krom výsledků. Diky tomu, že se pak proměnné smíchají s ostatními, nemusí se volaný
        skript starat o to, odkud a kým je volán. Může vše pomrvit, ale díky jdnopatrové izolaci navíc se vlastně nec neděje.
    Zásobník - sada stringů, které nemají explicitní jméno a přistupuje se k nim pmocí push a pop. Každá kopie interpreteru má svůj zásobník a není nutno jej vracet
        vyprázdněný. Vždy se vytvoří jako čistý.
    Substituce - příkazy jsou tvaru cmd x, přičemž jak cmd tak i x mhou být prefixovány jedním až třemi vykřičníky. Počet vykřičníků naznačuje, jak moc se má program
        šetrně chovat k systémovým promenným a ke znakům "\". Detailně se to popisuje jinde. Zde jen tolik, že substituce se provádí dvěma DataSety. Systímovými proměnnými a
        aktuální sadou hodnot. Je to velmi mocný nástroj, protože se substituce provádá dynamicky, just in time.
    CC - většina příkazů nějak "dopadne", vraci se false nebo true v proměnné _PreviousResult a je možno ji referencovat jako ERROR nebo SUCCESS
    Kontexty - každý skript má svoji sadu proměnných, sadu pojmenovaných dat. Pro různé uschovávání, předávání mezi skrioty či přežívání se používá několik dalších sad,
        kontextů. To se používá u složitých skriptů a pro přenášení mezi běžnými hodnotami a hodnotami v jiném kontextu jsou vesměs k mání příkazy typu get a put.
    Cílem interpretace skriptů je, aby se interpretovala vesměs jednoduše jednoduchá věc. Vše má nějaké defaulty, dlouhé věci jsou reimplementovány dovnitř interpreteru
    a mnoho funkcí má aliasy či se zdají zbytečnými - jde je nahradit sekvencí jiných příkazů. Cílem ale je, aby skripty byly krátké, přehledné a šlo je i mezi různými
    aplikacemi kopírovat. Místo složitého výkladu se odvoláme na příklady.
    Command                      Synopsis                                                            Příklad
    ----------------------------------------------------------------------------------------------------------------------
    [cnd]                        Cca jako unix, platí && a ||
    
    add                          A1,A2,A3 - sečte A1 a A2 a uloží do A3. Je-li proměnná A2 prázdní, chápe se jako konstanta
    adjust.between               A1,@A2,@A3 - upraví hodnotu A1 tak aby ležela v daných mezích, které se pokusí nalézt buď inirekcí nebo jako proměnné a konečně i konstanty
    addf                         A1,A2,A3 - jako add ale pro floaty. Ty jsou ukládány na čtyři místa.
    abs                          A1,A2 - do A2 dá absolutní hodnotu z A1
    absf                         A1,A2 - dtto jako float
    answer                       A - používá se pro vyzvedávání složitých výsledků via jDatobot a to tehdy, může-li být odpovědí více. Tyto jsou číslovány od nuly.
                                     Když hodnota A přesáhne počet existujících odpovědí, vrátí false. Jinak naplní proměnné podle odpovědi.
    answer.etc                   A,V - dtto a skočí na V:, překročí-li A mez odpovědí
    answer.clear                 Vyčistí buffer s odpověďmi
    answer.put                   V* - do bufferu odpovědí narve hodnoty z command line
    arrange                      A1,A2,V,... - projde postupně argument a hledá tam trojice, vždy dvě proměnné a jednu konstantu. Provede potřebné substituce a pak nastaví
                                     A2 podle A1. Vyjde-li to prázdné, pak použije default z V.
    append.v                     A,V - do A vloží konkatenaci s V
    append                       A - provede konkatenaci hodnoty v A s vrcholem zásobníku a V
    append.string                V - provede podobnou konkatenaci s hodnotou V
    ask                          A,V - dotáže se na string výzvou V a vrací v A vyzískanou hodnotu. XY se chápe stejně jako nevyplnění za false.
    ask.or.exit                  A,V - dtto a případně skončí, když se nic nedotáže
    ask.calendar                 A - dosadí do A datum a k jeho získání zobrazí kalendář
    ask.calendar2                A1,A2 - dosadi do A1 a A2 dva datumy, rozumí se obyvykle DatumOd a DatumDo, k získání se zobrazí kalendář
    ask.date                     A,V - do A se dosadí datum, výzva je V
    alert                        V1,V2 - ukáže výhružné hlášky a skončí interpretaci skriptu
    alias                        A* - prochází argument, čeká tam dvojice jmen a hodnotu v první složce dosadí do druhé
    age                          A1,V,A2,A3 - v A1 se vrací věk v létech jako int. V obsahuje styl výpočtu - rrmmdd nebo rc. A2 je datum narození, případně vypočítané.
                                     A3 je datum, ke kterému se věk počítá, není-li vyplněno, bere se "dnes". Porůznu si to poradí se situací, kdy hodnota v A2 je větčí než dnes,
                                     převede rc žen na normální datum a podle délky rc usoudí, zda se dotyčný náhodou nenarodil po lednu 1954 a zda se dotyčný nenarodil už
                                     v 21 století.
    autosize                     V - nastaví globální flag AutoSize pro pohledy, true je V=1
    ask.ifvoid                   A,V - když je hodnota v A prázdná, pak se na ní dotáže s výzvou V. Vrácená hodnota XY se chápe jako pokyn k ukončení skriptu
    analyze                      @A - nejprve se získá z A hodnota. Všechny znaky nad 127 se nahradí tečkou. Až 32 políček se chápe jako jména hodnota ... obsolentní
    async.set                    V - probere V a podle něj nastaví AsyncContext. Je-li V prázné, zkopíruje se celý aktuální Context. Narazí-li se na hodnotu "clear", vyprádní
    async.get                    V - dtto, ale přenese se to obráceně
    async.set.static             V - zase přenos
    async.get.static             V - dtto
    arglist                      P,V,A1,A2,... - P může být change, set, default nebo suffix. Jestliže je to change, vezme se ještě V tam se hledá commas nebo pipes a pdole toho
                                     se systematicky nahrazuje v hodnotě | za , nebo obráceně. Vstup je z A1 a výstup je A2.
                                     Jinak se systematicky nastavuje, defaultuje nebo suffixuje. Nejlépe je to vidět na příkladu ek2.prg
    accumulate.to                A1,A2,V,... - první tři argumenty mají pevný význam - Co, Kolik a KamDátJiné. Následuje neomezený počet dvojic, když vždy je první Co a 
                                     druhé KamToPřičíst. Příklad: accumulate.to Mikrob,Pocet,JINE,ESCO,ESCO,ESCH,ESCO,PRMI,PRMI,KLSP,KLSP,... a zde je záhodno si všimnout,
                                     že výskyty ESCH se přičítají do ESCO.
    all.be.x                     V,A* - nastaví všechna A ze seznamu na commandline na hodnotu V
    atb.sieve.reset              V* - vyčištění přesívačky antibiotik. Nastaví se zadanému seznamu ATB všude nuly.
    atb.sieve.get                @V,A1,A2,A3,A4 - vezme hodnotu z V a pokud je tato řádkem z přesívačky antibiotik, je menší nebo rovna cardinalitě, pak se do A1,A2,A3 a A4
                                     dosadí Nam,Total,Found a iFound. Tímto obratem se tedy ke konci počítání vyberou výsledky.
    atb.sieve.step               Projde se celá přesívačka antbiotik. Pokud se nějaké Nam vyskytuje v Context, dělalo se testování na Nam. Započte se to do Total, a podle toho, jak to dopadlo,
                                     se aktualizuje i Found a iFound - citlivé se získají už trojčlenkou.
                                     Příklad použití: atbsieve.prg
    atbgram.reset                Resetuje antibiogram, atbgram je vlastne dalsi kontext.
    atbgram.sort                 Setřídí jej podle antibiotik
    atbgram.step                 A1,A2. V obou promennych se ceka ATB string ve tvaru ATC=C|X|ATB=C|X|... Prvni je MIC a druha diskovka. Do atbgramu se izoluji jednotliva
                                 antibiotiak, MIC trumfuji diskovky. ATBgram se "rozisri" uricite o tri znaky (zkratka antibiotika) a pripadne i o delku hodnoty.
    atbgram.store                A,V - nastavi do atbgramu konkretni hodnotu
    atbgram.restore              V,A - v kontextu nastavi promennou jmenem V podle hodnoty z promenne A v atbgramu
    atbgram.get                  V1,V2 - V1 obsahuje jmeno vystupni promenne. V2 pak index, cislo ukazujici do atbgramu. Vraci se jmeno ATB mezera a hodnota. Kdyz se dane
                                     ATB nenajde, vrci se -.
    atb.order                    Setridi atbgram podle sys/anti.seq a FRx jsou za tim.
    at                           Zapne glabalni flag AtAllowed honotami 1 nebo on. Promenne zacinajici @ se vice zacnou resit i tam, kde se muselo psat $(...)
    break                        Skoci za nejblizsi uvedeny cyklus. Bez parametru se to bere jako repeat,until. Jinak treba break for,endfor
    break.if                     Cnd
    break.ifnot                  Cnd
    break.unless                 Cnd
    break.ifvoid                 A - testuje hodnotu v A
    break.ifnotvoid              A - dtto
    break.if                     Cnd
    break.if.                    Cnd
    begin                        Zvedne citac beginu o 1
    begin.select                 Do end.select se vsechny radky berou jako argumenty pro nacitani sql, hidden se dava do hidden. Hidden stringy (az 16) byly zavedeny pro
                                     skladovani dlouhych stringu, treba knih ci vysledku. Do konextu se dostavaji flip-flop pomovi fynkce hide a typicjy jen na chvili. Jsou-li
                                     totiz nekolik KB dlouhe ci jeste delsi, zbytecne zpomaluji vypocty.
    button.hotkeys               Podle hodnoty argumentu se nastavi globalni flag ButtonHotKeys, kterym se řídi chovani buttonu ve formularich
    b.open                       V - otevrá binární soubor bf s délkou záznamu 1. Vrací IOResult v CC.
    b.close                      Uzavře soubor bf
    b.read                       I,V - přečte I (nanejvýše 10240) znaků z bf a uloží je do V. V CC vrací, zda se to povedlo.
    b.create                     V - vytvoří bf na zápis
    b.seek                       I - seekne bf na pozici I
    b.write                      I,A - vezme I znaků z todnoty A, nejvýše však 10240. Pak udělá binární zápis do bf a to I znaků.
    breakpoint                    Nedělá nic, jen pro přehlednost kódu
    breakpoint.data              V,V,... - používá se při ladění. Je-li argument prázdný, dotáže se na něj. Je-li i po dotazu prázdný, pouze vypne používání datových breakpointů.
                                     Jinak povolí datové breakpointy a vyjmenované hodnoty označí, že se má u nich sledovat zápis. V další exekuci se pak případně objeví
                                     změna a debugovací úroneň se automaticky zvedne na nejvyšší.
    button                       C,V1,V2 - nastaví button C v prave používaném  wizardovi, V1 je nápis a V2 skript, C je A-G a doporučuje se A-D.
    bad.values.clear             Vyčistí seznam nežádoucích hodnot
    bad.values.load              V1,V2 - načte seznam nežádoucích hodnot. V1 obsahuje jméno a jím se řidí to, že se nepovolené hodnoty načtou jen jednou.
                                     Zbytek rádku se chápe jako SQL query a vybere se za každý řádek hodnota sloupce X. Výsledek se oddělí znaky | a schová.
                                 Použití viz ?bad.value
    backslashes                  A,A,... - projde argument a v každé nalezené proměnné změní / na \ - používá se při odkazech na jména souborů. Nějaké kretén v Microsoftu
                                     kdysi rozhodl, že místo / bude používat \, to ovšem vadí pak při kódování znaků á la C.
    backslashes.single           A - vezme hodnotu z A a systematicky v ní nahradí \\ za \ a pak výsledek zase do A uloží
        
    big.message                  V1,V2 - vypíše velkou hlášku/výstrahu. První kus normálně a druhý velkymi bukvami. Je-li globálně nastaveno pípání, pípne.
                                     Iniciálná default pro pípání je off. Pípání je nesnesitelné.
    bcp.printto                  V1,V2 - obsolentní
    beep                         Zapípá
    
    blob.getline                 Promenna,HledanaSekvence,PrvniNaRadku,VysledkyRadek,VYSLEDNYTAIL
    blob.part                    Promenna,HledanaSekvence,PrvniNaRadku,VysledkyRadek,VYSLEDNYTAIL
    be.integer                   A,A,... projde seznam proměnných a zonertuje je na čísla. Kyž to nejde, zkusí vzít i pojmenovaná čísla:
                                     zero=0
                                     null=0
                                     void=0
                                     one=1
                                     i=1
                                     ii=2
    
    break.line                   A,V1,V2 - vezme hodnotu z A a ve V1 čeká maximální šířku a ve V2 počet mezer po násilném zalomení řádku.
                                     Hodnotu v A zalomí pomocí \n a hledá zpět až 32 znaků, aby zalomil v mezeře.
    bb                           Obsolentní
    
    big.show.message             V - totéž co big.meggage, akorát první argument je 'Message:'
    call                         N - zavolá skript N
    call.over.file               P|*,F,N,A=V,...
                                     P jsou jména položek oddělená pipítky
                                     F je datový soubor a předpokládá se, že právě obsahuje řádky a pipítky oddělenými daty
                                     N je jméno skriptu
                                     A=V jsou rovnice, kterými je možno skriptu strkat parametry
                                 Skript se pak volá takto:
                                     Na začátku se do _Phase dá SetUp (a dal39 parametry)
                                     Pak se vždy přečte jeden rádek z F, rozbetlí se a do _Phase se dá Step
                                     Na konci se do _Phase dá CloseDown
                                 Používá se na systematické volání skriptu nad výsledkem nějakého query. Příklad:
                                     dump.sql zakaznik|fid|Color,c:/tmp/faktura-vypocet.tmp,select zakaznik,fid,Color from frontanaf order by zakaznik,fid
                                     call.over.file zakaznik|fid|Color,c:/tmp/faktura-vypocet.tmp,pokus-step.prg,Counter=100
                                     exit
    call.over.equfile            F,N,A=V,...
                                 Varianta předešlého, kde vstupní soubor je v equ formátu
    call.over.query              Viz iterate
    call.args                    N,A=V,... nastaví proměnné a vyvolá skript N, volajícímu se změní vše co je neprázdné a případně se mu i nové hodnoty nastaví
    call.freeze                  N,A=V,... provede totéž, ale volajícímu se nic nevrátí a ani nic nezmění s výjimkou proměnné Result, ta se transformuje na CC
    call.freeze.return           N,A=V,... totéž a hden se pak volaný skript ukončí
    call.freeze.exit             Dtto
    call.library                 N,A=V,... call se udělá na knihovnu skriptů built-in
    call.library.use             N,A=V,... dtto a na začátku se provede use z předaného view
    Následující skripty jsou pro kompaktifikaci kódu ...
    call.args.goto               T,N,A=V,... po ukončení se skočí na návěští T, návěští rt, _return a return mají očekávaný smysl
    call.return                  N,A=V,... vyvolá call a hned pak exit podle parametru ExitCode
    call?exit                    N,A=V,... dtto, ale podle hodnoty_Result udělá exit. Vyjde=li prázdná, pokračuje se normálně
    call.sub                     T ... návratový bod je definován jako hodnota za daným přikazem, pak se skočí na T. Volání podprogramu bez stacku.
    call.sub.args                T,A=V,... varianta předešlého s tím, že se nejprve nastaví proměnné.
    call.subr.args               T,A=V,... tot0éž, ale volání je se stackem, čili končí typicky via rt
                                     Tato funkce má aliasy call.p, jsr, cs a _call
    cardinal                      A,V - do A nastaví počet fieldů ve V, oddělovačem je čárka
    calling.context.clear        Vyčistí konext volanému, obsolentní
    call.ext.dialog              DLL,Id,Ctx - obsolentní, natáhne DLL, zavolá v něm Id jako dialog a Ctc je kontext dialogu. Výsledek vrátí v CC.
    call.ext.fnc                 Obsolentní
    callback.values.clear        Obsolentní
    calc                         Obsolentní, umí podle prvního argumentu různé složité výpočty, třeba sférickou vzdálenost
    case                         Obsolentní, vezme proměnnou a usekne z ní zadaný počet znaků. Pak skočí na výsledek, pokud tento existuje.
    call.p                       Alias za jsr
    check.variable               V,A,P,P - provede test V na proměnné A, P jsou parametry testu. Výsledek vrátí v proměnné _Result. Pokud to nevyjde a pokud je vyplněna proměnná
                                     _ExitLabel, skočí na její obsah
    check.obligatory             Obsolentní
    chop                         A,V,A,V,... useká proměnné A na délky V
    change                       A,V1,V2,... projde postupne trojice. Nalezne-li, že hodnota A je V1, nahradí ji za V2.
    chkstr                       A1,A2 ... otestuje hodnotu v A1 pomocí testu v A2, obsolentní
    chain                        N,A=V,... vyvolá skript N s udanými argumenty a pak skončí
    change.chars                 A,V,C1,C2 ... vezme hodnotu z A, nahradí v ní každý výskyt znaku C1 za C2 a výsledek uloží do proměnné V
    charx                        @A1,I,A2 ... vezme hodnotu referencovanou v prvnim parametru a do A2 da I-tý char z ní
    chart.start                  Obsolentní. Vyčistí všechny proměnné chartu a nastaví jeho iniciální hodnoty na aktuální kontext
    chart.setup                  Obsolentní. @A1,@A2 ... první parametr je číslo mezi 1 a 8 a druhé jméno. Jsou to cardinal a name chartu.
    chart.serie                  Obsolentní. No,Cap,Typ,Col')       then fChartSerie
    chart.serie.add              Obsolentní. 
    chart.serie.revert           Obsolentní. 
    chart.create                 Obsolentní. 
    choose                       @A1,@A2,@A3,@A4 - do proměnné referencované v prvním parametru dá výběr z číselníku, parametry jsou tedy Dst,Navod,Soubor,Hodnota
    choose.change                @A1,@A2,@A3 - vezme hodnotu z A2 a přeloží ji číselníkem z A3. Vyjde-li nepráznř výsledek, uloží jej do A1
    char.get                     A1,A2,I - do A1 dosadí I-tý znak z A2, I je omezeno na 1-256 čistě z praktických důvodů
    char.put                     A1,A2,I - do A1 dosadí původní hodnotu změněnou na I-tém místě na odpovídající znak z A2
    chars.get                    A1,A2,I,L - jako char.get, udělá to ale s L znaky
    chars.put                    A1,A2,I,L 
    clear.more                   A1,A2,... - vymaže hodnoty A1,A2,...
    clear.except                 A1,A2,... - vymaže všechny hodnoty krom A1,A2,...
    clear                        Vymaže všecko
    clear.pattern                V - vymaže vše, co splní pattern V. Splněním se zde rozumí substring. Funkce je case insensitive.
    clear.by.suffix              V - vymaže vše, co končí V-čkem, funkce je case insensitive.
    clear.shorts                 Vymaže všechny tzv. kratké proměnné, které se obvykle používají v medikačních listech apod. Data jsou typicky velká, ale
                                     řídká matice, kde jsou prvky pojmenovány cca jako a23 nebo q17. Čistě konvencí jdou písmena po řádcích a čísla po sloupcích.
                                     Je tedy b16 chlívek ve druhém řádku a 16 ve sloupečku.
                                     Konkétně tedy vymaže všecho od a00 do z99. Funkce je case insensitive.
    clear.shorts.x               @A - snaží se najít číslo jako parametr a vymaže všechny kratké proměnné v daném sloupci
    clipboard.save               Schová všechny aktuální hodnoty do clipboardu
    clipboard.use                Vezme naopak vše z clipboardu a nehradí tím aktuální hodnoty
    clipboard.zoom               Zobrazí clipboard jako rovnice, umožní editace a pak zas výsledek uloží do clipboardu
    close.fg                     Uzavře pracovní soubory f a g jedním vrzem. Pouze zkratka za dva příkazy, ovšem velmi frekventní.
  
    context.use                  Každý skript může být volán nad nějakým datasetem. Typicky to je tedy obsah nějakého SQL query, tedy view. Může ho komplet ignorovat nebo
                                     naopak z něj čerpat. Zde má tedy smyslu "aktuální řádek" a sloupečky v něm. Pomocí context.use se vlastně získává obvykle to, nad
                                     čím se má akce provést. Třeba číslo vzorku, rodné číslo pacienta nebo číslo účtu.
    context.use.only             A1,A2,... - z původního kontextu si vezme jen některé hodnoty.
    context.force                A1,V1,A2,V2,... - dovolí předefinovat to, nad čím je skript volán.
   
    continue                     X,Y - skočí na začátek cyklu obaleného X a Y, bez parametrů pak repeat,until. 
    connect                      V - připojí se v rámci daného skriptu k databázi V. Příkazy jako insert, update či load.sql se chvíli týkají prostě jiné databáze V
                                 Bez parametrů se zase vrátí k původní, implicitní databázi.
    connect.stick                Připojí se trvale až do odvolání k databázi V. Bez parametrů se pak vrátí k původnímu připojení.
    context.set                  A1,V1,A2,V2,... - provede sérii přiřazení
    context.clear                Totéž co clear
    construct                    A,X1,X2,... - definuje hodnotu A jako konkatenaci hodnot Xi. Xi je buď hodnota v proměnné nebo přímá hodnota (je-li v proměnné prázdno) a
                                     vždy se ještě řeší ve druhém případě substitucí všemožné proměnné typu Today apod.
    condition                    Cnd - libovolná syntakticky správná podmínka, výsledek se vrací via CC 
    context.test                 A - otestuje hodnotu v A na neprázdnost a výsledek vrací via CC
    context.freeze               V - V je číslo mezi 1 a 16. Aktuální kontext se schová na jednom ze 16 míst. Používá se tehdy, kdy podřízený skript může všelijak
                                     divoce hodnoty změnit a vůbec se nestará o následky. Bez parametrů se použije jeden defaultní chlívek č. 0.
    context.unfreeze             V - opak předešlého.
    context.save                 Všechny hodnoty v savedcontext se vymažou a pak se schová celý aktuální kontext.
    context.restore              Aktuální kontext se vezme ze savedcontext.
    context.restrict             A1,A2,... - aktuální kontext se omezí pouze na proměnné A1,A2,...
    context.get_system           A - hodnota A se vezme ze systemcontext, který přetrvává a jsou v něm globální proměnné typu Today, ale také třeba Product, Author a
                                     pomocí následující funkce cokoli
    context.set_system           A - hodnota v A se dostane mezi globály
    context.export               A - dtto
    context.cp                   A1,A2 - do A2 dosadí hodnotu z A1, A2 napřed připadně všemožně substituuje.
    context.set.encode           A=V - dosadí do A hodnotu V a ev, ji i zakóduje CRLF na \n
    copy                         V1,V2 - zkopíruje dva udané soubory přes buffer dlouhý cca 64KB. Je-li WithProgress nastaveno na 1, ukazuje i progress kopírování.
    context.set_systemr          A - mezi globály dá A a jeho hodnotu vezme z aktuálního kontextu a resolvuje ji.
    context.default              A,V - do A dá hodntu V, pkud je v A prázdno
    context.inc                  A - o jedničku zvedne hodnotu z A
    context.to.defaults          Schová se celý kontext a následně se dá z Defaults vytahovat.
    context.w.memo               A,F - hodnotu z A zapíše do souboru F, dekóduje \n
    context.r.memo               A,F. Opak předešlého.
    context.set.export           A=V - provede přiřazení v aktuálním i systémovém kontextu
    context.set.export.more      A1,V1,A2,V2,... - udělá totéž nad mnoho proměnnými
    context.set.more             A1,V1,A2,V2,... - udělá řadu přiřazení
    compare                      A,V - porovná hodnotu v A s konstantou V (do konce řádku) a zastaví CC
    compare.strings              V1,V2 - porovná hodnotu dvou konstant
    copy.string                  V,A,I1,I2 - zkopíruje část stringu, V je destinace, A zdroj a I1 a I2 jsou přímé hodnoty - odkud a kolik znaků
    context.new_hospid           Do proměnné HospId vygeneruje nové HospId, obsolentní
    context.load.sql             Q - vezme query Q a do aktuálního kontextu dá jeho výsledek
    context.load_sql             Q - dtto
    context.dump                 V - vydumpuje aktuální kontext pod názvem V do logovacího adresáře log. Přesný způsob logování ovlivní též globální hodnota
                                     DumpCompByComp. Výsledný soubor je cca PC-Stamp.V a slouží jako značka, nezávislé uložení dat apod. Mlčky se předpokládá, že
                                     potom někdy v noci je obsah logovacího adresáře zazipován, smazán apod. Typická instalace generuje několik tisíc dumpů denně
                                     čistě aby bylo vidět, co kdo a kde dělá.
    confirm                      V - vyvolá dialog s potvrzením V, výsledek dá do CC
    confirm.or.exit              V - dtto a případně rovnou skončí
    confirm.big.or.exit          V - dtto a dialog je více viditelní
    confirm.twice.or.exit        V - dvakrát si nechá věc potvrdit
    compact.file                 F,G - vezme textový soubor F a vyháže z něj násobné výskyty prázdných řádků, výsledek uloží do G.  
    context.use.implicite        Obsolentní
    context.clear.implicite      Obsolentní
    compiler                     Obsolentní
    condense                     A1,A2,... - projde všechny hodnoty a vyháže z nich výskyty dvou mezer za sebou a nechá jen jednu.
    condense.crlf                A1,A2,... - projde všechny hodnoty a napřed z nich vyháže vedoucí CRLF. Potom všechny výskyty CRLFCRLF nahradí za CRLF.
    condense.trailing.spaces     A1,A2,... - zahazuje výskyt mezery následované CRLF.
    condense.balast              A1,A2,... - otrimuje všechny hodnoty a pak je zase zakóduje
    condense.tabs                A1,A2,... - taby nahradí mezerou
    color2hex                    X,V,I - v X se hledá barva, zezme se z proměnné či z přímé hodnoty, uloží se jako hex do V a I je intenzity flag
    count                        V,T,F - do V dosadí počet řádků z F, které obsahují T. F je buď hodnota proměnné nebo přímá hodnota
    count.tag                    V,C,@A - získá hodnotu přes A a pak do V uloží počet výskytů znaku C v ní
    commas.out                   A1,A2,... - v hodnotách nahradí výskyty čárek za tečky, používá se k unifikaci desetinných čísel. Nějaký debil u nás zavedl
                                     desetinnou čárku místo tečky.
    concat                       V,A1,A2,... do V uloží zkokatenované hodnoty z A1,A2,...
    concat.spaced                V,A1,A2,... dtto a výsledek vždy prokládá mezerou
    concat.pattern               V,P - projde celý kontext, jména proměnných začínající na P se postupně seřadá do dvojic Jméno|Hodnota| a výsledek se dá do V,
                                     jedním vrzem se třeba vyexporují hodnoty všech Vykon.* apod.
    compute                      Obsolentní
    comma2dot                    Viz commas.out
    comma                        V,A1,A2,... - projde šechny hodnoty, oddělí je čárkami a výsledek dá do V
    comma.strcat                 A,V - do A přídá čárkou oddělenou hodnotu, na začátku zahodí případnou čárku samotnou.
    confirm.or.timeout           V - nechá cca 30s svítit dialog s V, případně jej při reakci obsluhy zkrátí
    context.tofile               F - vezme aktuálí kontext a šoupne ho jako rovnice do F
    context.fromfile             F - přečte F a podle něj nastaví kontext
    column.menu                  DstVar,DstLine,Alias,RowNumber,Caption,Sql;Sql2 - zavolá knihovní
                                     DstVar - kam se to uloží
                                     DstLine - kam se uloží celý vybraný řádek
                                     Alias - typicky ten implicitní
                                     RawNumber - počet sloupců při zobrazení
                                     Caption
                                     Sql - query
                                     Sql - také query, druhá volba
    cocall                       Path,Legend - zavolání externí aplikace, výsledek jde do proměnné CoCallResult
    cp                           F,G - jako copy, zkopíruje dva soubory 
    cp1250                       A,V - z A se vezme hodnota, vse mimo cp1250 a rovněž znaky Chr(0), Chr(9), Chr($95), § a © se nahradí mezerou. Výsledek se dá do proměnné
                                     jménem V
    cz.xlate                     A,X,V - vezme hodnotu z A, přeloží ji do češtiny způsobem X a výsledek dá do V. Toto jsou speciální případy:
                                     A je _sp, bere se string ze stacku Stack[SP]
                                     A je _r0, bere se string z registru R0
                                     A je _r1, bere se string z registru R1
                                     tyto případy jsou spíš obsolentní a měly význam pro pomalé počítače a velmi velké stringy - ty se tím vytlačily mimo kontext
                                     Rozeznávané hodnoty X jsou tvořeny vždy dvěma písmeny, nejčastěji to je wc. První písmeno je vstupní kód a druhé kód výstupní:
                                       k = Kamenik
                                       l = PcLatin2
                                       i = IsoLatin2
                                       c = Czech, tedy bez diakritiky
                                       w = cp1250, tedy Windows
                                     Ošklivé písmenko ś a Ś se zakóduje napřed jako s resp. S. 
                                     Toto zakódování se používá hlavně pro anglický software, který se s písmen s diakritikou ve jménech zblázní.
    cz.xlate.hard                A,X,V - drsnější překlad, nahradí x všechny znaky, co nejsou malými či velkými písmeny, číslicemi mezerou a minusítkem.
    cz.xlate.loop                X,A1,A2,... - v X je způsob překladu a pak se postupně přeloží a zpět uloží hodnoty z A1,A2,...
    cz.to.numbers                A1,V1,A2,V2,... v Ai hledá hodnoty a v nich znaky zadané jako české změní na odpovídající číslice, používá se u čteček
                                     čárového kódu, kde se zapomene čeština.
    create.rtf                   M,F - obojí jsou přímé hodnoty, M je mustr a F je výsledek. M se projde a výskyty $(Promenna) se sustituují podle aktuálního
                                     contextu. Používá se pro tvorbu různých dokumentů.
    create.rtf.open              Dtto a výsledek se rovnou otevře zaregistrovanou aplikací.
    create.rtf.print             Dtto a výsledek se rovnou vytiskne zaregistrovanou aplikací.
    create.rtf.open.off          Dtto a výsledek se rovnou otevře zaregistrovanou aplikací. Tzv. MagicSwitch se před substitucí na chvíli vypne. Některé verze
                                     software či systému nedokázali vydýchar data v cp1250 a tu se tato data kódovala, ta s diakritikou, jako sekvence.
                                     Většinou však ne. Má-li uživatel smůlu, pak se jen vypínání zruší. Aktuální kombinace W7 nebo W10 a recentní Office tuto
                                     nectnost nemá.
    create.rtf.print.off         Dtto pro print
    crlf                         A1,A2,... - postupně projde Ai, vezme z nich hodnotu a textové výskty  zanradí za \n a výsledek zase uloží zpět.
                                     Používá se tam, kde načtení nebo i zápis zakódované podoby dělá potíže.
    crlf.strcat                  A1,A2 - do A1 uloží konkatenaci hoznot z A1 a A2 oddělenou \n. Je-li hodnota z A1 prázdná, pak se \n nepřidává.
    cross.getkeylist             A - vrazí  do A (případně do @A) aktuální seznam klíčů pro aktuální pohled.
                                 Tzv. křížkované pohledy slouží k ad-hoc označování záznamů. Obsahují v definici sql query vždy sekvenci:
                                     select '~' as cc, Labno||'-'||Radek as Klic,LABNO,MATERIAL,KODZDRZA,KODODD,MIKROB, ...
                                 a systém sám řeší + a -, rozumí se šedé plus a šedé minus. Tato i daší funkce pak slouží ke vnucení určitého stavu,
                                 k uložení atd.
                                 Globálně se klíče i chování definuje ve vaxnt.prm:
                                     GlobalMsKeys = Labno - klíčem je LabNo, není-li nastaveno jinak
                                     GlobalMsStyle = Bold - vybraný řádek je bold
                                     GlobalMsColor = Magenta - a zobrazí se jako Magenta
    cross.putkeylist             A - v A se čeká (může to být i @A) seznam klíčových položek a ten se vnutí pohledu.
    cross.savetofile             F - klíčové hodnoty z pohledu a z nich ty vybrané, se uloží do souboru F
    cross.loadfromfile           F - naopak se to načte
        následující funkce jedou na vlastním kontextu ... a nejsou moc hotové
    cross.clear                  Nic není označeno
    cross.ins                    @V - nastaví se označení u udané klíčové hodnoty
    cross.del                    @V - odoznačení u udané klíčové hodnoty
    cross.read                   V - načte hodnoty ze souboru
    cross.write                  V - zapíše do souboru
    cross.union                  V - udělá sjednocení s daným souborem
    cross.meet                   V - zatím nedělá nic, ale je to míněno na průnik
    current.column.name          V - do proměnné V uloží jméno aktuálního sloupce z aktuálního pohledu
    csv                          V,A1,A2,... - do V oloží středníky oddělení hodnoty z Ai
    csv.strcat                   A1,A2 - obsolentní')        then fWhatStrcat(';')
    cs                           S,A1=V1,A2=V2,... volání podprogramu, alias k jsr a _call
    csv.tofile                   Obsolentní
    csv.prepare                  A1,A2,... - vezme hodnoty a vyháže z nich středníky
    csv.format                   0 nebo 1 - změní defaultní formát exportu a importu na CSV
    csv.buffer.clear             Vyčistí CSV buffer
    csv.buffer.add               @A - přidá řádek do CSV bufferu
    csv.buffer.use               0 nebo 1 - zapíná užívání CSV bufferu
    csv.novoid                   A1,A2,A3,... - do A1 seskládá hodnoty z A2,A3,... a ignoruje přitom prázdné hodnoty či hodnoty -
    csv.index                    Src,I,Dst - do Dst dá I-tý sloupec z hodnoty v Src, oddělovačem je středník
    csv2pipe                     Src,I,Dst - vezme hodnotu ze Src, dekóduje CRLF a z každého řádku si vezme I-tý sloupec. Vyjde-li v daném řádku
                                     neprázdno, výsledek appenduje do Dst a oddělí |
    dmr2yyyymmdd                 Src,Dst - vezme hodnotu ze Src, zkonvertuje ji dle schématu dmr na yyyymmdd. Tedy například 17.2.14 na 20140217. Odělovač je tečka.
    dhs.put                      Obsolentní
    dhs.get                      Obsolentní
    
    do                           Stejně jako fsetup slouží k vertikálnímu zhuštění kódu, dokumentováno samostatně.
    
    dot2comma                    A1,A2,... - projde hodnoty proměnných Ai a všechny výskyty "." nahradí za ","
    dot                          A1,A2,... - přidá znak "." ke každé z hodnot proměnných Ai
    dec                          A1,A2,... - dekrementuje hodnoty v Ai
    default                      A1,V1,A2,V2,... - nastaví hodntoty v Ai podle Vi pro prázdné hodnoty
    defaultv                     A1,A2,A3,A4,... - dtto, hodnoty ale vezme z proměnných
    decimal.point                A1,A2,... - standardizuje čísla v proměnných Ai, vyháže mezery a znaky "," nahradí za "."
    decode.crlf                  Obsolentní, dekóduje CRLF ve stringu na vrcholu zásobníku
    defaults.get                 Obsolentní, nastaví defaulty pro řadu proměnných
    delete                       V - podle hodnot v aktuálním kontextu lokalizuje řádek v tabulce V a ten deletuje a případně raisuje exception, když řádek nenajde
    defaults.to.context          Vezme context Defaults a ten propaguje do aktuálního kontextu
    defaults.test                A - otestuje hodnotu A v kontextu Defaults na prázdnost a podle toho nastaví CC
    default.year                 A,V - vezme hodnotu z A, nahradí v ní všechny výskyty "/" a "-" za "." a V se čeká jako rok YYYY. Jestliže hodnota neobsahuje
                                     žádnou tečku a má délku 4, do A se uloží původní hodnota a suffixuje se hodnotou V. To je tedy například 1207. Jestliže počet
                                     teček je 1, uloží se původní hodnota a suffixuje se .V - například 12.07 se transformuje na 12.07.2017. V případě, že počet
                                     teček je 2 a více, nedělá se nic.
    debuglevel                   I - povolené hodnoty jsou 0,1,2 a 3 a doporučené jsou 0 (vypnuto) a 3 (maximální úroveň). Řídí se tím debugování skriptů a při
                                     úrovni 3 se s každým příkazem v daném skriptu interpretace zastaví a ukáže hodnoty aktuálního kontextu.
                                     Jiné úrovně debugování:
                                         1 - ukáže se jen dialog DEBUG: a interpretovaný string
                                         2 - zastaví se jen při změně hodnot určitých proměnných, obsolentní
                                     Příkazem nodebug je tot možno úplně potlačit a chová se pak jako nop. To se využije tam, kde se třeba debugování
                                     nechá být, ale s výjimkou konkrétního usera se debugování potlačí. Pak se debugování zapne jen konkrétnímu uživateli
    debug                        V,W - v adresáři debug apenduje soubor se jménem odvozeným z PC a V a zapše do něj W. Slouží k debugovacím výpisům
                                     na pozadí.
    debugnote                    V - do stále stejně se jmenujícího souboru c:/tmp/debugnote.txt se appenduje V. Je-li to ".clear", pak se tento soubor odstraní.
                                 Slouží k debugování na lokálním PC, typicky ke sledování nějaké hodnoty v sáhodlouhém výpočtu.
    debugfast                    V - dtto. ale děje se to celé na stringu v paměti
    debugfast.clear              Nadbytečné, vyčistí degugovací string
    debugfast.view               Zobrazí debugovací string
                                     Mezi debugnote a debugfast jsou dva hlavní rozdíly. Debugnote zůstane na disku, není-li smazán úmyslně. A prohlížení uvnitř
                                     běžícího exempláře VaxNt je omezeno na cca 60tis znaků, zatímco soubor c:/tmp/debugnote.txt může být i velmi velký.
                                 
    decimals                     I - nastaví počet decimálních míst pro výpočty, default je 4. Čili se počítá na 4 platné decimální číslice, rozumí se u floatů.
    deref                        Ptr,Dst,... - obsolentní, do Dst dá hodnotu z proměnné Ptr
    define                       A=V - obsolentní. vyřeší proměnné ve V a výsledek šoupne do proměnné A
    div                          A,I,Dst - do proměnné Dst uloží hodnotu z proměnné A dělenou přímou hodnotou I a to vše jako integer¨
    divf                         A,I,Dst - dtto pro floaty. Počítá se na decimals číslic, by default na 4. I se chápe jako 0.0000, je-li Abs(I) hodně malé, menší než
                                     0.000000000000001. Všechny chyby jsou potlačeny a nesmysly defaultovány na 0. Typicky se ve skriptech počítají tak maximálně
                                     procenta apod.
    difftime                     Dst,A1,A2 - V A1 hledá menší čas a v A2 větší, ve formátu HHMMSS. Do proměnné Dst se uloží rozdíl ve vteřinách. Chyby a nesmysly se
                                     defaultují na 0.
    diffdate                     Dst,A1,A2 - dtto pro datumy ve formátu YYYYMMDD a vrací se rozdíl ve dnech jako integer
    diffdate+1                   Dst,A1,A2 - dtto a vrací se rovnou o jedničku více pro sestry apod., kde pořadí dne od nuly je moc složité nebo není zažité.
    diffdatetime                 Dst,A1,A2 - dtto a vrací se rozdíl ve vteřinách pro formát YYYYMMDDHHMMSS
    diffdatetime.d               Dst,A1,A2 - dtto a vrací se rozdíl ve dnech jako float
')    then fDiffDateTimeD
                else if OpIs('diff.prf')          then fDiffPrf
                else if OpIs('disable')           then fDisable
                else if OpIs('display')           then fDisplay
diff A* Nastaví do DIFF rozdily v udaných proměnných proti poslednímu save
                else BadCommand;
            'a':
                if      OpIs('data.clear')        then Data.Clear
                else if OpIs('day.name')          then fDayName
                else if OpIs('day.abbr')          then fDayAbbr
                else if OpIs('day.name.abbr')     then fDayNameAbbr
                else if OpIs('data.from.dst')     then Data.Assign(DropDst)
                else if OpIs('data.from.src')     then Data.Assign(DropDst)
                else if OpIs('data.test')         then TestArg(Data)
                else if OpIs('data.to_context')   then XToContext(Data)
                else if OpIs('data.to.context')   then XToContext(Data)
                else if OpIs('data.load_sql')     then DataLoadSql
                else if OpIs('data.load.sql')     then DataLoadSql
                else if OpIs('database.name')     then SetDbName(arg)
                else if OpIs('datexname')         then GetDateXName(ResolvedArg,'cz')
                else if OpIs('datexname.sk')      then GetDateXName(ResolvedArg,'sk')
                else if OpIs('datopod')           then fDatopod
                else BadCommand;
            's':
                if      OpIs('dset.eof')          then fDsetEof
                else if OpIs('dset.card')         then fDsetCard
                else if OpIs('dset.summ')         then fDsetSumm
                else if OpIs('dset.bof')          then fDsetBof
                else if OpIs('dset.first')        then fDsetFirst
                else if OpIs('dset.prior')        then fDsetPrior
                else if OpIs('dset.last')         then fDsetLast
                else if OpIs('dset.next')         then fDsetNext
                else if OpIs('dset.get')          then fDsetGet
                else if OpIs('dset.enablecontrols')then fDsetEnableControls
                else if OpIs('dset.disablecontrols')then fDsetDisableControls
                else if OpIs('dset.disablecontrols.freeze') then
                  begin
                  fDsetDisableControls;
                  fDsetFreeze;
                  end
                else if OpIs('dset.process')      then fDsetProcess
                else if OpIs('dset.freeze')        then fDsetFreeze
                else if OpIs('dset.unfreeze')     then fDsetUnFreeze
                else if OpIs('dset.unfreeze.enablecontrols') then
                  begin
                  fDsetUnFreeze;
                  fDsetEnableControls;
                  end
                else if OpIs('dset.getrecno')     then fDsetGetRecNo
                else if OpIs('dset.setrecno')     then fDsetSetRecNo
                else if OpIs('dset.export.equ')   then fDsetExport('e')
                else if OpIs('dset.export.pip')   then fDsetExport('p')
                else if OpIs('dst.to.context')    then XToContext(DropDst)
                else BadCommand;
            'y':
                if OpIs('dynamic.wizard')         then fDynamicWizard
                else if OpIs('dynamic.wizard.call') then fDynamicWizardCall(False,'')
                else if OpIs('dynamic.wizard.call.or.exit')   then fDynamicWizardCall(True,'')
                else BadCommand;
            '.':
                if OpIs('d.m.yyyy2yyyymmdd') or OpIs('d.m.yyyy') then
                  fdmyyyy2yyyymmdd
                else BadCommand;
            'd':
                if OpIs('ddmmyyyy2yyyymmdd') or OpIs('dd.mm.yyyy')    then fddmmyyyy2yyyymmdd
                else if OpIs('d.m.yyyy2yyyymmdd') or OpIs('d.m.yyyy') then
                  fdmyyyy2yyyymmdd
                else if OpIs('dd_mm_yy.yyyymmdd') or OpIs('dd.mm.yy') then fddmmyy_yyyymmdd
                else BadCommand;
            'u':
                if OpIs('dump')                  then DumpContext(ResolvedArg)
                else if OpIs('dump2file')        then DumpContext2File(ResolvedArg) // novinka
                else if OpIs('dump.sql')         then fDumpSql // novinka
                else if OpIs('dump.sql.equ')     then fDumpSqlEqu // novinka
                else if OpIs('dump.sql.equ.fast') then fDumpSqlFast(0) // novinka
                else if OpIs('dump.sql.pip.fast') then fDumpSqlFast(1) // novinka
                else if OpIs('dump.sql.csv.fast') then fDumpSqlFast(2) // novinka
                else if OpIs('dump.log')         then fDumpLog(ResolvedArg) // novinka
                else BadCommand;
            'l':
                if OpIs('dlg.date')              then fDlgDate
                else BadCommand;
            else
              BadCommand;
            end;
        'e':
            case Op[2] of
            'x':
                if      OpIs('exit') or OpIs('ex')    then DoExit
                else if OpIs('exit.iffalse')          then fExitIfFalse
                else if OpIs('exit.iftrue')           then fExitIfTrue
                else if OpIs('exit.if')               then fExitIf
                else if OpIs('exit.ifvoid')           then fExitIfVoid
                else if OpIs('exit.ifnotvoid')        then fExitIfNotVoid
                else if OpIs('exit.ifnot')            then fExitIfNot
                else if OpIs('exit.unless')           then fExitIfNot
                else if OpIs('exit.unlock')           then fExitUnlock
                else if OpIs('exit.unlock.iffalse')   then fExitUnlockIffalse
                else if OpIs('exit.show.message')     then fExitShowMessage(2)
                else if OpIs('exit.message')          then fExitShowMessage(2)
                else if OpIs('exit.dump')             then fExitDump
                else if OpIs('exit.stopsql')          then
                  begin
                  StopSql;
                  DoExitNow(0);
                  end
                else if OpIs('exp')                   then fExp
                else if OpIs('export')                then SetContextAndSystemValue
                else if OpIs('export.more')           then ExportMore
                else if OpIs('expander.set')          then fExpanderSet
                else if OpIs('expander.apply')        then fExpanderApply
                else if OpIs('expand.codes') then fExpandCodes
                else
                  BadCommand;
            'a':
                if OpIs('easter.sunday')              then fEasterSunday
                else    BadCommand;
            'm':
                if OpIs('email')                      then fEmail
                else    BadCommand;
            'n':
                if OpIs('endfor')                     then fForCommand(True)
                else if OpIs('endfor.list')           then fForListCommand(True)
                else if OpIs('endthru')               then fThruCommand(True)
                else if OpIs('endthruc')              then fcThruCommand(True)
                else if OpIs('encode.crlf')           then Stack[SP]:=utEncodeString(Stack[SP])
                else    BadCommand;
            's':
                if OpIs('essence')                    then fEssence
                else    BadCommand;
            'q':
                if OpIs('equ2file')                   then fEquToFile(true)
                else if OpIs('equations')             then fEquations
                else if OpIs('equ2file.pip')          then fEquToFile(false)
                else if OpIs('equ') or OpIs('eq')     then SetContextValue(False,False,False,False)
                else if OpIs('equ.nonvoid') or OpIs('eq.nonvoid') then SetContextValue(False,False,False,True)
                else    BadCommand;
            'l':
                if OpIs('elseif')                then
                   begin
                   fElseIfCommand;
                   if Trim(SReg)<>'' then
                     begin
                     Dec(PC);
                     Result:=False;
                     end;
                   end
                 else BadCommand;
            'd':
                 if OpIs('edit')                      then fEditString(True)
                 else if OpIs('edit.ro')              then fEditString(False)
                 else if OpIs('edit.file')            then fEdit
                 else if OpIs('edit.file.ro')         then fViewRO
                 else if OpIs('edit.static')          then fEditStatic
                 else BadCommand
            else BadCommand;
            end;
        'f':
            case Op[2] of
            'l':
                if OpIs('flags.clear')                then FlagContext.Clear
                else if OpIs('flags.remember')        then fFlagsRemember
                else if OpIs('flags.dump')            then fFlagsDump
                else BadCommand;
            'r':
                if OpIs('fromfile')                   then fFromFile
                else BadCommand;
            'e':
                if OpIs('fetch')                      then Fetch(UnifySlashes(ParamDir+'prg\'+Arg),True)
                else if OpIs('fetch?')                then Fetch(UnifySlashes(ParamDir+'prg\'+Arg),False)
                else if OpIs('fetch.ifvisible')       then fFetch(False)
                else if OpIs('fetch.ifdefined')       then fFetch(True)
                else BadCommand;
            'n':
                if OpIs('fnc.clear')                  then XformContext.Clear
                else if OpIs('fnc.sum.clear')         then XSumContext.Clear
                else if OpIs('fnc.put')               then fFncPut
                else if OpIs('fnc.get')               then fFncGet
                else if OpIs('fnc.find')              then fFncFind
                else if OpIs('fnc.sum.add')           then fFncSumAdd
                else if OpIs('fnc.sum.get')           then fFncSumGet
                else if OpIs('fnc.sum.i')             then fFncSumI
                else BadCommand;
            'm':
                if OpIs('fms')                        then FForm
                else if OpIs('fms.prepare')           then
                  FFormPrepare
                else if OpIs('fms.ready')             then FFormReady
                else if OpIs('fms.step')              then FFormStep(ResolvedArg)
                else if OpIs('fms.name')              then FormName:=ResolvedArg
                else if OpIs('fms.scan')              then FFormScan
                else if OpIs('fms.dump')              then FFormDump
                else if OpIs('fms.print')             then FFormPrint
                else if OpIs('fms.printj')            then FFormPrintJ
                else if OpIs('fms.buttons')           then FmsButtons:=(ResolvedArg='1')
                else if OpIs('fms.get')               then fFormGet
                else if OpIs('fms.get.static')        then fFormGetStatic
                else if OpIs('fms.put')               then fFormGet
                else if OpIs('fms.put.static')        then fFormPutStatic
                else BadCommand;
            'o':
                if OpIs('for')                        then fForCommand(False)
                else if OpIs('for.list')              then fForListCommand(False)
                else if OpIs('format.width')          then FormatWidth
                else if OpIs('format')                then fFormat
                else if OpIs('fold')                  then fFold(False,False,'')
                else if OpIs('fold.crlf')             then fFold(False,False,#13#10)
                else if OpIs('fold.trim')             then fFold(True,False,'')
                else if OpIs('fold.trim.crlf')        then fFold(True,False,#13#10)
                else if OpIs('fold.trim.2nd')         then fFold(True,True,'')
                else if OpIs('fold.split')            then fFoldSplit
                else BadCommand;
            '.':
                if OpIs('f.write')                    then
                  begin
                  V1:=utDecodeString(Sysresolve(Arg,False));
                  LastLength:=Length(V1);
                  Writeln(fx,fIndention,V1)
                  end
                else if OpIs('f.minuses')             then fWriteMinuses
                else if OpIs('f.create')              then fCreate(fx,false)
                else if OpIs('f.size')                then fGetSize
                else if OpIs('f.create.or.quit')      then fCreate(fx,True)
                else if OpIs('f.create.close')        then fCreateClose(fx)
                else if OpIs('f.append')              then AppendOrCreateTextFile(fx,Sysresolve(Arg,false))
                else if OpIs('f.close')               then
                   begin
                   //               if not fxopen then
                   CloseFile(fx);
                   fxopen:=False;
                   end
                else if OpIs('f.write4excel')         then Writeln(fx,fIndention,Excel4(utDecodeString(Sysresolve(Arg,False))))
                else if OpIs('f.write._s')            then Write(fx,fIndention,_S)
                else if OpIs('f.wr')                  then Write(fx,fIndention,utDecodeString(Sysresolve(Arg,False)))
                else if OpIs('f.dump.data')           then Write(fx,fIndention,Data.Text)
                else if OpIs('f.newline')             then Writeln(fx)
                else if OpIs('f.write.al')            then fWriteAdjusted
                else if OpIs('f.write.var')           then Write(fx,Context.Values[Arg])
{doc}           else if OpIs('f.write.dir')           then fWriteDir(False)
{doc}           else if OpIs('f.write.dir.recursive') then fWriteDir(True)
{doc}           else if OpIs('f.write.centered')      then fWriteCentered
                else if OpIs('f.write.more.nolf')     then fWriteMore(False,fx)
                else if OpIs('f.write.more')          then fWriteMore(True,fx)
                else if OpIs('f.writeln.more')        then fWriteMore(True,fx)
                else if OpIs('f.write.wl')            then fWriteAdjustedWi(fx)
                else if OpIs('f.write.raw')           then fWriteRaw(fx)
                else if OpIs('f.writeln.raw')           then fWriteLnRaw(fx)
                else if OpIs('f.write.sp')            then Write(fx,' ')
                else if OpIs('f.write.nl')            then Write(fx,Sysresolve(ARg,False),' ')
                else if OpIs('f.write.ind')           then fWriteIndented(fx)
                else if OpIs('f.write.novoid')        then fWriteNovoid(fx)
                else if OpIs('f.write.context')       then Write(fx,fIndention,utSubstString(Arg,Context))
                else if OpIs('f.writeln.context')     then Writeln(fx,fIndention,utSubstString(Arg,Context))
                else if OpIs('f.writeln')             then Writeln(fx)
{doc}           else if OpIs('f.write.textfile')      then FWriteTextFile(fx,SysResolve(Arg,False),False)
                else if OpIs('f.write.textfile.encoded') then FWriteTextFileEncoded(fx,SysResolve(Arg,False))
{doc}           else if OpIs('f.write.subst')         then fWriteSubst
{doc}           else if OpIs('f.compose')             then FCompose
{doc}           else if OpIs('f.write.textfile.novoid') then FWriteTextFileNovoid(SysResolve(Arg,False))
                else if OpIs('f.write.textfile.nl')   then FWriteTextFile(fx,SysResolve(Arg,False),True)
{doc}           else if OpIs('f.exists')              then if FileCheck(UnifySlashes(Sysresolve(Arg,False))) then PreviousResult:=1 else PreviousResult:=0
{doc}           else if OpIs('f.erase')               then ffErase
                else if OpIs('f.erase.pattern')       then fErasePattern
                else if OpIs('f.erase.more')          then fEraseMore
                else if OpIs('f.null')                then fNullMore
{doc}           else if OpIs('f.indent+')             then fIndention:=fIndention+'   '
{doc}           else if OpIs('f.indent-')             then Delete(fIndention,1,2)
                else if OpIs('f.write.top')           then Write(fx,fIndention,Stack[SP])
{doc}           else if OpIs('f.write.diff')          then fWriteDiff
                else if OpIs('f.writeln.change')      then fWritelnChange
{doc}           else if OpIs('f.noindent')            then fIndention:=''
                else if OpIs('f.write.pop')           then fWritePop
{doc}           else if OpIs('f.write.diff.prf')      then fWritePrefDiff
                else if OpIs('f.dump')                then fDumpMany(fx,false,false)
                else if OpIs('f.dump.equ')            then fDumpMany(fx,true,false)
                else if OpIs('f.dump.equ.expanded')   then fDumpMany(fx,true,true)
                else if OpIs('f.dump.text.bold')      then fDumpManyTexts(True)
                else if OpIs('f.write.more.v')        then fWriteMoreV(True,fx)
                else if OpIs('f.write.more.v.nolf')   then fWriteMoreV(False,fx)
                else if OpIs('f.writeln.more.v')      then fWriteMoreV(True,fx)
                else if OpIs('f.create.write.close')  then fCreateWriteClose(fx)
                else if OpIs('f.equ')                 then fEqu
                else if OpIs('f.nv')                  then fNV
                else if OpIs('f.write.pattern')       then fWritePattern(False)
                else if OpIs('f.write.pattern.xlate') then fWritePattern(True)
                else BadCommand;
            'i':
                if OpIs('findfirst')                  then fFindFirst
                else if OpIs('files.list')            then fFilesList('|')
                else if OpIs('files.list.crlf')       then fFilesList('\n')
                else if OpIs('filter.set')            then fFilterSet
                else if OpIs('filter.get')            then fFilterGet
                else if OpIs('filters')               then UsingConstFilters := Arg='const'
                else if OpIs('file2item')             then fFile2Item
                else if OpIs('file2heap')             then fFile2Heap
                else if OpIs('file')                  then fFileOp
                else BadCommand;
            's':
                if OpIs('fsplit')                     then fFsplit(ResolvedArg)
                else BadCommand;
            else BadCommand;
            end;
        'g':
            case Op[2] of
            'l':
               if OpIs('global.clear')               then GlobalResultList.Clear
               else if OpIs('global.set')            then fGlobalSet
               else if OpIs('global.get')            then fGlobalGet
               else if OpIs('global.get.i')          then fGlobalGetI
               else BadCommand;
            'n':
               if OpIs('gn')                         then fGeneratorNext
               else BadCommand;
            'u':
               if OpIs('guru')                       then Guru(ResolvedArg)
               else if OpIs('guru.on')               then GuruOn:=True
               else if OpIs('guru.off')              then GuruOn:=False
               else BadCommand;
            'e':
               if      OpIs('getsql')                then fgetSql(False)
               else if OpIs('getsql?')               then fgetSql(True)
               else if OpIs('getsql.or.break')       then begin Arg:='break' ; fgetSql(True); end
               else if OpIs('get.this.date')         then GetThisDate
               else if OpIs('get.from.list')         then fGetFromList
               else if OpIs('get.from.equivalence')         then fGetFromList
               else if OpIs('gettime')               then Context.Values[ResolvedArg]:=TimeNow
               else if OpIs('getatom')               then fGetAtom
               else if OpIs('getatom.loop')          then fGetAtomLoop
               else if OpIs('getatom.loop.setv')     then fGetAtomLoopSetv
               else if OpIs('getlength')             then fGetLength
               else if OpIs('genid')                 then fGenId
               else if OpIs('getparameter')          then fGetParameter
               else if OpIs('get.parameter')         then fGetParameter
               else if OpIs('generator.next')        then fGeneratorNext
               else if OpIs('get.outer')             then fGetOuter
               else if OpIs('get.text')              then fGetText
               else if OpIs('get.by.tags')           then fGetByTags
               else BadCommand;
            'o':
               if      OpIs('goto')                  then JumpTo(Arg+':',True)
               else if OpIs('goto@')                 then JumpToOrContinue(CtxGet(Arg)+':',True)
               else if OpIs('goal')                  then WizardGoal:=Arg
               else if OpIs('goto.back')             then JumpToBack(Arg+':',True)
               else if OpIs('goto.forward')          then JumpToForward(Arg+':',True)
               else if OpLike('goto.if')             then fGoto(Copy(Op,Length('goto.if')+1,Maxint))
               else if OpLike('goto.if.')            then fGoto(Copy(Op,Length('goto.if')+1,Maxint))
               else BadCommand;
            '.':
               if      OpIs('g.read?')               then fReadOrJump(gx)
               else if OpIs('g.read.x.fields')       then fReadXFields(gx)
               else if OpIs('g.open?')               then fOpenOrJump(gx)
               else if OpIs('g.open')                then fOpen(gx,False)
               else if OpIs('g.open.or.quit')        then fOpen(gx,True)
               else if OpIs('g.close')               then CloseFile(gx)
               else if OpIs('g.skip')                then fSkip(gx)
               else if OpIs('g.skip.lines')          then fSkipLines(gx)
               else if OpIs('g.read')                then fRead(gx)
               else if OpIs('g.read.equ')            then gReadEqu(gx)
               else if OpIs('g.read2eof')            then fRead2Eof(gx)
               else if OpIs('g.open.read2eof.close') then fOpenRead2EofClose(gx)
               else if OpIs('g.open.readln.close')   then fOpenReadlnClose(gx)
               else BadCommand;
            'r':
               if      OpIs('group')                 then fGroupFile
               else if OpIs('grid.start')            then fGridStart
               else if OpIs('grid.setup')            then fGridSetup
               else if OpIs('grid.kill')             then fGridKill
               else if OpIs('grid.autosize')         then fGridAutoSize
               else if OpIs('grid.stop')             then fGridStop
               else if OpIs('grid.edit')             then fGridEdit
               else if OpIs('grid.set')              then fGridSet
               else if OpIs('grid.set.cr')           then fGridSet
               else if OpIs('grid.get')              then fGridGet
//             else if OpIs('grid.get.cr')           then fGridGet
               else if OpIs('grid.def.set')          then fGridDefSet
               else if OpIs('grid.def.set.area')     then fGridDefSetArea
               else if OpIs('grid.def.set.cr')       then fGridDefSet
               else if OpIs('grid.def.get')          then fGridDefGet
               else if OpIs('grid.def.getall')       then fGridDefGetAll
               else if OpIs('grid.def.get.cr')       then fGridDefGet
               else if OpIs('grid.cr.counts.get')    then fGridCrCountsGet
               else if OpIs('grid.cr.counts.set')    then fGridCrCountsSet
               else if OpIs('grid.cr.fixcounts.set') then fGridCrFixCountsSet
               else if OpIs('grid.rowcount.set')     then fGridRowCountSet
               else if OpIs('grid.rowcount.get')     then CtxPut(Arg,IntToStr(FxGrid.RowCount))
               else if OpIs('grid.fixrowcount.set')  then fGridFixRowCountSet
               else if OpIs('grid.fixrowcount.get')  then CtxPut(Arg,IntToStr(FxGrid.FixedRowCount))
               else if OpIs('grid.caption.set')      then FXGrid.Caption:=ResolvedArg
               else if OpIs('grid.caption.get')      then CtxPut(ResolvedArg,FXGrid.Caption)
               else if OpIs('grid.colcount.set')     then fGridColCountSet
               else if OpIs('grid.colcount.get')     then CtxPut(Arg,IntToStr(FxGrid.ColCount))
               else if OpIs('grid.fixcolcount.set')  then fGridFixColCountSet
               else if OpIs('grid.fixcolcount.get')  then CtxPut(Arg,IntToStr(FxGrid.FixedColCount))
               else if OpIs('grid.goto.cr')          then fGridGotoCr
               else if OpIs('grid.focus')            then fGridFocus
               else if OpIs('grid.openedit')         then fGridOpenEdit
               else if OpIs('grid.get.cr')           then fGridGetCr
               else if OpIs('grid.category.set')     then fGridCategorySet
               else if OpIs('grid.legend.set')       then fGridLegendSet
               else if OpIs('grid.cr2hl')            then fGridCr2Hl
               else if OpIs('grid.hl2cr')            then fGridHl2Cr
               else if OpIs('grid.header.set')       then fGridHeaderSet
               else if OpIs('grid.message')          then fGridMessage
               else if OpIs('grid.maximized')        then fGridMaximized
               else if OpIs('grid.getall')           then fGridGetAll
               else if OpIs('grid.fields.set')       then fGridFieldsSet
               else if OpIs('grid.fields.get')       then fGridFieldsGet
               else if OpIs('grid.colwidth')         then fGridColWidth
               else if OpIs('grid.rowheight')        then fGridRowHeight
               else if OpIs('grid.swaprows')         then fGridSwapRows
               else if OpIs('grid.swapcols')         then fGridSwapCols
               else if OpIs('grid.moverow')          then fGridMoveRow
               else if OpIs('grid.movecol')          then fGridMoveCol
               else if OpIs('grid.insertrow')        then fGridInsertRow
               else if OpIs('grid.insertcol')        then fGridInsertCol
               else if OpIs('grid.deleterow')        then fGridDeleteRow
               else if OpIs('grid.deletecol')        then fGridDeleteCol
               else if OpIs('grid.sort.ext')         then fGridSortExt
               else if OpIs('grid.popup.clear')      then fGridPopUpClear
               else if OpIs('grid.popup.add')        then fGridPopUpAdd
               else if OpIs('grid.select.row')       then fGridSelectRow(false)
               else if OpIs('grid.select.rows')      then fGridSelectRow(true)
               else BadCommand;
             else BadCommand;
           end;
        'h':
             if      OpIs('hide')                  then fHide
             else if OpIs('hhmm.int')              then fhhmm2int
             else if OpIs('hhmmss.hhmmsscz')       then fhhmmss2hhmmsscz
             else if OpIs('hhmm.hhmmcz')           then fhhmm2hhmmcz
             else if OpIs('hash.in')               then fHashIn
             else if OpIs('hash.in.check')         then fHashCheck
             else if OpIs('hash')                  then fHash
{doc}        else if OpIs('h.close')               then begin CloseFile(hx); fxopen:=False; end
             else if OpIs('h.read2eof')            then fRead2Eof(hx)
             else if OpIs('history')               then fHistory
             else if OpIs('have.or.return')        then fHaveOrReturn
             else if OpIs('http')                  then fHttp
             else BadCommand;
        'i':
            case Op[2] of
            'f':
               if OpIs('if')                       then
                 begin
                 fIfCommand;
                 if SReg<>'' then
                   begin
                   Dec(PC);
                   Result:=False;
                   end;
                 end
               else BadCommand;
            'n':
               if      OpIs('inc')                    then fInc
               else if OpIs('int.hhmm')               then fint2hhmm
               else if OpIs('int.hhmmss')             then fint2hhmmss
               else if OpIs('insert.or.update')       then fInsertOrUpdate
               else if OpIs('insert.or.update.break') then
                 begin
                 fInsertOrUpdate;
                 if PreviousResult=1 then
                   begin
                   Arg:='';
                   fBreakCommand;
                   end
                 end
               else if OpIs('insert.or.update.db')    then fInsertOrUpdateDb
               else if OpIs('insert') or OpIs('in')   then fInsert
               else if OpIs('insert.nonvoid')         then fInsertNonVoid
               else if OpIs('insert.nonvoid.db')      then fInsertNonVoidDb
               else if OpIs('indent')                 then IndentFile
               else if OpIs('inherit')                then Context.Assign(ContextValues)
               else if OpIs('insert.string')          then fInsertString
               else if OpIs('input.open')             then fOpen(inputx,False)
               else if OpIs('input.close')            then CloseFile(inputx)
               else if OpIs('input.read')             then fRead(inputx)
               else if OpIs('input.read.equ')         then fReadEqu(inputx)
               else if OpIs('input.read2eof')         then fRead2Eof(inputx)
               else if OpIs('inp.buffer.clear')      then fInpBufferClear
               else if OpIs('inp.buffer.append')     then fInpBufferAppend
               else if OpIs('inp.buffer.getline')    then fInpBufferGetLine
               else if OpIs('inp.buffer.set')        then fInpBufferSet
               else if OpIs('inp.buffer.get')        then fInpBufferGet
               else if OpIs('inp.buffer.import')     then fInpBufferImport(False)
               else if OpIs('inp.buffer.import.noapos') then fInpBufferImport(true)
               else BadCommand;
            'v':
               if OpIs('ivo.wizard')                  then fIvoWizard
               else BadCommand;
            't':
               if      OpIs('item')                   then fItem(',')
               else if OpIs('iterator.clear')         then Iterators[AdjustInteger(IntOf(ResolvedArg),0,9)]:=''
               else if OpIs('iterator.add.line')      then fIteratorAddLine
               else if OpIs('item.pipe')              then fItem('|')
               else if OpIs('item.count')             then fItemCount
               else if OpIs('item2file')              then fItem2File
               else if OpIs('iterate.call.over.file') then fCallArgsOverFile
iterate.call.over.query  P|*,F,N,Q Příklad:
                             iterate.call.over.query mailbox|quota|presmerovano|prazdniny,c:/tmp/sestava-vsechno.tmp,vypocty/vsechno-step.prg,select mailbox,quota,presmerovano,prazdniny from mailboxy order by mailbox
 
')then fCallArgsOverQuery
               else BadCommand;
             's':
               if OpIs('isolate')                      then fIsolate
               else BadCommand;
             else BadCommand;
             end;
        'j':
             if      OpIs('jump')                  then JumpTo(Arg+':',True)
             else if OpIs('jump.iffalse')          then JumpTo(Arg+':',(PreviousResult=0))
             else if OpIs('jump.iftrue')           then JumpTo(Arg+':',(PreviousResult=1))
             else if OpIs('jump.ifvoid')           then fJumpIfVoid
             else if OpIs('jump.ifeq')             then JumpIfEq
             else if OpIs('jump.ifeq.v')           then JumpIfEqV
             else if OpIs('jump.ifprefix')         then JumpIfPrefix
             else if OpIs('jump.ifnoprefix')       then JumpIfNoPrefix
             else if OpIs('jump.ifinfix')          then JumpIfInfix
             else if OpIs('jump.ifnoinfix')        then JumpIfNoInfix
             else if OpIs('jump.ifne')             then JumpIfNe
             else if OpIs('jump.ifgt')             then JumpIfGt
             else if OpIs('jump.iflt')             then JumpIfLt
             else if OpIs('jump.ifgt.num')         then JumpIfGtNum
             else if OpIs('jump.iflt.num')         then JumpIfLtNum
             else if OpIs('jump.ifgt.float')       then JumpIfGtNumFloat
             else if OpIs('jump.iflt.float')       then JumpIfLtNumFloat
             else if OpIs('jump.top.ifvoid')       then fJumpTopIfVoid
             else if OpIs('jump.top.ifvoid.pop')   then fJumpTopIfVoidPop
             else if OpIs('java')                  then fJava
             else if OpIs('java2')                 then fJava2
             else if OpIs('java3')                 then fJava3
             else if OpIs('jdatobot')              then fJava3
             else if OpIs('jumpinglevel')          then JumpingLevel:=IntOf(Arg)
             else if OpIs('journal')               then fJournal
             else if OpIs('journal.db')            then fJournalDb
             else if OpIs('journal.name')          then fJournalName
             else if OpIs('journal.aname')         then fJournalArchiveName
             else if OpIs('jsr')                   then fCallSubrWithArgs
             else if OpIs('jsr.rt')                then fCallSubrWithArgsAndRT
             else BadCommand;
        'k':
             if OpIs('key.name')                   then KeyName:=ResolvedArg
             else if OpIs('key.value')             then KeyValue:=ResolvedArg
             else if OpIs('kkk') or OpIs('kk')     then fKKK
             else if OpIs('kdv.load')              then fKdvLoad
             else BadCommand;
        'l':
             if      OpIs('loop')                   then fLoop
             else if OpIs('let')                    then SetContextValue(False,False,False,False)
             else if OpIs('load.sql') or OpIs('lq') then fLoadSql
             else if OpIs('lqc')                    then fLoadSqlClear
             else if OpIs('lk') or OpIs('load.using.key') then fLoadSqlK(false)
             else if OpIs('lki')                    then fLoadSqlK(true)
             else if OpIs('load.sql.hidden')        then fLoadSqlHidden
             else if OpIs('log.clear')              then LogText:=''
             else if OpIs('log.text')               then LogText:=LogText+Arg+' '
             else if OpIs('log.value')              then LogText:=LogText+Context.Values[Arg]+' '
             else if OpIs('log.write')              then RememberEvent(LogText)
             else if OpIs('list.clear')             then List.Clear
             else if OpIs('list.add')               then fListAdd(List)
             else if OpIs('list.count')             then fListCount(List)
             else if OpIs('list.value')             then fListValue(List)
             else if OpIs('list.value.idx')         then fListValueIdx(List)
             else if OpIs('list.load')              then fListLoad(List)
             else if OpIs('list.load.select')       then fListLoadSelect
             else if OpIs('list.nv')                then fListGetNV(List) // novinka
             else if OpIs('list.sort')              then List.Sort // novinka
             else if OpIs('list.make.of')           then fListMakeOf // novinka
             else if OpIs('list.of.files')          then fListOfFiles
             else if OpIs('list2.clear')            then List2.Clear
             else if OpIs('list2.add')              then fListAdd(List2)
             else if OpIs('list2.count')            then fListCount(List2)
             else if OpIs('list2.value')            then fListValue(List2)
             else if OpIs('list2.value.idx')        then fListValueIdx(List2)
             else if OpIs('list2.load')             then fListLoad(List2)
             else if OpIs('list3.clear')            then List3.Clear
             else if OpIs('list3.add')              then fListAdd(List3)
             else if OpIs('list3.count')            then fListCount(List3)
             else if OpIs('list3.value')            then fListValue(List3)
             else if OpIs('list3.value.idx')        then fListValueIdx(List3)
             else if OpIs('list3.load')             then fListLoad(List3)
             else if OpIs('list.diffs')             then fListDifferences
             else if OpIs('list.next.diff')         then fNextDiff
             else if OpIs('list.construct')         then fListConstruct(0)
             else if OpIs('list.construct.from.view') then fListConstructFromView(0)
             else if OpIs('load.equations')         then LoadEquations
             else if OpIs('load.context')           then LoadContext
             else if OpIs('ln')                     then fLn
             else if OpIs('load.under')             then fLoadUnder(False)
             else if OpIs('load.profile')           then CurrentProfile:=Arg
             else if OpIs('load.under.prg')         then fLoadUnder(True)
             else if OpIs('load.controls')          then fLoadControls
             else if OpIs('lock')                   then fLock
             else if OpIs('launch')                 then fLaunch(false,false)
             else if OpIs('launch.view')            then fLaunchView
             else if OpIs('launch.named')           then fLaunch(true,false)
             else if OpIs('launch.named.exit')      then fLaunch(true,true)
             else if OpIs('launch.closeall')        then MainFrm.CloseAll
             else if OpIs('launch.vxl')             then
               fLaunchVxl
             else if OpIs('login.get')              then Context.Values[ResolvedArg]:=LoginContext.Values[ResolvedArg]
             else if OpIs('log.values')             then fLogValues
             else if OpIs('license')                then fLicense
             else if OpIs('licence')                then fLicense
             else if OpIs('loglowlevel')            then Utilities.LogLevel:=IntOf(Arg)
             else if OpIs('library.dump')           then fLibraryDump
             else if OpIs('list.op')                then fListOp
             else if OpIs('lcondition')             then lCondition
             else if OpIs('lowercase') or OpIs('locase') or OpIs('lower') then fLowerCase
             else if OpIs('learn')                  then fLearn
             else if OpIs('lek.name')               then fLekName
             else if OpIs('lacmus')                 then fLacmus
             else BadCommand;
        'm':
             if      OpIs('mod')                   then fMod
             else if OpIs('mul')                   then fMul
             else if OpIs('mulf')                  then fMulf
             else if OpIs('mkdir')                 then CreateDir(ResolvedArg)
             else if OpIs('mkdir.recursive')       then fMkDirRecursive
             else if OpIs('menu.read')             then ReadMenu(MenuDir+Arg)
             else if OpIs('menu.call')             then
               PreviousResult:=CallMenu
             else if OpIs('menu.action')           then DoMenuAction
             else if OpIs('menu.reset')            then DoMenuReset
             else if OpIs('menu.items')            then DoMenuItems
             else if OpIs('menu.seteq')            then DoMenuSetEq
             else if OpIs('matrix.clear')          then MatrixClear
             else if OpIs('matrix.accept')         then MatrixAccept
             else if OpIs('matrix.dump')           then MatrixDump
             else if OpIs('matrix.interval')       then MatrixInterval
             else if OpIs('menu.items.seq')        then DoSequencedMenuItems
             else if OpIs('menu.construct')        then fListConstruct(1)
             else if OpIs('menu.multiselect')      then fMultiSelect
             else if OpIs('menu.multiselect.etc')  then fMultiSelectEtc
             else if OpIs('menu.multiselect.noetc')then fMultiSelectNoEtc
             else if OpIs('menu.getnext')          then fMenuGetNext
             else if OpIs('menu.global')           then AnalyzedList:=GlobalAnalyzedList
             else if OpIs('map')                   then FMap(False)
             else if OpIs('map.wild')              then FMap(True)
             else if OpIs('map.reverse')           then FMapReverse
             else if OpIs('mapv')                  then FMapV
             else if OpIs('make.floats')           then FMakeFloats(True)
             else if OpIs('make.floats.setv')       then FSetvAndMakeFloats(True,False)
             else if OpIs('make.floats.setv.00')       then FSetvAndMakeFloats(True,True)
             else if OpIs('make.integers')         then FMakeIntegers(True)
             else if OpIs('make.floats.off')       then FMakeFloats(False)
             else if OpIs('make.floats.setv.off')   then FSetvAndMakeFloats(False,False)
             else if OpIs('make.floats.setv.00.off') then FSetvAndMakeFloats(False,True)
             else if OpIs('make.integers.off')     then FMakeIntegers(False)
             else if OpIs('mapper')                then fMapper
             else if OpIs('mem.clear')             then MemContext.Clear
             else if OpIs('mem.remember')          then fMemRemember
             else if OpIs('mem.recall')            then fMemRecall
             else if OpIs('memorize')              then fMemorize
             else if OpIs('memorize.list')         then fMemorizeList
             else if OpIs('mix.memos')             then fMixMemos
             else BadCommand;
       'n':
             if OpIs('new_hospid')                 then Context.Values['HospId']:=GetNewHospId
             else if OpIs('nice.number')           then fNiceNumber
             else if OpIs('number.14.4')           then f14_4
             else if OpIs('number.format')         then fNumberFormat
             else if OpIs('number.4.2')            then f4_2(false,false)
             else if OpIs('number.4.2.c')          then f4_2(true,false)
             else if OpIs('number.4.2.0.c')        then f4_2(true,true)
             else if OpIs('nested.wizard')         then fNestedWizard
             else if OpIs('nop')                   then begin end
             else if OpIs('nodebug')               then DebuggingAllowed:=Arg='1'
             else if OpIs('name')                  then FName
names T - nastaví proměnné _ListPipe a _ListComma jako seznam jmen sloupcu tabulky T
             else if OpIs('newop')                 then FNewOp
             else if OpIs('numbers')               then FNumbers
             else if OpIs('null.more')             then NullMore
             else if OpIs('number.pages')          then fNumberPages
                  
             else BadCommand;
        'o':
             if OpIs('opendoc')                    then
               begin
               utOpenDoc(ResolvedArg,'open');
               if OpenDocError then PreviousResult:=0 else PreviousResult:=1;
               end
             else if OpIs('opendoc?')                    then
               begin
               utOpenDoc(ResolvedArg,'open',true);
               if OpenDocError then PreviousResult:=0 else PreviousResult:=1;
               end
             else if OpIs('opendoc/')              then utOpenDoc(UnifySlashes(ResolvedArg),'open')
             else if OpIs('opendoc/?')             then utOpenDoc(UnifySlashes(ResolvedArg),'open',true)
             else if OpIs('order.by')              then fOrderBy
             else if OpIs('open.fg')               then fOpenFg
             else if OpIs('output.write')          then Writeln(outputx,fIndention,utDecodeString(Sysresolve(Arg,False)))
             else if OpIs('output.create')         then fCreate(outputx,false)
             else if OpIs('output.create.or.quit') then fCreate(outputx,True)
             else if OpIs('output.create.close')   then fCreateClose(outputx)
             else if OpIs('output.append')         then AppendOrCreateTextFile(outputx,Sysresolve(Arg,false))
             else if OpIs('output.close')          then CloseFile(outputx)
             else if OpIs('output.create.write.close')  then fCreateWriteClose(outputx)
             else if OpIs('output.fv')             then fWriteMoreV(True,outputx)
             else if OpIs('ones')                  then fOnes
             else if OpIs('out.buffer.clear')      then fOutBufferClear
             else if OpIs('out.buffer.append')     then fOutBufferAppend
             else if OpIs('out.buffer.getline')    then fOutBufferGetLine
             else if OpIs('out.buffer.set')        then fOutBufferSet
             else if OpIs('out.buffer.get')        then fOutBufferGet
             else if OpIs('out.buffer.import')     then fInpBufferImport(False)
             else if OpIs('out.buffer.import.noapos') then fOutBufferImport(true)
             else BadCommand;
        'p':
            case Op[2] of
            'u':
                if      OpIs('push') or OpIs('pu')    then Push(Arg,False)
                else if OpIs('push.clear')            then Push(Arg,True)
                else if OpIs('push.src')              then XPush(Arg,DropSrc)
                else if OpIs('push.dst')              then XPush(Arg,DropDst)
                else if OpIs('push.string')           then PushString(Arg)
                else if OpIs('push.diff')             then PushDiff
                else if OpIs('purify')                then fPurify
                else    BadCommand;
            'o':
                if OpIs('pop') or OpIs('po')          then Pop(Arg)
                else if OpIs('pos')                   then fPos
                else if OpIs('power')                 then fPower
                else if OpIs('popupmenu')             then fPopUpMenu
                else    BadCommand;
            'r':
                if OpIs('progress.show')              then ShowProgress
                else if OpIs('progress.tell')         then Tell(ResolvedArg)
                else if OpIs('progress.create')       then Progress2Create(ResolvedArg)
                else if OpIs('progress.begin')        then Progress2Begin(ResolvedArg)
                else if OpIs('progress.start')        then fProgressStart
                else if OpIs('progress.end')          then Progress2End(True)
                else if OpIs('progress.restart')      then begin Progress2End(True); fProgressStart end
                else if OpIs('progress.destroy')      then fProgressDestroy
                else if OpIs('progress.stop')         then fProgressStop(False)
                else if OpIs('progress.stop.exit')    then fProgressStop(True)
                else if OpIs('progress.clear')        then ClearProgress
                else if OpIs('printdoc')              then
                  begin
                  if WaitWhilePrinting or (CtxGet('DoWait')='1') then
                    utPrintDocAndWait(ResolvedArg,'print')
                  else
                    utPrintDoc(ResolvedArg,'print');
                  end
                else if OpIs('printdoc/')             then
                  begin
                  if WaitWhilePrinting or (CtxGet('DoWait')='1') then
                    utPrintDocAndWait(UnifySlashes(ResolvedArg),'print')
                  else
                    utPrintDoc(UnifySlashes(ResolvedArg),'print')
                  end
                else if OpIs('print')                 then fPrint
                else if OpIs('print.to')              then fPrintToPrinter
                else if OpIs('printer.exists')        then fPrinterExists
                else if OpIs('printer.exists.like')   then fPrinterExistsLike
                else if OpIs('printers')              then fPrinters
                else if OpIs('prefix')                then fPrefix
                else if OpIs('prefix.on')             then fPrefixOn
                else if OpIs('prefix.off')            then fPrefixOff
                else if OpIs('print.png')             then fPrintPng
                else if OpIs('prices.clear')          then PriceList.Clear
                else if OpIs('prices.read')           then fPricesRead
                else if OpIs('prices.remember')       then fPricesPut
                else if OpIs('prices.get')            then fPricesGet
                else if OpIs('prices.count')          then fPricesCount
                else BadCommand;
            'a':
                if OpIs('pad')                        then fPad
                else if OpIs('parse')                 then fParse
                else if OpIs('pages')                 then fPages
                else if OpIs('pack.on')               then fPackOn
                else if OpIs('pack.off')              then fPackOff
                else if OpIs('pack.equ')              then fPackMany
                else if OpIs('pass.csv')              then fPassCsv
                else BadCommand;
            'i':
                if OpIs('pipe.format')                then DbAccess.UsingPipeFormat:=Arg='1'
                else if OpIs('pip')                   then fPip
                else if OpIs('pip.strcat')            then fWhatStrcat('|')
                else if OpIs('pip.tofile')            then fXToFile('|')
                else BadCommand;
            'e':
                if OpIs('percent')                    then fPercent(False,False)
                else if OpIs('percent.comma')         then fPercent(True,False)
                else if OpIs('percent.round')         then fPercent(False,True)
                else BadCommand;
            'd':
                if OpIs('pdf.print.to')               then fPdfPrintTo
                else BadCommand;
            else BadCommand;
            end;
        'q':
             if OpIs('quietly.sql.script')         then  QuietlyRawSqlCommand(ResolvedArg)
             else if OpIs('quartal')               then  fLibQuartal
             else if OpIs('quartal.of')            then  fQuartalOf
             else if OpIs('quit')                  then fExitShowMessage(2)
             else if OpIs('quit.norefresh')        then fExitShowMessage(0)
             else if OpIs('quit.stop')             then
               begin
               fProgressStop(False);
               fExitShowMessage(0)
               end
             else BadCommand;
        'r':
          case Op[2] of
          'a':
             if      OpIs('randomize')             then Randomize
             else if OpIs('randomize+random')      then fRandomizeRandom
             else if OpIs('random')                then RandomString:=IntToStr(Random(4096))
             else if OpIs('random.get')            then fRandomGet
             else if OpIs('random.string')         then fRandomString
             else if OpIs('ramtext.clear')         then fClearRamText
             else if OpIs('ramtext.paste')         then fRamPaste(SysResolve(Arg,False))
             else if OpIs('ramtext.save')          then fSaveRamText(SysResolve(Arg,False))
             else if OpIs('ramtext.column')        then fRamTextColumn
             else if OpIs('ramtext.put.over')      then fRamTextPutOver
             else if OpIs('ramtext.get')           then fRamTextGet
             else BadCommand;
          'e':
             if      OpIs('return')                then DoExit
             else if OpIs('return.clear')          then DoExitClear
             else if OpIs('return.if')             then fExitIf
             else if OpIs('return.ifnot')          then fExitIfNot
             else if OpIs('return.unless')         then fExitIfNot
             else if OpLike('return.if')           then DoExitCnd(Copy(Op,Length('return.if')+1,Maxint))
             else if OpLike('return.if.')          then DoExitCnd(Copy(Op,Length('return.if.')+1,Maxint))
             else if OpIs('return.p')              then fReturnSubr
             else if OpIs('return.p.if')           then fReturnSubrIf
             else if OpIs('return.p.ifnot')        then fReturnSubrIfNot
             else if OpIs('return.p.unless')       then fReturnSubrIfNot
             else if OpIs('return.p.call')         then fCallArgs(True,false,false)
             else if OpIs('return.p.show.message') then WizardShowMessage(False,True)
             else if OpIs('repeat')                then begin end
             else if OpIs('restore')               then fRestore
             else if OpIs('return.values')         then fReturnValues
             else if OpIs('return.warning.ifvoid') then fReturnWarningIfVoid
             else if OpIs('return.warning')        then fReturnWarning
             else if OpIs('return.sub')            then PC:=ReturnPoint
             else if OpIs('return.subr')           then fReturnSubr
             else if OpIs('resolve')               then Stack[SP]:=SysResolve(Stack[SP],False)
             else if OpIs('resolve!')              then Stack[SP]:=utSubstString(Stack[SP],Context)
             else if OpIs('resolve!!')             then fResolve
             else if OpIs('remove.undesired')      then fRemoveUndesired
             else if OpIs('remove.undesired.tail') then fRemoveUndesiredTail
             else if OpIs('remove.marked')         then fRemove
             else if OpIs('remember')              then fRemember
             else if OpIs('rename')                then fRename
             else if OpIs('rename.to.old')         then fRenameToOld
             else if OpIs('report.header.1')       then ReportHeader1:=Arg
             else if OpIs('report.footer.1')       then ReportFooter1:=Arg
             else if OpIs('report.header.2')       then ReportHeader2:=Arg
             else if OpIs('report.footer.2')       then ReportFooter2:=Arg
             else if OpIs('report.header.3')       then ReportHeader3:=Arg
             else if OpIs('report.footer.3')       then ReportFooter3:=Arg
             else if OpIs('report.newline')        then ReportNewLine:=Arg
             else if OpIs('report.page.length')    then ReportPageLength:=StrToInt(Arg)
             else if OpIs('report.format')         then fReportFormat
             else if OpIs('report.diffs')          then fReportDiffs
             else if OpIs('read.equ')              then fReadEqu(gx) // novinka
             else if OpIs('read.from.file')        then fReadFromFile(False)
             else if OpIs('read.from.file.trim')   then fReadFromFile(True)
             else if OpIs('read.from.params')      then fReadFromParFile(False)
             else if OpIs('read.from.params.trim') then fReadFromParFile(True)
             else BadCommand;
          'f':
             if      OpIs('rf.create')             then fRfCreate
             else if OpIs('rf.write')              then fRfWrite
             else if OpIs('rf.erase')              then fRfErase
             else if OpIs('rf.writeln')            then fRfWriteln
             else if OpIs('rf.readln')             then fRfReadln
             else if OpIs('rf.reset')              then fRfReset
             else if OpIs('rf.open')               then fRfOpen
             else if OpIs('rf.view.inner')         then fRfViewInner
             else if OpIs('rf.view.inner.i')       then fRfViewInnerI
             else if OpIs('rf.vi')                 then fRfViewInnerI
             else if OpIs('rf.subst')              then fRfSubst
             else if OpIs('rf.fv')                 then fRfFv(True)
             else if OpIs('rf.fv.nolf')            then fRfFv(False)
             else if OpIs('rf.get')                then fRfGet
             else if OpIs('rf.close')              then begin end
             else if OpIs('rf1.close')              then begin end
             else if OpIs('rf2.close')              then begin end
             else if OpIs('rf1.create')             then begin Arg:='1,1'; fRfCreate end
             else if OpIs('rf1.write')              then begin Arg:='1,'+Arg; fRfWrite end
             else if OpIs('rf1.erase')              then begin Arg:='1'; fRfErase end
             else if OpIs('rf1.writeln')            then begin Arg:='1,'+Arg; fRfWriteln end
             else if OpIs('rf1.readln')             then begin Arg:='1,'+Arg; fRfReadln end
             else if OpIs('rf1.reset')              then begin Arg:='1,'+Arg; fRfReset end
             else if OpIs('rf1.open')               then begin Arg:='1,'+Arg; fRfOpen end
             else if OpIs('rf1.view.inner')         then begin Arg:='1'; fRfViewInner end
             else if OpIs('rf1.view.inner.i')       then begin Arg:='1'; fRfViewInnerI end
             else if OpIs('rf1.vi')                 then begin Arg:='1'; fRfViewInnerI  end
             else if OpIs('rf1.subst')              then begin Arg:='1,'+Arg; fRfSubst end
             else if OpIs('rf1.fv')                 then begin Arg:='1,'+Arg; fRfFv(True) end
             else if OpIs('rf1.fv.nolf')            then begin Arg:='1,'+Arg; fRfFv(False) end
             else if OpIs('rf1.get')                then begin Arg:='1,'+Arg; fRfGet end
             else if OpIs('rf2.create')             then begin Arg:='2,2'; fRfCreate end
             else if OpIs('rf2.write')              then begin Arg:='2,'+Arg; fRfWrite end
             else if OpIs('rf2.erase')              then begin Arg:='2'; fRfErase end
             else if OpIs('rf2.writeln')            then begin Arg:='2,'+Arg; fRfWriteln end
             else if OpIs('rf2.readln')             then begin Arg:='2,'+Arg; fRfReadln end
             else if OpIs('rf2.reset')              then begin Arg:='2,'+Arg; fRfReset end
             else if OpIs('rf2.open')               then begin Arg:='2,'+Arg; fRfOpen end
             else if OpIs('rf2.view.inner')         then begin Arg:='2'; fRfViewInner end
             else if OpIs('rf2.view.inner.i')       then begin Arg:='2'; fRfViewInnerI end
             else if OpIs('rf2.vi')                 then begin Arg:='2'; fRfViewInnerI  end
             else if OpIs('rf2.subst')              then begin Arg:='2,'+Arg; fRfSubst end
             else if OpIs('rf2.fv')                 then begin Arg:='2,'+Arg; fRfFv(True) end
             else if OpIs('rf2.fv.nolf')            then begin Arg:='2,'+Arg; fRfFv(False) end
             else if OpIs('rf2.get')                then begin Arg:='2,'+Arg; fRfGet end
             else BadCommand;
          '0':
             if      OpIs('r0.set')                then R0:=ResolvedArg
             else if OpIs('r0.set.raw')            then R0:=Arg
             else if OpIs('r0.store')              then Context.Values[Arg]:=R0
             else if OpIs('r0.resolve')            then R0:=SysResolve(R0,False)
             else if OpIs('r0.resolve!')           then R0:=utSubstString(R0,Context)
             else if OpIs('r0.resolve!!')          then R0:=utSubstStringRaw(ResolveGlobals(R0),Context)
             else if OpIs('r0.set.raw')            then R0:=Arg
             else BadCommand;
          '1':
             if      OpIs('r1.set')                then R1:=ResolvedArg
             else if OpIs('r1.set.raw')            then R1:=Arg
             else BadCommand;
          'o':
             if      OpIs('round')                 then fRound
             else BadCommand;
           'c':
             if      OpIs('rc')                    then fRC
             else BadCommand;
           't':
             if OpIs('rt')                    then fReturnSubr
             else if OpIs('rt.if')            then fReturnSubrIf
             else if OpIs('rt.ifnot')         then fReturnSubrIfNot
             else if OpIs('rt.unless')        then fReturnSubrIfNot
             else if OpIs('rt.call')          then fCallArgs(True,false,false)
             else if OpIs('rt.show.message')  then WizardShowMessage(False,True)
             else if OpLike('rt.if')          then fReturnSubrCnd(Copy(Op,Length('rt.if')+1,Maxint))
             else if OpLike('rt.if.')         then fReturnSubrCnd(Copy(Op,Length('rt.if.')+1,Maxint))
             else BadCommand;
           's':
             if OpIs('rsr')                        then fReturnSubr
             else if OpIs('rsr.if')                then fReturnSubrIf
             else if OpIs('rsr.ifnot')             then fReturnSubrIfNot
             else if OpIs('rsr.unless')            then fReturnSubrIfNot
             else if OpIs('rsr.call')              then fCallArgs(True,false,false)
             else if OpIs('rsr.show.message')      then WizardShowMessage(False,True)
             else BadCommand
          else BadCommand;
          end;
        's':
            case Op[2] of
              'e':
                  if OpIs('set') or OpIs('se')          then SetMore(false)
                  else if OpIs('setv')                  then SetMoreV(false,false)
                  else if OpIs('setv.upper')            then SetMoreV(false,true)
{doc}             else if OpIs('set.trim')              then SetMore(True)
                  else if OpIs('set@')                  then SetClever(False)
                  else if OpIs('set@.trim')             then SetClever(True)
{doc}             else if OpIs('set.slashes')           then SetMoreSlashes
                  else if OpIs('setup')                 then fSetup
                  else if OpIs('setv.trim')             then SetMoreV(true,false)
                  else if OpIs('set.more')              then SetMore(false)
                  else if OpIs('setv.multi')            then SetvMoreMulti
                  else if OpIs('set.more.trim')         then SetMore(true)
                  else if OpIs('set.push')              then fSetAndPush
                  else if OpIs('select')                then fSelect
                  else if OpLike('set.if')              then fSetMoreCnd(false,Copy(Op,Length('set.if')+1,Maxint))
                  else if OpLike('set.if.')             then fSetMoreCnd(false,Copy(Op,Length('set.if.')+1,Maxint))
                  else if OpLike('set.trim.if')         then fSetMoreCnd(true,Copy(Op,Length('set.trim.if')+1,Maxint))
                  else if OpLike('setv.if')             then fSetMoreVCnd(false,Copy(Op,Length('setv.if')+1,Maxint))
                  else if OpLike('set.trim.if.')        then fSetMoreCnd(true,Copy(Op,Length('set.trim.if.')+1,Maxint))
                  else if OpLike('setv.if.')            then fSetMoreVCnd(false,Copy(Op,Length('setv.if.')+1,Maxint))
                  else if OpIs('set.outer')             then fSetOuter
                  else if OpIs('set.eq')                then SetContextValue(False,False,False,False)
                  else if OpIs('set.eq.nonvoid')        then SetContextValue(False,False,False,True)
                  else if OpIs('set.success')           then PreviousResult:=1
                  else if OpIs('set.error')             then PreviousResult:=0
                  else if OpIs('sed.subst')             then fSedSubst
                  else BadCommand;
              'a':
                  if OpIs('save')                       then fSave
                  else if OpIs('save.set')              then fSaveSet
                  else if OpIs('save.vxl')              then fSaveVxl
                  else BadCommand;
              'c':
                  if OpIs('scope.list')                 then fScopeList
                  else if OpIs('schedule.clear')        then iClear
                  else if OpIs('schedule.check')        then fisFill
                  else if OpIs('scope.int')             then fScopeInt
                  else BadCommand;
              'u':
                  if OpIs('succ')                       then fSucc
                  else if OpIs('sub')                   then fSub
                  else if OpIs('subf')                  then fSubf
                  else if OpIs('sum')                   then fSum
                  else if OpIs('sumf')                  then fSumf
                  else if OpIs('substitution')          then fSubstitution
                  else if OpIs('suffix')                then fSuffix
                  else if OpIs('suffix.on')             then fSuffixOn
                  else if OpIs('suffix.off')            then fSuffixOff
                  else if OpIs('supress')               then fSupress
                  else if OpIs('subst')                 then
                    SubstFile(ResolvedArg,false)
                  else if OpIs('subst.xml')             then
                    SubstFileXml(ResolvedArg,false)
                  else if OpIs('subst.xml.cdata')       then
                    SubstFileXmlCData(ResolvedArg,false)
                  else if OpIs('subst.view')            then SubstFile(ResolvedArg,true)
                  else if OpIs('subst.append')          then SubstFileAppending(ResolvedArg,True)
                  else if OpIs('subst.append.novoid')   then SubstFileAppending(ResolvedArg,False)
                  else if OpIs('substitutions')         then fSubstitutions
                       
                  else BadCommand;
              'l':
                  if OpIs('slashes')                    then fSlashes(False)
                  else if OpIs('sl')                    then fSL
                  else if OpIs('sleep')                 then Sleep(IntOf(Arg))
                  else BadCommand;
              'h':
                  if OpIs('shl')                        then fShiftLeft
                  else if OpIs('shift.pattern')         then fShiftPattern
                  else if OpIs('shift.many.down')       then fShiftManyDown
                  else if OpIs('shift.many.up')         then fShiftManyUp
                  else if OpIs('shift.in.list')         then fShiftInList
                  else if OpIs('show.warning')          then WizardShowWarning(False,False)
                  else if OpIs('show.message')          then WizardShowMessage(False,False)
                  else if OpIs('show.message.goto')     then ShowMessageAndGoto
                  else if OpIs('show.message.exit')     then ShowMessageAndExit
                  else if OpIs('show.warning.nice')     then WizardShowWarning(True,False)
                  else if OpIs('show.message.nice')     then WizardShowMessage(True,False)
                  else if OpIs('shellapi')              then fShellApi
                  else if OpIs('shift.day')             then fShiftDate(False)
                  else if OpIs('shift.day.15')          then fShiftDate(True)
                  else if OpIs('shell')                 then
                    ShellCommand(unifyslashes(Arg))
                  else if OpIs('shell.visible')            then
                    ShellCommand(unifyslashes(Arg),True,False,True)
                  else BadCommand;
              'q':
                  if OpIs('sql.script') or OpIs('sql')  then fSqlScript
                  else if OpIs('sqrt')                  then fSqrtf
                  else if OpIs('sql.text')              then SqlText:=Arg
                  else if OpIs('sql.to.context')        then fSqlToContext
                  else if OpIs('sql.load.cmd')          then SqlLoadCmd
                  else if OpIs('sql.load')              then SqlLoad
                  else if OpIs('sql.cmd.file')          then RawSqlCommandFile(ResolvedArg)
                  else if OpIs('sql.exec.file')     then SqlExecFile(ResolvedArg)
                  else if OpIs('squeeze.serie')         then fSqueezeSerie
                  else BadCommand;
              'r':
                  if OpIs('src.to.context')             then XToContext(DropSrc)
                  else BadCommand;
              'y':
                  if OpIs('system.set')                 then SystemContext.Values[Arg]:=Context.Values[Arg]
                  else if OpIs('sysresolve')            then Stack[SP]:=SysResolve(Stack[SP],false)
                  else if OpIs('system.define')         then DefineVariable
                  else if OpIs('system.undefine')       then SystemContext.Values[ResolvedArg]:=''
                  else if OpIs('system')                then
                    utCommand(Sysresolve(Arg,false))
                  else if OpIs('sysutils.set')          then fSysUtilsSet
                  else if OpIs('syntax')                then fSyntax
                  else if OpIs('syslog')                then fCentralSysLog
                  else BadCommand;
              't':
                  if OpIs('startsql')                   then QuietlyStartSql(ResolvedArg)
                  else if OpIs('stopsql')               then fStopSql
                  else if OpIs('stopsql.startsql')      then
                    begin
                    fStopSql;
                    QuietlyStartSql(ResolvedArg);
                    end
                  else if OpIs('start.sql')             then QuietlyStartSql(ResolvedArg)
                  else if OpIs('stop.sql')              then fStopSql
                  else if OpIs('store.clear')           then Store.Clear
                  else if OpIs('store.merge')           then MixNonVoidValues(Context,Store)
                  else if OpIs('string.to.hex')         then fStringToHex
                  else if OpIs('string.from.hex')       then fStringFromHex
                  else if OpIs('static.set')            then fStaticSet
                  else if OpIs('static.get')            then fStaticGet
                  else if OpIs('static.set.from.file')  then fStaticSetFromFile
                  else if OpIs('static.get.to.file')    then fStaticGetToFile
                  else if OpIs('static.clear')          then ClearStaticStrings
                  else if OpIs('strcat')                then fStrcat(False)
                  else if OpIs('strcat.ln')             then fStrcat(True)
                  else if OpIs('strcombine')            then fStrcombine(False)
                  else if OpIs('strcombine.ln')         then fStrcombine(True)
                  else if OpIs('string')                then fStringOp
                  else if OpIs('stetoskop')             then fStetoskop
                  else if OpIs('stetoskop-m')           then fStetoskopM
                  else if OpIs('strextend')             then fStrextend
                  else if OpIs('strextend.raw')             then fStrextendRaw
                  else BadCommand;
              '1':
                  if OpIs('s1.set')                     then S1:=Context.Values[Arg]
                  else if OpIs('s1.test')               then Cmp(S1,SysResolve(Arg,False))
                  else BadCommand;
              'o':
                  if OpIs('sort')                       then fSort
                  else if OpIs('sort.mbiobook')         then fSortMbioBook
                  else BadCommand;
              'v':
                  if OpIs('sv')                         then SetMoreV(false,false)
                  else BadCommand;
              'w':
                  if OpIs('switch.fetch')               then fSwitchFetch
                  else if OpIs('swap')                  then fSwap
                  else if OpIs('switch2wizard')         then SwitchWiz:=ResolvedArg
                  else BadCommand;
              'p':
                  if OpIs('spaces.out')                 then fSpacesOut
                  else if OpIs('spaces.strcat')         then fWhatStrcat(' ')
                  else if OpIs('split')                 then fGetAtomLoop
                  else BadCommand;
              '.':
                  if OpIs('s.close')                    then begin end
                  else if OpIs('s.start') or OpIs('s.clear') then begin Arg:='1,1'; fRfCreate end
                  else if OpIs('s.put') or OpIs('s.write') or OpIs('s.append')  then begin Arg:='1,'+Arg; fRfWrite end
                  else if OpIs('s.putln') or OpIs('s.writeln') or OpIs('s.appendln') then begin Arg:='1,'+Arg; fRfWriteln end
                  else if OpIs('s.vi')                  then begin Arg:='1'; fRfViewInnerI  end
                  else if OpIs('s.subst')               then begin Arg:='1,'+Arg; fRfSubst end
                  else if OpIs('s.fv')                  then begin Arg:='1,'+Arg; fRfFv(True) end
                  else if OpIs('s.fv.nolf')             then begin Arg:='1,'+Arg; fRfFv(False) end
                  else if OpIs('s.get')                 then begin Arg:='1,'+Arg; fRfGet end
                  else BadCommand;
             else BadCommand;
             end;
        't':
          case Op[2] of
          'a':
             if      OpIs('table.update')          then fUpdate
             else if OpIs('table.try.update')      then fTryUpdate
             else if OpIs('table.insert')          then fInsert
             else if OpIs('table.name')            then DbTableName:=Arg
             else if OpIs('tag')                   then fTag
             else if OpIs('tail')                  then fTail
             else if OpIs('tail.last.x')           then fTailX
             else if OpIs('tables.import')         then fManipulateTables('import')
             else if OpIs('tables.zimport')        then fManipulateTables('zimport')
             else if OpIs('tables.zexport')        then fManipulateTables('zexport')
             else if OpIs('tables.export')         then fManipulateTables('export')
             else if OpIs('tables.empty')          then fManipulateTables('empty')
             else if OpIs('table2external')        then fTableToExternal
             else if OpIs('tab.tofile')            then fXToFile(#9)
             else if OpIs('tab')                   then fTab
             else if OpIs('tab.strcat')            then fWhatStrcat('\t')
             else BadCommand;
          'e':
             if      OpIs('test')                  then TestArg(Context)
             else if OpIs('text.pos')              then fTextPos
             else if OpIs('text.copy')             then fTextCopy
             else if OpIs('text.delete')           then fTextDelete
             else if OpIs('text.insert')           then fTextInsert
             else if OpIs('text.dotlines.out')     then fTextDotLinesOut
             else if OpIs('text.no.dots')          then fTextNoDots
             else if OpIs('text.insert.line')      then fTextInsertLine
             else if OpIs('text.cleanup')          then fTextCleanup
             else if OpIs('terminate')             then
               begin
               OnExitScriptCancelled:=True;
               Halt;
               end
             else BadCommand;
          'i':
             if      OpIs('time.shift')            then fShiftTime
             else if OpIs('tick.report')           then fTickReport
             else if OpIs('tick.profile')          then fTickProfileReport(ResolvedArg)
             else BadCommand;
          'm':
             if      OpIs('tmpfile.subst')         then SubstFile(ResolvedArg,false)
             else if OpIs('tmpfile.view')          then BetterViewer(TmpFile)
             else if OpIs('tmpfile.standard')      then TmpFile:=StdTmpFile
             else if OpIs('tmpfile.name')          then TmpFile:=ResolvedArg
             else if OpIs('tmpfile.view.inner')    then utInnerViewer(TmpFile,false)
             else BadCommand;
          'o':
             if      OpIs('tomorrow')              then fTomorrow
             else if OpIs('to.ddmmyyyy')           then fSmartToDDMMYYYY
             else if OpIs('to.yn')                 then fSmartToYn
             else if OpIs('to.number')             then fSmartToNumber
             else if OpIs('today')                 then fToday
             else if OpIs('tofile')                then fToFile
             else if OpIs('touples.clear')         then TouplesClear
             else if OpIs('touples.get')           then fTouplesGet
             else if OpIs('touples.register.pip')  then fTouplesRegisterPip
             else if OpIs('touples.register') then fTouplesRegisterList
             else if OpIs('touples.cnt')           then CtxPut(ResolvedArg,StringOf(TouplesCnt))
             else if OpIs('touples.get')           then fTouplesGet
             else if OpIs('touples.get.xth')       then fTouplesXGet
             else if OpIs('touples.pip')           then fTouplesPip
             else if OpIs('touples.ucet')          then fTouplesUcet
             else BadCommand;
          'r':
             if      OpIs('trim')                  then fTrim
             else if OpIs('trim.trailing.balast')  then fTrimTrailingBalast
             else if OpIs('try.update')            then fTryUpdate
             else if OpIs('try.update.db')         then fTryUpdateDb
             else if OpIs('try.insert')            then fTryInsert
             else if OpIs('try.insert.break')      then fTryInsertBreak
             else if OpIs('try.update.break')      then fTryUpdateBreak
             else if OpIs('try.insert.db')         then fTryInsertDb
             else if OpIs('try.insert.saved')      then fTryInsertSaved
             else if OpIs('try.insert.saved.db')   then fTryInsertSavedDb
             else if OpIs('try.delete')            then fTryDelete
             else if OpIs('try.sql.script')        then fTrySqlScript
             else if OpIs('try.delete.db')         then fTryDeleteDb
             else if OpIs('translate.l2r')         then fContextTranslateL2R
             else if OpIs('translate.r2l')         then fContextTranslateR2L
             else if OpIs('translate')             then fTranslate
             else if OpIs('trunc.number')          then fTruncNumber
             else if OpIs('try.insert.dump')       then fTryInsertDump(False)
             else if OpIs('try.update.dump')       then fTryUpdateDump(False)
             else if OpIs('try.insert.dump.exit')  then fTryInsertDump(True)
             else if OpIs('try.update.dump.exit')  then fTryUpdateDump(True)
             else if OpIs('tr')                    then fTr
             else if OpIs('tr.loop')               then fTrLoop
             else if OpIs('treewindowadd')         then fTreeWindowAdd
             else if OpIs('treewindow.keepfocus')  then fTreeWindowKeepFocus
             else if OpIs('trace')                 then fTrc
             else if OpIs('traverse.tables')       then fTraverseTables
             else if OpIs('traverse.params')       then fTraverseParams
             else if OpIs('trounce')               then fTrounce
             else if OpIs('trump')                 then fTrump
             else BadCommand;
          'w':
             if      OpIs('two.columns')           then fTwoColumns
             else BadCommand;
          'h':
             if OpIs('thru')                       then fThruCommand(False)
             else if OpIs('thruc')                 then fcThruCommand(False)
             else BadCommand;
          else BadCommand;
        end;
        'u':
             if OpIs('upper') or OpIs('upcase')    then fUpper
             else if OpIs('until')                 then fUntilCommand
             else if OpIs('untag')                 then fUntag
             else if OpIs('unpack')                then fUnpack
             else if OpIs('unpack.in.order')       then fUnpackInOrder
             else if OpIs('unpack.equ')            then fUnPackMany
             else if OpIs('update') or OpIs('up')  then fUpdate
             else if OpIs('unlock')                then fUnlock
             else if OpIs('unify.number')          then fUnifyNumber
             else if OpIs('unify.lf')              then fUnifyLf
             else if OpIs('unify.cents')           then fUnifyCents
             else if OpIs('unify.string')          then fUnifyString
             else if OpIs('unlink')                then fUnlink
             else if OpIs('unwrap')                then UnwrapFile
             else if OpIs('unwrap.paragraphs')     then UnwrapParagraphs
             else if OpIs('user')                  then fResetUser
             else if OpIs('undevil')               then fUndevil
             else if OpIs('unless')                then UnlessEnabled := Arg='on'
             else if OpIs('us')                    then Context.Assign(ContextValues)
             else if OpIs('use')                   then Context.Assign(ContextValues)
             else if OpIs('use.only')              then fRestrict(0)
             else if OpIs('unpip')                 then fUnPip
             else if OpIs('unpip.trim')            then fUnPip
             else if OpIs('unpip.fromfile')        then fUnXFromFile('|')
             else if OpIs('uncomma')               then fUnComma
             else if OpIs('uncomma.del')           then fUnCommaDel
             else if OpIs('uncomma.unquote')       then fUnCommaUnQuote
             else if OpIs('uncomma.trim')          then fUnComma
             else if OpIs('uncsv')                 then fUnCsv
             else if OpIs('uncsv.unquote')         then fUnCsvUnquote
             else if OpIs('uncsv.del')             then fUnCsvDel
             else if OpIs('uncsv.fromfile')        then fUnXFromFile(';')
             else if OpIs('undot')                 then fUnDot
             else if OpIs('uncsv.trim')            then fUnCsv
             else if OpIs('unquote')               then fUnQuote
             else if OpIs('untab')                 then fUnTab
             else if OpIs('untab.trim')            then fUnTab
             else if OpIs('untab.fromfile')        then fUnXFromFile(#9)
             else if OpIs('unempty')               then fUnEmpty
             else if OpIs('unz')                   then fUnZ
             else if OpIs('utcontext')             then XtoContext(utContext)
             else if OpIs('unczetc')               then fUnCzEtc
             else if OpIs('unczech')               then fUnCzech
             else if OpIs('uncrlf')                then fUnCrLf
             else if OpIs('undesired')             then fRemoveUndesired
             else if OpIs('unlearn.all')           then UnlearnAll
             else if OpIs('unlearn')               then Unlearn(ResolvedArg)
             else BadCommand;
        'v':
             if OpIs('view.refresh')               then ReturnedResult:=2
             else if OpIs('view.refresh.all')      then Main.MainFrm.RefreshAllViews
             else if OpIs('view.search')           then fViewSearch
             else if OpIs('view.refresh.all')      then Main.MainFrm.RefreshAllViews
             else if OpIs('viewer')                then BetterViewer(ResolvedArg)
             else if OpIs('viewer.exit')           then begin BetterViewer(ResolvedArg); DoExitNow(2); end
             else if OpIs('viewer.colors')         then fViewerColors
             else if OpIs('view.inner')            then
               begin
               JustSpooled:='';
               utInnerViewer(ResolvedArg,false,Context.Values['_Wrapping']='1');
               CtxPut('_JustSpooled',JustSpooled);
               end
             else if OpIs('view.ro')               then fViewRo
             else if OpIs('view.better')           then fBetterViewer
             else if OpIs('viewer.inner')          then utInnerViewer(ResolvedArg,false,Context.Values['_Wrapping']='1')
             else if OpIs('viewer.font')           then IncreaseFontBy:=IntOf(Arg)
             else if OpIs('view.inner.erase')      then begin utInnerViewer(ResolvedArg,false,Context.Values['_Wrapping']='1'); Ferase(ResolvedArg); end
             else if OpIs('view.inner.erase.exit') then begin utInnerViewer(ResolvedArg,false,Context.Values['_Wrapping']='1'); Ferase(ResolvedArg); DoExitNow(2); end
             else if OpIs('view.inner.ro')         then utInnerViewer(ResolvedArg,true,Context.Values['_Wrapping']='1')
             else if OpIs('view.inner.exit')       then begin utInnerViewer(ResolvedArg,false,Context.Values['_Wrapping']='1'); DoExitNow(2); end
             else if OpIs('verify')                then fVerify
             else if OpIs('void')                  then fClearMore
             else BadCommand;
        'w':
             if      OpIs('wizard')                then CallWizard(Arg,False)
             else if OpIs('wizard.or.exit')        then CallWizard(Arg,True)
             else if OpIs('wi')                    then fDynamicWizardCall(True,'')
             else if OpIs('wizard.keydown')        then LaKeyDown:=ResolvedArg
             else if OpIs('wizard.fkeys.set')      then WizardKeyHandler:=ResolvedArg
             else if OpIs('wizard.fkeys.get')      then CtxPut(ResolvedArg,WizardKeyHandler)
             else if OpIs('wizard.shortcuts')      then fWizardShortCuts
             else if OpIs('write.context')         then WriteContext
             else if OpIs('worktable.reset')       then ResetWorkTable
             else if OpIs('worktable.accept.x')    then WorkTable.AcceptX(ResolvedArg)
             else if OpIs('worktable.sort.by')     then WorkTable.SortBy(ResolvedArg)
             else if OpIs('worktable.get')         then fWorkTableGetXth
             else if OpIs('worktable.put')         then fWorkTablePutXth
             else if OpIs('worktable.accept')      then WorkTable.Accept(Context)
             else if OpIs('worktable.assign.x')    then fWorkTableAssignFromXth
             else if OpIs('worktable.binsearch')   then fWorkTableBinSearch
             else if OpIs('worktable.load.sql')    then fWorkTableLoadSql
             else if OpIs('worktable.sort.by.3')   then fWorkTableSortBy3
             else if OpIs('watch')                 then fWatch
             else if OpIs('wildeditofcontext')     then fEditContext
             else if OpIs('who')                   then fWho
             else if OpIs('write.equ')             then fWriteEqu
             else if OpIs('wrap')                  then fWrap
             else if OpIs('write.scripts.summary') then WriteScriptsSummary
             else if OpIs('warning')               then WizardShowWarning(False,False)
             else if OpIs('week.of')                then fWeekOf
             else BadCommand;
        'x':
             if OpIs('xlator.load')                then DoXlatorLoad
             else if OpIs('xlator.apply')          then DoXlatorApply
             else if OpIs('xlator.csv')            then CsvToXlator(ResolvedArg)
             else if OpIs('xlog')                  then fXLog
             else if OpIs('xcounter')              then fXCounter
             else if OpIs('xxx')                   then fXXX
             else if OpIs('xxxkkk')                then begin fXXX; fKKK; end
             else if OpIs('xform')                 then fxForm
             else if OpIs('xml.encode')            then fXmlEncode
             else if OpIs('xml.decode')            then fXmlDecode
             else if OpIs('xml.encode.all')        then fXmlEncodeAll
             else if OpIs('xml.decode.all')        then fXmlDecodeAll
             else if OpIs('xmlwrapper.clear')      then
                begin
                if XmlWrapper = NIL then XmlWrapper:=TXmlWrapper.Create(nil);
                XmlWrapper.Clear;
                end
             else if OpIs('xmlwrapper.add')        then fXmlWrapperAdd
             else if OpIs('xmlwrapper.attribute')  then fXmlWrapperAttributes
             else if OpIs('xmlwrapper.addnode')    then fXmlWrapperAddNode
             else if OpIs('xmlwrapper.appendtext') then fXmlWrapperAppendText
             else if OpIs('xmlwrapper.appendraw')  then fXmlWrapperAppendRaw
             else if OpIs('xmlwrapper.savetofile') then fXmlWrapperSaveToFile
             else if OpIs('xmlwrapper.close')      then fXmlWrapperClose
             else if OpIs('xmlwrapper.add')        then fXmlWrapperAdd
// sem pridat funkce na eof a next
             else if OpIs('xmlwrapper.eof')        then fXmlWrapperInEof
             else if OpIs('xmlwrapper.next')       then fXmlWrapperInNext
             else if OpIs('xmlwrapper.load')       then fXmlWrapperInLoad
             else if OpIs('xmlwrapper.lfs')        then fXmlWrapperInLoadFromString
             else if OpIs('xmlwrapper.find')       then fXmlWrapperInFind
             else if OpIs('xmlwrapper.closein')    then fXmlWrapperInClose
             else if OpIs('xmlwrapper.xattr')      then fXmlWrapperInXAttr
             else if OpIs('xmlwrapper.xvalue')     then fXmlWrapperInXValue
             else if OpIs('xrx')                   then fXrx
             else BadCommand;
        'y':
             if      OpIs('yyyymmdd.ddmmyyyy')     then gyyyymmdd_ddmmyyyy
             else if OpIs('yyyymmdd.yyyy-mm-dd')   then gyyyymmdd_yyyy_mm_dd
             else if OpIs('yymmdd.yyyymmdd')       then fYYMMDD_YYYYMMDD
             else if OpIs('yyyymmdd2ddmmyyyy')     then fyyyymmdd2ddmmyyyy
             else if OpIs('yyyymmdd2cz')           then fyyyymmdd2ddmmyyyy
             else if OpIs('yyyymmdd2ddmmyyyy_void') then fyyyymmdd2ddmmyyyy_void
             else if OpIs('yyyymmdd2/ddmmyyyy')    then fslash_yyyymmdd2ddmmyyyy
             else if OpIs('yesterday')             then fYesterday
             else if OpIs('yestermonth')           then fYesterMonth
             else if OpIs('yyyymmdd')              then fyyyymmdd2ddmmyyyy
             else if OpIs('y.write')                    then
               begin
               V1:=utDecodeString(Sysresolve(Arg,False));
               Writeln(fy,V1)
               end
             else if OpIs('y.create')              then fCreate(fy,false)
             else if OpIs('y.close')               then
               begin
               CloseFile(fy);
               end
             else BadCommand;
        'z':
             if OpIs('zoom')                       then DoZoom
             else if OpIs('zeroes')                then fZeroes
             else BadCommand;
        '?':
            case Op[2] of
            'c':
                if OpIs('?call?')                  then fCallOrNot(False)
                else if OpIs('?call.or.exit?')     then fCallOrNot(True)
                else if OpIs('?call')              then fCallArgsOrExit
                else if OpIs('?call.args')         then fCallArgsOrExit
                else if OpIs('?confirm')           then fConfirm
                else if OpIs('?clear.getsql')      then begin Context.Clear; fgetSql(True); end
                else    BadCommand;
            'b':
                if      OpIs('?bad.value')         then fBadValue
                else if OpIs('?b.create')          then fbCreate
                else    BadCommand;
            'x':
                if OpIs('?xlate')                  then fXLate
                else    BadCommand;
            'i':
                if OpIs('?ifsome')                 then fIfSome
                else if OpIs('?inner')             then fInner
                else if OpIs('?infix.v')           then fInfixV
                else if OpIs('?infix')             then fInfix
                else if OpIs('?inner.variable')    then fInnerVariable
                else    BadCommand;
            's':
                if OpIs('?switch')                 then fSwitch
                else if OpIs('?switch.v')          then JumpTo(Context.Values[ResolvedArg]+':',True)
                else    BadCommand;
            'e':
                if OpIs('?eq.cc')                  then fEq
                else if OpIs('?eq.vc')             then JumpIfEq
                else if OpIs('?eq.cc.upper')       then fEqUpper
                else if OpIs('?error.break')       then
                  begin
                  if PreviousResult=0 then fBreakCommand;
                  end
                else if OpIs('?error.goto')        then JumpTo(Arg+':',PreviousResult=0)
                else    BadCommand;
            'a':
                if OpIs('?allowed')                then fAllowed
                else if OpIs('?approxdate')        then fApproxDate
                else if OpIs('?answer')            then fAnswerOrJump
                else if OpIs('?append.textfile')   then fAppendTextFileEtc
                else    BadCommand;
            'g':
                if OpIs('?getsql')                 then fgetSql(True)
                else if OpIs('?g.read')            then fReadOrJump(gx)
                else if OpIs('?g.open')            then fOpenOrJump(gx)
                else    BadCommand;
            'n':
                if OpIs('?noinfix')                then fNoInfix
                else if OpIs('?noinfix.v')         then fNoInfixV
                else    BadCommand;
            'h':
                if OpIs('?h.read')                 then fReadOrJump(hx)
                else if OpIs('?h.create')          then fCreateHOrJump
                else if OpIs('?h.open')            then fOpenOrJump(hx)
                else BadCommand;
            't':
                if OpIs('?time.or.interval')       then fTimeOrInterval
                else    BadCommand;
            'w':
                if OpIs('?worktable.assign.x')     then fWorkTableAssignFromXth
                else if OpIs('?wizard')            then fDynamicWizardCall(True,'')
                else if OpIs('?wizard-main')       then fDynamicWizardCall(True,'main')
                else if OpLike('?wizard-')         then fDynamicWizardCall(True,Copy(Op,Length('?wizard-')+1,Maxint))
                else if OpIs('?wizard.kkk')        then
                  begin
                  fDynamicWizardCall(True,'');
                  fKKK;
                  end
                else if OpIs('?wizard.kkkc')       then fWizardWithCaption(True)
                else if OpIs('?write.textfile')    then fWriteTextFileEtc
                else    BadCommand;
            'l':
                if OpIs('?load.sql')               then fLoadSqlOrJump
                else    BadCommand;
            'f':
                if OpIs('?f.create')               then fCreateOrJump
                else if OpIs('?f.append')          then fAppendOrJump
                else    BadCommand;
            'r':
                if OpIs('?read.textfile')          then fReadTextFileEtc
                else BadCommand;
            else BadCommand;
            end;
         '_':
             if length(Op)>1 then
             case Op[2] of
             'b':
                 if      OpIs('_buffer.clear')         then fBufferClear
                 else if OpIs('_buffer.append')        then fBufferAppend
                 else if OpIs('_buffer.getline')       then fBufferGetLine
                 else BadCommand;
             'c':
                 if      OpIs('_call')                 then fCallSubrWithArgs
                 else if OpIs('_check')                then
                   fCheck
                 else if OpIs('_clear')                then fClearMore
                 else if OpIs('_cache.restart')        then MbioMain.InvalidateMbioCache
                 else if OpIs('_cache.clear')          then begin LaCache.CacheClear; Verificator.Clear end
                 else if OpIs('_compose')              then FCompose
                 else if OpIs('_column.select')        then fColumnSelect
                 else if OpIs('_column.multiselect')   then fColumnMultiSelect
                 else if OpIs('_column.bioselect')     then fColumnBioSelect
                 else if OpIs('_compress')             then fCompress
                 else if OpIs('_compressor_load')      then LoadCompressor(Arg)
                 else BadCommand;
             'r':
                 if OpIs('_return')                    then fReturnSubr
//                 else if OpIs('_return.if.eq')         then fReturnSubrIfEq
//                 else if OpIs('_return.if.error')      then fReturnSubrIfError
//                 else if OpIs('_return.if.success')    then fReturnSubrIfOK
                 else if OpIs('_return.if')            then fReturnSubrIf
                 else if OpIs('_return.ifnot')         then fReturnSubrIfNot
                 else if OpIs('_return.unless')        then fReturnSubrIfNot
                 else if OpIs('_return.call')          then fCallArgs(True,false,false)
                 else if OpIs('_return.show.message')  then WizardShowMessage(False,True)
                 else if OpIs('_returnatom')           then fReturnAtom
                 else if OpLike('_return.if')          then fReturnSubrCnd(Copy(Op,Length('_return.if')+1,Maxint))
                 else if OpLike('_return.if.')         then fReturnSubrCnd(Copy(Op,Length('_return.if.')+1,Maxint))
                 else if OpIs('_returnatom.break')     then
                   begin
                   fReturnAtom;
                   if _Atom='' then fBreakCommand;
                   end
                 else if OpIs('_returnline')           then fReturnLine
                 else if OpIs('_renamefile')           then fRenameFile
                 else BadCommand;
             'u':
                 if OpIs('_use')                       then try Context.Assign(ContextValues) except end // tady
                 else if OpIs('_u2d')                  then Context.Values[Arg]:=U2D(Context.Values[Arg])
                 else if OpIs('_usage.tracking')       then UsageTracking:=Arg='1'
                 else BadCommand;
             's':
                 if OpIs('_sload')                     then fSload(False)
                 else if OpIs('_substr')               then fSubStr
                 else if OpIs('_set')                  then SetContextValue(False,False,False,False)
                 else if OpIs('_set.nonvoid')          then SetContextValue(False,False,False,True)
                 else if OpIs('_set.trim')             then SetContextValue(False,False,True,False)
                 else if OpIs('_spacing')              then Spacing:=AdjustSL('',IntOf(Arg))
                 else if OpIs('_sload.encode.crlf')    then fSload(True)
                 else if OpIs('_separator')            then _Separator:=ResolvedArg+','
                 else if OpIs('_separator2')           then _Separator2:=ResolvedArg+'x'
                 else if OpIs('_s.set')                then _S:=ResolvedArg
                 else if OpIs('_s.put')                then CtxPut(ResolvedArg,utEncodeString(_S))
                 else if OpIs('_s.crlf')               then _S:=_S+#13#10
                 else if OpIs('_s.append')             then _S:=_S+ResolvedArg
                 else if OpIs('_s.append.const')       then _S:=_S+Arg
                 else if OpIs('_s.push')               then PushString(_S)
                 else if OpIs('_s.pop')                then _S:=PopString
                 else if OpIs('_s.squeeze')            then _S:=fSqueeze(_S)
                 else if OpIs('_spaces')               then FSpaces
                 else if OpIs('_skip2')                then fSkip2
                 else if OpIs('_s.word2text')          then fWord2Text
                 else if OpIs('_stat.clear')           then fStatisticsClear
                 else if OpIs('_stat.time.start')      then fStatisticsTimeStart
                 else if OpIs('_stat.time.stop')       then fStatisticsTimeStop
                 else if OpIs('_stat.write')           then fStatisticsWrite
                 else if OpIs('_stat.speed.limit')     then SpeedLimit := IntOf(Arg)
                 else if OpIs('_syslog')               then FSysLog
                 else if OpIs('_savedialog')           then fSaveDialog
                 else if OpIs('_split.words')          then fSplitWords
                 else BadCommand;
             'l':
                 if OpIs('_lowercase')                 then fLowerCase
                 else if OpIs('_lowercase1')           then fLowerCase1
                 else if OpIs('_length')               then FLength
                 else if OpIs('_list.construct')       then fListConstruct(0)
                 else if OpIs('_list.to.context')      then fListToContext
                 else if OpIs('_list.from.context')    then fListFromContext
                 else if OpIs('_list.construct.from.view') then fListConstructFromView(0)
                 else if OpIs('_list.get')             then fListGet
                 else if OpIs('_list.get.to')          then fListGetTo
                 else if OpIs('_list.get.xth.to')      then fListGetXthTo(False)
                 else if OpIs('_list.get.xth.to.clean') then fListGetXthTo(True)
                 else if OpIs('_list.save')            then SavedList:=ConstructedList
                 else if OpIs('_list.restore')         then ConstructedList:=SavedList
                 else if OpIs('_list.clear')           then ConstructedList:=''
                 else if OpIs('_list.append')          then
                   ConstructedList:=ConstructedList+ResolvedArg
                 else if OpIs('_latrace')              then LaTraceOn:=Arg='1'
                 else if OpIs('_login.q')              then LaVax.LoginQ
                 else BadCommand;
             'm':
                 if OpIs('_mbiobook')                  then
                   begin
                   if InMbioBook = 0 then
                     begin
                     GlobalResultList.Clear;
                     InMbioBook:=1;
                     MikrobiologickaKniha(Context,Context.Values['_mbiobook.command']);
                     InMbioBook:=0;
                     end
                   else
                     ShowMessage('Mikrobiologickou knihu nelze volat rekurzivne ...');
//                   MikrobiologickaKniha(Context,'FakedF2');
                   end
                 else if OpIs('_mbiogetfile')          then fMbioBookGetFile
                 else if OpIs('_mbiocontext')          then fMbioContext
                 else if OpIs('_mbiosubst')            then fMbioSubst
                 else if OpIs('_mbiobook.serology.no') then fSerologyNumber
                 else if OpIs('_move')                 then fMove
                 else if OpIs('_morphism')             then fMorphism
                 else if OpIs('_mbiocheck')            then fMbioCheck
                 else if OpIs('_mbiomenu')             then fMbioMenu
                 else if OpIs('_mbioxlate')            then fMbioXlate
                 else if OpIs('_mbio.atb.vector.create') then fCreateMbioVector
                 else if OpIs('_mbio.atb.vector.reset') then MikrobList.Clear
                 else if OpIs('_mbio.atb.vector.setup') then fMbioVectorSetUp
                 else if OpIs('_mbio.atb.unroll')      then fAtbUnroll
                 else if OpIs('_mbio.atb.sensitive.only') then fAtbSensitiveOnly
                 else if OpIs('_mbio.atb.resistant.to') then fAtbResistantTo
                 else if OpIs('_mbio.atb.sensitive.to') then fAtbSensitiveTo
                 else if OpIs('_mbiobook.load')        then fMbioBookLoad
                 else if OpIs('_mbiobook.get3')        then fMbioBookGetThree
                 else if OpIs('_mbiobook.exam')        then fMbioBookExam
                 else if OpIs('_mbiobook.exam.s')      then fMbioBookExamS
                 else if OpIs('_mbiobook.exam.i')      then fMbioBookExamI
                 else if OpIs('_mbiobook.check.data')  then fMbioBookCheckData
                 else if OpIs('_mbiobook.schema')      then fMbioBookSchema
                 else if OpIs('_mbiobook.dissect')     then fMbioGlbBookSchema
                 else if OpIs('_mbiobook.get.corr.pairs') then fMbioGlbGetCorrespondingPairs
                 else if OpIs('_mbiobook.get')         then fMbioGlbGet
                 else if OpIs('_mbiobook.get.corr')    then fMbioGlbGetCorresponding
                 else if OpIs('_mbiobook.pnh')         then fMbioBookPNH
                 else if OpIs('_mbiobook.get.tampon')  then fMbioBookGetTampon
                 else BadCommand;
             'f':
                 if OpIs('_fms')                       then FFms
                 else if OpIs('_fv')                   then fWriteMoreV(True,fx)
                 else if OpIs('_fv.nolf')              then fWriteMoreV(False,fx)
                 else if OpIs('_fuzzy_find')           then fFuzzyFind
                 else if OpIs('_fvh')                  then fWriteMoreV(True,hx)
                 else if OpIs('_fvh.nolf')             then fWriteMoreV(False,hx)
                 else if OpIs('_fetch.absolute')       then Fetch(Arg,True)
                 else if OpIs('_flatiron')             then fFlatIron
                 else if OpIs('_flatwrap')             then fFlatWrap
                 else if OpIs('_flatiron.f')           then fFlatIronFile
                 else if OpIs('_flatwrap.f')           then fFlatWrapFile
                 else BadCommand;
             'g':
                 if OpIs('_getline')                   then FGetLine
                 else if OpIs('_getline.byprefix')     then FGetLineByPrefix
                 else if OpIs('_getfield')             then FGetField
                 else if OpIs('_getmikrob')            then fMikrobOnLine
                 else BadCommand;
             'v':
                 if OpIs('_view')                      then utInnerViewer(ResolvedArg,false)
                 else if OpIs('_view.exit')            then begin utInnerViewer(ResolvedArg,false); DoExitNow(2); end
                 else if OpIs('_vector.clear')         then Vector.Clear
                 else if OpIs('_vector.sort')          then Vector.Sort // NormalizeStringList(Vector)
                 else if OpIs('_vector.count')         then Context.Values[Arg]:=StringOf(Vector.Count)
                 else if OpIs('_vector.load')          then FVectorLoad
                 else if OpIs('_vector.load.idx')      then FVectorLoadIdx
                 else if OpIs('_vector.store')         then FVectorStore
                 else if OpIs('_vector.inc')           then FVectorInc
                 else if OpIs('_vector.store.idx')     then FVectorStoreIdx
                 else if OpIs('_vector.squeeze')       then SqueezeTStringList(Vector)
                 else if OpIs('_vector.filter.from')   then FVectorFilterFrom(Vector)
                 else if OpIs('_vector2.filter.from')  then FVectorFilterFrom(Vector2)
                 else if OpIs('_vector2.clear')        then Vector2.Clear
                 else if OpIs('_vector2.sort')         then Vector2.Sort // NormalizeStringList(Vector2)
                 else if OpIs('_vector2.count')        then Context.Values[Arg]:=StringOf(Vector2.Count)
                 else if OpIs('_vector2.load')         then FVector2Load
                 else if OpIs('_vector2.load.idx')     then FVector2LoadIdx
                 else if OpIs('_vector2.store')        then FVector2Store
                 else if OpIs('_vector2.store.idx')    then FVector2StoreIdx
                 else if OpIs('_view.changed')         then LastDbView.ViewChanged:=True
                 else if OpIs('_view.locate')          then fViewLocate
                 else BadCommand;
             'q':
                 if OpIs('_quit')                      then fExitShowMessage(2)
                 else if OpIs('_quit.norefresh')       then fExitShowMessage(0)
                 else if OpIs('_quit.stop')            then
                   begin
                   fProgressStop(False);
                   fExitShowMessage(0)
                   end
                 else BadCommand;
             'h':
                 if OpIs('_hhmm.hh_mm')           then fHHMMToHH_MM
                 else if OpIs('_hh_mm.hhmm')           then fHHMMToHHMM
                 else BadCommand;
             'p':
                 if OpIs('_ptr')                  then FPtr
                 else if OpIs('_pump.sql')             then fPumpSql
                 else if OpIs('_password')             then FPassWord
                 else if OpIs('_privilege.vaxnt')      then fPrivilegeVaxNt
                 else if OpIs('_prepare.decimal')      then PrepareDecimalOn := Arg='1'
                 else if OpIs('_printer')              then fPrinter
                 else if OpIs('_parameter')            then fSetParameters
                 else BadCommand;
             'n':
                 if OpIs('_null')                 then fNull
                 else if OpIs('_nice')                 then fNiceNumber
                 else if OpIs('_normalize')            then Context.Sort // NormalizeStringList(Context)
                 else BadCommand;
             'e':
                 if OpIs('_edit')                      then fEdit
                 else if OpIs('_edit.value')           then fEditValue
                 else if OpIs('_exitlabel')            then _ExitLabel:=ResolvedArg
                 else BadCommand;
             't':
                 if OpIs('_touple')                    then fTouple
                 else if OpIs('_touple.x')             then fToupleX
                 else if OpIs('_title.user')           then LaVax.SetTitleUser(ResolvedArg)
                 else if OpIs('_trace.on')             then TraceOn := true
                 else if OpIs('_trace.off')            then TraceOn := false
                 else if OpIs('_trace.super')          then SuperTraceOn := Arg='1'
                 else if OpIs('_trace.start')          then
                   fTraceStart(ResolvedArg)
                 else if OpIs('_trace.next')           then TraceCntDown:=IntOf(DefaultedValue('1',ResolvedArg))
                 else if OpIs('_trace.clear')          then FErase(TraceFn)
                 else if OpIs('_trace.view')           then BetterViewer(TraceFn)
                 else BadCommand;
             '2':
                 if OpIs('_2yyyymmdd')                 then fToYYYYMMDD
                 else if OpIs('_2columns')             then fXColumns(2)
                 else if OpIs('_2ddmmyyyy')            then fToDDMMYYYY
                 else BadCommand;
             '3':
                 if OpIs('_3columns')             then fXColumns(3)
                 else BadCommand;
             '4':
                 if OpIs('_4columns')             then fXColumns(4)
                 else BadCommand;
             'z':
                 if OpIs('_zip')                  then fZip
                 else if OpIs('_zipfile')              then fZipFile
                 else BadCommand;
             'd':
                 if OpIs('_dm_text')              then FDmText
                 else if OpIs('_dd_text')         then fDdText
                 else if OpIs('_decompress')      then fDeCompress
                 else if OpIs('_dayno')           then fDayNo
                 else if OpIs('_daymax')          then fDayMax
                 else if OpIs('_dateslashchar')   then DateSlashChar:=Arg
                 else BadCommand;
             'y':
                 if OpIs('_yyyymmdd')             then fyyyymmdd2ddmmyyyy
                 else if OpIs('_yyyy-mm-dd')      then fyyyy_mm_dd2ddmmyyyy
                 else if OpIs('_yyyymmddhhmmss')  then fyyyymmddhhmmss2ddmmyyyyhhmmss
                 else BadCommand;
             'o':
                 if OpIs('_opendialog')           then fOpenDialog
                 else BadCommand;
             'i':
                 if OpIs('_invalidate.cache')     then InvalidateMbioCache
                 else if OpIs('_impecable')        then fImpecable
                 else BadCommand;
             'w':
                 if OpIs('_watchfileactivity')    then WatchFileActivity:=Arg='1'
                 else if OpIs('_wizard')            then fDynamicWizardCall(False,'')
                 else if OpLike('_wizard-')         then fDynamicWizardCall(False,Copy(Op,Length('?wizard-')+1,Maxint))
                 else BadCommand;
             'a':
                 if OpIs('_application.terminate') then // 20170328 terminate implemented
                   begin
                   OnExitScriptCancelled:=True;
                   Halt;
                   end
                 else BadCommand;
             else
               BadCommand
               ;
             end;
          '@':
             if OpIs('@list.create')               then LibCreateList
             else if OpIs('@rozvrh')               then fRozvrh
             else if OpIs('@list.update')          then LibListUpdate(DbName,ResolvedArg,Context)
             else if OpIs('@snoofer')              then PreviousResult:=LibOneFileSnoofer(ResolvedArg,Data)
             else if OpIs('@excel')                then fExcel
             else if OpIs('@clipboard.set')        then ClipBoard.AsText:=ReadRawTextFileToString(Arg)
             else if OpIs('@ulozky.reset')         then UlozkyReset
             else if OpIs('@ulozky.accept')        then UlozkyAccept(DoubleOf(Arg))
             else if OpIs('@ulozky.compute')       then
               begin
               CtxPut('Vysledek',StringOfDouble(VypocetUM(DoubleOf(Arg))));
               CtxPut('Iteraci',StringOf(Iteraci));
               end
Rejstřík kapitoly
Nadřízená kapitola dokumentace / rejstřík