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