E
FORMULÁŘ - kapitola E
Formulář definuje rozvrh obrazovky pro editaci souboru datovým editorem
( hlavičku obrazovky, pořadí a rozmístění údajů jedné věty a doprovodné
texty).
██ Syntaxe: { Komentář }
[ TextHlavičky ]
#_NázevSouboru PopisnáČást ;
ZobrazovacíČást
■ {Komentář}........ (volitelně) nezahrne se do hlavičky. Pro programátora.
■ TextHlavičky...... (volitelně): na obrazovce bude jednou před první větou
Hlavička může mít i několik řádků.
■ NázevSouboru ..... název kapitoly F, kde je soubor deklarován. V příkazu
edit lze použít tento formulář i pro jiný soubor.
■ PopisnáČást ...... seznam editovaných údajů (příp. s pořadovým číslem).
[číslo:] NázevÚdaje { ,[číslo:] NázevÚdaje }
Může obsahovat uložené nebo vypočítané údaje.
Pořadí editace (číslo:údaj) se uvádí, jestliže bude
editace probíhat v jiném pořadí než zleva doprava
a odshora dolů. Editace probíhá podle vzestupného pořadí
čísel, které nemusí být souvislé (1,10,19,31,...).
Pokud není číslo uvedeno, dosadí se implicitní podle
pořadí od začátku seznamu.
■ ZobrazovacíČást... předloha pro editaci jedné věty datovým editorem
(na obrazovce vystoupí tolik vět, kolik se jich vejde)
Jde o libovolný text (včetně rámečků a barev), který
se při editaci opíše na obrazovku. Na místech, kde
vystupují údaje souboru, jsou v textu masky pro
editaci údajů. '\' v zobrazovací části znamená
odstránkování (přechod na další obrazovku u dlouhých
formulářů).
Maska
Je řetězec podtržítek '_', jehož délka je dána deklarací údaje. Seznam
údajů v popisné části musí odpovídat z maskám v zobrazovací části ( stejný
počet, odpovídající délky a pořadí).
Typ údaje maska(počet znaků '_')
F,n.m n+m+2 je-li m>0
n+m+1 je-li m=0
R 17
A,n k kde k<=n
N,n n
D podle délky masky (např. ________ při 'DD.MM.YY')
B 1
T 1
EdBool
FUNKCE DATOVÉHO EDITORU
EdBreak
FUNKCE DATOVÉHO EDITORU
EdField
FUNKCE DATOVÉHO EDITORU
EdFile
FUNKCE DATOVÉHO EDITORU
EdIRec
FUNKCE DATOVÉHO EDITORU
Edit
EDIT - duplicitní klíčové slovo
■ edit(...) ........ volání editoru: editace datového souboru
■ report(...edit) ... parametry sestavy: prohlížení sestavy s možností
editace
Editace record proměnné
EDITACE RECORD PROMĚNNÉ
Při editaci record proměnné se edituje jen daná věta. Neprovádí se aditivní
změny resp. změny pro referenční integritu.
Nelze zadat parametry : journal, cond, refresh, saveafter, owner,recno,
reckey,irec,exit(..:report..).
(případně. převzaté z U=.. se ignorují)
mode='01' je implicitní
klávesy F2,F3,F6,CtrlF2,CtrlF3 jsou nefunkční.
Editace textu
EDITACE TEXTU
■ Enter ..... ukončení řádku (nebo odstavce při zapnutém formátování)
■ Esc ....... ukončení editace s nahráním změn na disk
■ Alt-= ..... ukončení editace bez nahrání změn na disk
(neplatí pro diskový soubor)
■ Del ............. mazání znaku pod kurzorem
■ BackSpace <- .... mazání znaku před kurzorem
■ Ctrl-T .......... výmaz jednoho slova
■ Ctrl-Y .......... výmaz řádku
■ Ctrl-Q Ctrl-Y ... výmaz od pozice kurzoru do konce řádku
■ Ctrl-U ...... zrušení změn a obnovení textu (neplatí pro diskový soubor)
■ Ctrl-Q Ctrl-L ... obnovení obsahu řádku (pouze právě editovaný řádek)
■ F9 .............. nahrání změn na disk (prevence proti výpadku proudu)
■ Ctrl-N ............. vložení nového řádku za kurzor
■ Ctrl-I ............. tabelátor
■ Ctrl-J ............. tabelace zprava
■ Ctrl-O Ctrl-C ...... vycentrování řádku
■ Ctrl-P Ctrl-Znak ... zadání řídícího znaku
Editace v okně
EDITACE V OKNĚ
Implicitně (při neuvedení parametru ww) se otevře editační okno na celou
obrazovku. Tj. ww=(1,1,80,25).
██ WW = ([(] Souřadnice [ ,Rámeček [ ,Atributy ] ] [)] )
■ Souřadnice,
Rámeček ....... Syntaxe i význam jsou stejné jako v příkaze with window.
Viz. také definice okna.
■ Atributy ...... Atr,Norm,Hili [,Subset [,Deleted [,Tab [,Select ]]]]
Minimálně 3, max. 7 atributů barev. Zadávají se buď
kódem barvy (číselný výraz) nebo Ctrl-znakem.
Atr ...... barva výplně okna, rámečku
Norm ..... barva pro zobrazení dat
Hili ..... barva pro zvýrazněná data (kurzor)
Subset ... barva vybrané podmnožiny
Deleted... barva pro zrušené věty (LAN)
Tab ...... barva pro znak tabelátoru
Select ... barva pro výběr do pracovního indexu (sel)
Je-li hodnota 0, doplní se implicitně dle instalace barev
░░░░░░░░░░░░
░░příklady░░
░░░░░░░░░░░░
██ edit(DATA,(jméno,adresa,tlf),ww=(5,15,55,20)); {minimální varianta}
edit(DATA,(jméno,adresa,tlf),
ww=(5,15,55,20,'',7,20,5,12,0)); {maximální varianta}
edit(DATA,Formulář, { změna první barvy(Atr) }
ww=((1,3,80,24,'DATA',^Q,0,0,0))); { ostatní implicitní }
{ okno bez obnovy }
Edittxt
PŘÍKAZY PRO EDITACI TEXTU
Implicitně je v PC FANDu volán textový editor v několika standardních si-
tuacích ( tisk sestav, editace volných textů ). Explicitně v programu lze
textový editor vyvolat příkazem edittxt. Textovým editorem lze zpracovat
tři typy textu : volný text, diskový textový soubor nebo lokální proměnnou
procedury typu string.
Příkazem SetEditTxt nastavíme přepínače textového editoru.
██ syntaxe: EDITTXT ( NázevTextu | LokálníProměnnáTypuString
[ ,noedit ]
[ ,txtpos=ČíselnýVýraz ] [,txtxy=ČíselnýVýraz ]
[ ,ww=(ParametryOkna) ]
[ ,exit=(SeznamPřerušení) ]
[ ,head=TextVýraz ]
[ ,last=TextVýraz ] [ ,ctrl=TextVýraz ]
[ ,alt=TextVýraz ] [ ,shift=TextVýraz ]
[ ,errmsg=TextVýraz ] )
■ NázevTextu: fyzické jméno (příp.včetně cesty) v apostrofech
nebo logické jméno (katalog)
■ noedit .... pouze prohlížení, zákaz editace
■ ww ........ editace v okně (souřadnice,orámování,barva) viz. with window
■ txtpos..... počáteční nastavení kurzoru na pozici v textu (funkce txtpos)
■ txtxy ..... počáteční pozice kurzoru v okně txtxy
■ exit ...... přerušení editace textu
■ head ...... Text pro hlavičku - 1.řádek (nahradí implicitní text). Text
musí obsahovat masku '___________________________________'
(tj.35 podtržítek) pro ukazatel pozice v textu a stav přepí-
načů. Je-li maska kratší, přepíše se část textu hlavičky.
■ last,ctrl,alt,shift ... alternativní nápověda
■ errmsg .... zobrazení chybové zprávy při startu textového editoru
!!! Editace diskového souboru
Do verze FANDu 4.0 nebylo možno editovat (ani prohlížet) textový soubor na
médiu s ochranou proti zapisu. Aktuální je to na CD, ale platí to i
v případě diskety s nastavenou ochranou proti zápisu, má-li soubor atribut
RdOnly nebo je uložen v adresáři s nastavenými právy přístupu (LAN).
* Od verze FANDu 4.1 je diskový soubor otevírán vždy jen na čtení,
* změna na exclusívní otevření se provede až při pokusu o zápis do
* souboru.
Toto platí jak pro příkaz edittxt tak i pro editaci textového souboru
z hlavního menu PC FANDu.
EdKey
FUNKCE DATOVÉHO EDITORU
EdOK
EXIT - PROCEDURY
Termínem exit-procedura označujeme proceduru, která byla vyvolána z datového
editoru v důsledku akce definované parametrem exit. Tyto procedury jsou
syntakticky shodné s běžnou procedurou. Určitá specifika a omezení přináší
fakt, že jsou volány z přerušeného (!!! nikoliv ukončeného) datového editoru.
Aktuální stav (rozpracované) věty je do exit-procedury předán prostřednictvím
parametru procedury typu record of soubor. Pokud potřebujeme s rozeditovanou
větou pracovat , deklarujeme odpovídající record proměnnou jako poslední
parametr procedury. Z record proměnné lze údaje číst ale i do nich zapisovat.
Případně změněné hodnoty jsou po ukončení exit-procedury automaticky předány
zpět do editoru.
Omezení v exit-procedurách se týkají především zpětných zásahů do editovaného
souboru. Vyplývají z toho, že přerušený editor má rozpracované určité vazby
na aktuální stav souboru a při necitlivém zásahu může dojít k narušení těchto
vazeb a potažmo k chybovým stavům. Tato omezení nelze syntakticky vyhodnotit,
neboť jedna procedura může být volána jako exit, ale na jiném místě i běžným
způsobem (příkaz proc), kde je kód procedury naprosto korektní.
┌──────────────────────────────────────────────────────────────────────────┐
│Výrazně je nutno upozornit na nekorektnost jakékoliv změny editované věty │
│pomocí přímého přístupu (soubor[edrecno].údaj, writerec(...,edrecno). │
└──────────────────────────────────────────────────────────────────────────┘
V exit-proceduře vyvolané funkční klávesou ( př.F6 ) nebo kurzorovou klávesou
lze po návratu z procedury vyvolat dále i standardní činnost datového editoru
pro danou klávesu. Zadáme EdOk:=true. Implicitně je EdOk=false tj. standardní
procedura se neprovede.
Pomocí deklarace parametru procedury typu file lze psát zobecněné exit-proce-
dury s korektním řešením deklarace předávané věty souboru. Tj.jedna procedura
pro více různých souborů.
EdRecKey
FUNKCE DATOVÉHO EDITORU
EdRecNo
FUNKCE DATOVÉHO EDITORU
EdUpdated
FUNKCE DATOVÉHO EDITORU
Ellipse
ELLIPSE - kreslení elipsy, kružnice, oblouku
Příkazem pro vykreslení elipsy lze dle zadaných hodnot parametrů vykreslit
kružnici nebo oblouk (část kružnice nebo elipsy).
██ syntaxe: ELLIPSE ( X, Y, RX, RY, Barva [ ,StÚhel, KonÚhel ] )
■ X,Y ..... Souřadnice se zásadně zadávají v grafických bodech (pixel)
relativně v aktuálním okně.
■ RX,RY ... Číselné výrazy, poloměry pro osu X a osu Y (pixel).
Pro vykreslení kružnice nemusí nutně postačovat RX=RY, neboť
obecně nemusí být "pixel souřadný systém" symetrický ( poměr
počtu bodů a rozměrů obrazovky )
■ Barva ... Číselný výraz - kód barvy nebo Ctrl-znak.
■ StÚhel,
KonÚhel.. Počáteční a koncový úhel, implicitně 0..360°
Else
IF, THEN, ELSE - duplicitní klíčová slova
■ if then else ... větvení programu: podmíněný příkaz jestliže-pak-jinak
... PříkazováČástVýstupu: transformace
... PopisnáČástÚrovně: výpočetní část v tiskových sestavách
End
BEGIN, END - duplicitní klíčová slova
ENDIF
PODMÍNĚNÝ PŘEKLAD - direktivy kompilátoru
EquMask
POROVNÁNÍ TEXTOVÝCH ŘETĚZCŮ
Hledání pozice podřetězce textu podle stanovených podmínek porovnání.
██ syntaxe: POS( Podřetězec ,Text [,'Podmínky' [,KterýVýskyt]] ) : real
■ Podřetězec ... Textový výraz, který hledáme v řetězci text.
Omezení: vyhodnotí se maximálně v délce 255 znaků.
■ Text ......... Textový výraz, který je prohledán.
■ Podmínky ..... Textová konstanta - apostrofy se píší (nikoliv výraz).
Může obsahovat tyto znaky (jeden nebo kombinace ):
w ... jen celá slova, ne složeniny
~ ... lexikální porovnání podle národní abecedy
u ... bez rozlišení malých a velkých písmen (upcase)
■ KterýVýskyt .. Kolikátý výskyt od počátku hledáme.
■ Kapitoly ....... F,M,R,P,D (Funkce v L kapitole)
──────────────────
Porovnání textového řetězce na masku. Lze použít ve všech kapitolách.
██ syntaxe: EQUMASK( Text , Maska ) : boolean
■ maska .... Textový výraz. Je to vzor, na který se provede porovnání
textu. Maska nemusí být jednoznačná, ale mohou se v ní
vyskytovat speciální znaky (tzv. wildcards) :
? nahradí se libovolným znakem - jen pro danou pozici
* nahradí se libovolnou kombinací znaků (řetězcem)
■ Kapitoly ..... F,M,R,P,D
zpracování textu
░░░░░░░░░░░░
░░příklady░░
░░░░░░░░░░░░
██ pos( 'lhota', 'Dolní Lhota') = 0 ;
pos( 'lhota', 'Dolní Lhota','u' ) = 7 ;
pos( 'dolni', 'Dolní Lhota','u' ) = 0 ; { vadí i & í }
pos( 'dolní', 'Dolní Lhota','~' ) = 1 ;
pos( 'lh', 'Dolní Lhota','w~' ) = 0 ; { jen celá slova }
pos( 'lh', 'Dolní Lhota','u' ) = 7 ;
pos( 'lh', 'Dolní Lhota','u',2 ) = 0 ; { lh tam je jen jednou }
██ equmask( 'Dolní Lhota', 'Lhota' ) = FALSE ;
equmask( 'Dolní Lhota', '*Lhota' ) = TRUE ;
equmask( 'Dolní Lhota', '?Lhota' ) = FALSE ;
equmask( 'Dolní Lhota', '??????Lhota' ) = TRUE ;
ErrMsg
PŘÍKAZY PRO EDITACI TEXTU
Error
error
Klíčové slovo error lze použít ve dvou kontextech.
■ V transformaci - speciální funkce v transformaci.
■ Ukončení L kapitoly ( error).
ErrorText
SPECIÁLNÍ FUNKCE V TRANSFORMACI
Na pravé straně přiřazovacích příkazů výstupní části transformace mohou kromě
obvyklých konstrukcí vystupovat speciální funkce:
█ sum :real .............. součtování (pouze ve výstupech #O a #O*)
█ group :real ............ pořadí aktuální zpracovávané skupiny vět
█ Ii.count :real ......... pořadí věty vstupního souboru v aktuální skupině
(rozdělení vstupů do skupin podle řídících údajů)
█ Ii.error :boolean ...... dvojice funkcí, která vrací výsledek logických
█ Ii.warning :boolean .... kontrol ve větě. Test se provádí v pořadí podle
deklarace #L a skončí na první nesplněné podmínce
pro logickou kontrolu !!! Tj. nesplněná varování
"přejde". Warning je v případě jakékoliv nesplněné
podmínky vždy TRUE, error jen tehdy, pokud tato
podmínka byla logickou kontrolou (nikoliv jen
varováním).
Výsledek testů věty Hodnoty
Kontroly Varování error warning
ANO ANO FALSE FALSE
ANO NE FALSE TRUE
NE ANO TRUE TRUE
NE NE TRUE TRUE
█ Ii.errortext :string ... je-li ve vstupní větě chyba, text chybového
případně varovného hlášení
Funkce sum, group a count jsou obdobně použitelné také v popisné části
výstupní úrovně sestavy (kapitola R).
Escape
SEZNAM VOLEB
Seznam voleb v nabídce obsahuje text volby, jak se objeví na uživatelské
obrazovce, a odpovídající příkazy.
██ syntaxe : { TextVolby [,Nápověda [,Podmínka[!]]] : Příkaz ; }
[ Escape : Příkaz ; ]
■ TextVolby ... Textový výraz, zobrazí se jako řádek menu.
Mezi znaky ^W (zadání Ctrl-P Ctrl-W) může být uzavřeno
písmeno = "hot klávesa" pro rychlou volbu jedním písmenem
(jiná barva) implicitně první písmeno každé volby.
■ Nápověda .... Identifikátor nebo textová konstanta (v apostrofech).
Podle hesla nápovědy se zobrazí odpovídající text ze
souboru .HLP. V 25. řádku jako krátká nápověda nebo
po F1 celý. Viz. konstrukce nápovědy.
■ Podmínka .... Logický výraz, pokud není splněn, volba se potlačí.
Je-li uveden znak !, bude volba nefunkční ale zůstane
v menu, ovšem zobrazená odlišnou barvou (čtvrtý atribut).
■ Escape ...... Uvedený příkaz se provede při ESC. Pokud není uvedeno,
ukončí ESC práci v menu.
■ Příkaz ...... Může být i složený (begin - end)
■ '':; ......... prázdná volba: na obrazovce vodorovná čára,
která se při pohybu po menu přeskakuje
Maximální počet voleb je dán rozměry obrazovky.
EscPrompt
DOTAZ UŽIVATELI
EvalB
EVALB, EVALR, EVALS
Funkce pro vyhodnocení výrazu daného typu.
██ syntax: evalb( TextovýVýraz ) : boolean
evalr( TextovýVýraz ) : real
evals( TextovýVýraz ) : string
■ použití: kapitola P .
■ TextovýVýraz ... Text výrazu daného typu, který se při výpočtu funkce
přeloží a pak vyhodnocuje.
Úspěšný překlad výrazu nastaví exitcode=0. Při chybě ve výrazu vrátí
nulovou hodnotu (FALSE,0,''). Pak je exitcode=1 a txtpos udává pozici
chyby.
Syntaxe výrazu odpovídá výrazům v proceduře. Při použití pro definici
filtru (podmínky cond) v dalších příkazech se mohou vyskytovat i údaje
daného souboru (forall,edit,report,graph). V tomto případě ji nelze
v podmínce kombinovat s další podmínkou (nesmí být vnořená).
Doporučuje se používat jen omezeně a zkušenějším programátorem .
░░░░░░░░░░░░
░░příklady░░
░░░░░░░░░░░░
██ Vyvolání editoru s libovolnou podmínkou :
P Ukazka1 * VAR podminka : string ;
BEGIN
podminka:=prompt(' zadejte podmínku : ':A,60) ;
edit( soubor,(), cond=(evalB(podminka))) ;
END ;
Chybné použití:
BEGIN
edit( soubor,(),
cond=(evalb(prompt(' zadejte podmínku : ':A,60))));
END ;
V tomto případě se výraz překládá v kontextu věty souboru, nelze tedy
použít funkce, vyhrazené pro procedury.
██ evalb('') = true { vyhodnocení prázdné podmínky }
EvalR
EVALB, EVALR, EVALS
EvalS
EVALB, EVALR, EVALS
Excl
LAN - POUŽITÍ VYŠŠÍCH MÓDŮ BLOKOVÁNÍ
Exclusive
LAN - PŘEHLED POUŽÍVANÝCH POJMŮ
Exec
EXTERNÍ PROGRAMY
Příkazem exec voláme vnější program (.COM, .EXE), příkaz MS-DOSu nebo .BAT
proceduru. Volanému programu lze předat parametry. Při předání řízení je
možno ovlivnit velikost volné paměti a mód obrazovky.
██ Syntaxe: EXEC ( Program , ParamProgramu
[,nocancel] [,freemem] [,loadfont] [,textmode] )
██ Základní exec(Program, Param,...).. volání programu s parametry
██ varianty: exec('',DOSPříkaz, ...) .. interní příkaz DOSu nebo .BAT
exec('','',...) ... odskok do DOSu
■ Program ........ fyz.jméno vč.cesty v apostrofech nebo log.jméno (katalog)
při hledání programu se zohledňuje systémová proměnná PATH
■ ParamProgramu... TextovýVýraz (parametry volaného programu)
■ DOSPříkaz ...... TextovýVýraz (copy, time, del apod. včetně parametrů)
■ nocancel ....... potlačí ukončení úlohy při chybě a číslo chyby je
přístupné funkcí exitcode. Číslo chyby nastavuje program
a většinou platí: Exitcode=0 => bez chyby
■ freemem ........ uvolňuje maximum paměti - nelze použít pro DML-programy
■ loadfont ....... při návratu do PC FANDu se obnoví fonty
■ textmode ....... pokud PC FAND pracuje v grafickém módu a volaný program
komunikuje v textovém módu.
Chyba v prováděném programu (tj. ukončení s nenulovým návratovým kódem) má
za následek chybové hlášení a přerušení FANDovské aplikace. Pokud se však
použije parametr nocancel, aplikace se nepřeruší a pouze nastaví návratový
kód exitcode.
Při nenalezení programu nebo nedostatku paměti však je aplikace přerušena
bez ohledu na parametr nocancel.
██ EXITCODE .. funkce typu real, návratový kód posledního volaného příkazu.
Nastavují příkazy exec,mount,gettxt,writerec,deleterec,
recallrec, linkrec, backup, restore,
selectstr,checkfile, evalb, evalr, evals
copyfile, backupm, restorem
report a edit s parametrem check
Exist
CIZÍ KLÍČ
Exit
EXIT - duplicitní klíčové slovo
■ exit ................. řídící příkazy: ukončení procedury
■ edit(...exit...) ..... přerušení editace: exit-procedura
■ edittxt(...exit...) .. přerušení editace textu
ExitCode
EXTERNÍ PROGRAMY
Exit-procedury
EXIT - PROCEDURY
Exp
ARITMETICKÉ FUNKCE
Externí programy
EXTERNÍ PROGRAMY