Generační soubory

GENERAČNÍ SOUBORY
Generační soubory slouží k fyzickému rozdělení dat do více souborů podle
nějakého kritéria, nejčastěji časového - např. měsíce roku ( 12 generací ).
Potom musí být v katalogu odpovídající počet zápisů se stejným názvem úlohy
a souboru. Aktuálně se použije první zápis. Číslo generace je uloženo jako
poslední dva znaky v příponě fyzické cesty k souboru (Path). (katalog)
Cyklická změna pořadí generačních souborů -tzv. otočení katalogu-se provede
příkazem turncat.

██ Syntaxe: TURNCAT ( NázevDleKatalogu ,Číslo )

■ Číslo ...... Číselný výraz. Udává směr a počet generací posunu.

S číslem generace lze v proceduře pracovat pomocí metod přímého přístupu
do katalogu, viz. generation.

░░░░░░░░░░░░
░░příklady░░
░░░░░░░░░░░░

██ { obsah katalogu }

NazUlohy NazSouboru Ar Cesta Navesti
FAKTURY DOKLADY 00 C:\ASR\DOKLADY.001
FAKTURY DOKLADY 00 C:\ASR\DOKLADY.002
FAKTURY DOKLADY 00 C:\ASR\DOKLADY.003
FAKTURY DOKLADY 00 C:\ASR\DOKLADY.004
FAKTURY DOKLADY 00 C:\ASR\DOKLADY.005
........ ........ .. ........................... ...........

{ procedura }
menuloop 'Generace' of
'přejdi k další generaci':turncat(DOKLADY,1);
'vrať se k minulé generaci':turncat(DOKLADY,-1);
'vypiš číslo generace': writeln('generace: ',DOKLADY.generation:3);
end;

Generation

KATALOG V PROCEDUŘE
Z procedury lze korektně zpracovat údaje katalogu metodami přímého přístupu.
Požadovaná věta katalogu se určí názvem souboru ( nikoliv fyzickým číslem
věty jako u běžného datového souboru ). Tyto výrazy se mohou vyskytovat na
levé i pravé straně přiřazovacího příkazu, kromě odkazu .generation, který
se může vyskytnout pouze na pravé straně (generaci souboru lze měnit pouze
příkazem TurnCat.).

██ NázevDleKatalogu.PATH ....... Cesta (úplná fyzická cesta datového souboru)
██ NázevDleKatalogu.VOLUME ..... Návěští (volume diskety)
██ NázevDleKatalogu.GENERATION.. Číslo generace
██ NázevDleKatalogu.ARCHIVES.... Číslo úrovně archivace


Jiný způsob práce s katalogem je založen na využití implicitně deklarovaného
souboru catalog.

GetEnv

HODNOTA SYSTÉMOVÉ PROMĚNNÉ
Hodnota systémové proměnné (SET-parametry) z oblasti prostředí systému.

██ syntaxe: GETENV( TextVýraz ) : string


■ TextovýVýraz ... Název SET-parametru, jehož hodnotu chceme zjistit.
Pokud je výraz prázdný (''), vrátí funkce plnou
cestu ke spuštěnému programu .EXE ... tedy např.
C:\FAND\FAND.EXE.

Poznámka: Getenv('') je jediný korektní způsob jak zjistit, z kterého
adresáře je spuštěn FAND.EXE (tzv. FAND-adresář ). Pro zjištění
adresáře spuštěné úlohy (.RDB) je možno využít faktu, že tento
adresář je aktivní jako DOS-aktuální adresář(current directory).

GetIndex

GETINDEX
Příkaz procedury GetIndex vytváří pracovní index v lokální proměnné resp.
parametru procedury typu index of soubor. Pomocí alternativní verze
příkazu lze i upravovat již vytvořený pracovní index.

██ Syntaxe1: GETINDEX( LokPromTypuIndex,
Soubor [ / NázevKlíče | LokPromTypuIndex ]
[ ,cond = ( LogickýVýraz ) ]
[ ,sort = ( TřídícíÚdaje ) ]
[ ,owner = VazbaOwner ] )

■ Soubor/NázevKlíče ..... Soubor je název kapitoly F, přístup podle klíče
použijeme ze dvou důvodů:
1. případné použití key in v parametru cond
2. při shodě popisu klíče s tříděním indexu dojde
k výrazné úspoře času
Poznámka: Ve verzi 3.2 se podle NázevKlíče přebralo třídění
do pracovního indexu. Ve verzi 3.3 nikoliv.

■ Cond=(LogickýVýraz) ... Pracovní index prezentuje podmnožinu souboru.
V podmínce se může vyskytnout key in, v případě
souboru .SQL lze použít i textový výraz
( pro SELECT WHERE )

■ Sort=(TřídícíÚdaje) ... Syntaxe je shodná s tříděním v deklaraci indexu.
Parametr sort lze použít jen tehdy, není-li
třídění uvedeno v deklaraci a jde-li o lokální
proměnnou procedury (nikoliv parametr procedury).
Z posledního faktu plyne důležité omezení a sice:
ve volané proceduře nelze změnit třídění pracov.
indexu, který tam byl předán jako parametr.

■ owner = VazbaOwner .... Generování podmnožiny podle vazby owner. Syntaxe
viz. popis owner.
POZOR ! U distribuční verze 4.0 chybně funguje
varianta OWNER Soubor[FyzČísloVěty]
Pouze u příkazu GetIndex, jinak OK.

■ Vytvářená lokální proměnná typu index může být stejná jako /...Index.
Tak lze realizovat postupné zúžení podmnožiny.


██ Syntaxe2: GETINDEX( LokPromTypuIndex, + | - , ČísloVěty )

■ + ... Příkaz přidá do pracovního indexu větu, danou fyzickým číslem
ve třetím parametru. Neprovede nic, pokud je číslo věty neplatné,
věta je neplatná nebo je již v indexu zařazena (se stejnou
hodnotou klíče).

■ - ... Příkaz vyřadí danou větu z indexu. Pokud věta není v indexu nebo
tam je s jinou hodnotou klíče, neprovede se žádná akce.

■ ČísloVěty ... číselný výraz, fyzické číslo věty, která se má přidat nebo
vyjmout z pracovního indexu.

getlex

getlex
getlex(Lexem)

Vrací aktuální seznam lexemů z interní paměti. Predikát lze
použít pouze ve větvi po loadlex.


Lexem Term typu L_Lexem.

GetMaxX

ROZMĚRY OBRAZOVKY
Funkce vrací rozměry obrazovky (textový režim).

██ syntaxe: MAXCOL : real ....... počet sloupců obrazovky (stand.80)
MAXROW : real ....... počet řádků obrazovky (stand.25)


gotoxy, Funkce v L kapitole
───────────────

Rozměry aktuálního okna v pixelech ( grafický režim ).

██ syntaxe: GETMAXX : real ........ Maximální souřadnice X
GETMAXY : real ........ Maximální souřadnice Y

Poznámka : Pozor na rozdíl grafiky oproti textu. V grafice se počítá
od 0. Např. pro VGA, pro celou obrazovku je getmaxx=639.

GetMaxY

ROZMĚRY OBRAZOVKY

GetPath

DOTAZ UŽIVATELI
Interaktivní výběr cesty k souboru v systému adresářů.

██ syntaxe: GETPATH [ ( Maska ) ] : string

■ Maska ...... Textový výraz. Zadání vhodné masky umožňuje :
- zúžit výběr na soubory s určitou příponou
- zvolit vhodný adresář pro začátek hledání
- nastavení požadovaného disku
V masce je možno použít speciální znaky :
? nahradí se libovolným znakem - jen pro danou pozici
* nahradí se libovolnou kombinací znaků (řetězcem)
Implicitní maska je '*.*' ( tj. všechny soubory)
■ Vrací ...... Funkce vrací úplnou cestu k potvrzenému souboru (ENTER)
nebo prázdný string při ESC.
■ Kapitoly ... P, D

komunikační příkazy

░░░░░░░░░░░░ ██ s:=getpath('*.TXT');
░░příklady░░ TEXT.Path:=s;
░░░░░░░░░░░░ printtxt(TEXT); {tisk vybraného souboru}

GetTxt

ZÁPIS A ČTENÍ TEXTU ZE SOUBORU
Načtení textu z textového souboru od zadané pozice. Načte se celý text,
nebo, pokud je zadán třetí parametr, blok této délky. Pozor na to, že
pracuje i s texty delšími než 65 000 byte, které načte celé jen při přímém
přiřazení do lokální proměnné typu string nebo do údaje souboru typu T.
Pokud nemůže načíst celý soubor až do konce (resp. celý požadovaný úsek),
nastaví exitcode=1, jinak platí exitcode=0.

██ syntaxe : GETTXT ( NázevSouboru [,PoziceOd [ ,Délka]] ) : string

■ NázevSouboru ... fyzické jméno v apostrofech nebo jméno z katalogu
■ Kapitoly ....... P,D

Příklad:
var s:string;
begin
s:=gettxt('soubor'); {zde je exitcode vždy =0, neboť do s se přečte i
dlouhý string do 2GB}

s:=gettxt('soubor')+'něco k tomu';
if exicode=1 then
message('ze souboru se nepřečetlo vše, neboť výraz typu string <= 65000B');

───────────────────────

Zápis textu do textového souboru.

██ syntaxe : PUTTXT ( NázevSouboru , TextVýraz [ ,append ] )

■ NázevSouboru ... fyzické jméno v apostrofech nebo jméno z katalogu
■ append ......... připojení textu za textový soubor
■ Kapitoly ....... P

GF

ZOBRAZENÍ SOUBORU VE FORMÁTU .PCX
Příkazem graph lze zobrazit soubor v grafickém formátu PCX (pixel grafika)

██ Syntaxe: graph ( GF= NázevSouboruPCX , ... )


■ Z ostatních parametrů lze uvést Print, ww, Txt, TxtWin, Assign.

■ Parametrem WW lze obraz .PCX "ořezat". Pokud je obraz větší než použité
okno, lze oknem rolovat pomocí kurzorových kláves.

■ Předefinováním barev v .PCX se změní barvy na celé obrazovce po dobu
příkazu graph

■ graph( GF='', ... ) ... tisk , uložení nebo inverze grafické obrazovky.
Dále jsou akceptovány parametry Print, ww, Txt,
a TxtWin.


Chyby při zobrazení .PCX
Nastane-li při zobrazení souboru PCX chyba, nahlásí PC FAND
F10! Chyba obrazení PCX(číslo chyby)
kde číslo chyby znamená: 1... soubor nelze otevřít (nenalezen)
2... nerozpoznán formát PCX souboru
3... možné zobrazit pouze na VGA kartě(256 barev)
4... pokus o zobrazení PCX v 256 barvách do okna
(lze pouze přes celou obrazovku)

Globální proměnné

PARAMETRICKÝ KLÍČ
Datový soubor s definovaným parametrickým klíčem je parametrický soubor.
Jeho poslední věta je viditelná (tj. jeho údaje se mohou vyskytovat pomocí
tečkové notace ve výrazech i na levé straně přiřazovacího příkazu) v celém
projektu.

█ @ @ ....................... definice parametrického klíče

Parametrický soubor může být dále v projektu zpracováván jako obyčejný
datový soubor a může mít více vět, většinou má však pouze jednu větu. Když
je parametrický soubor prázdný, PC FAND automaticky vytváří při prvním
přístupu jednu větu a naplní ji nulami a mezerami.

Údaje poslední věty parametrického souboru nazýváme globální proměnné.
Na globální proměnné se v celém projektu odkazujeme tečkovou notací
a mohou vystupovat ve výrazech i na levé straně přiřazovacího příkazu.

█ NázevSouboru.NázevÚdaje ... globální proměnná


░░░░░░░░░░░░
░░příklady░░
░░░░░░░░░░░░

██ Deklarace parametrického souboru PARAM

F PARAM Datum : D ;
....
#K @ @ ;

Odkaz na globální proměnnou PARAM.Datum kdekoliv v projektu
PARAM.Datum:=today;

GotoXY

VÝSTUP NA OBRAZOVKU
Základními příkazy pro výstup na obrazovku jsou write a writeln, který
navíc provede odřádkování.Výstup se provede do aktuálního okna od aktuální
pozice kurzoru.

██ syntaxe: WRITE( SeznamPrvků )
WRITELN( SeznamPrvků )

■ prvek seznamu prvků ...... TextVýraz, LogVýraz, ČísVýraz s maskou
■ masky pro výstup čísla ... ČísVýraz:m nebo ČísVýraz:m:n
m celková délka zobrazení čísla (počet míst)
n je počet míst za čárkou
při n=-1 se použije exponenciální tvar
výstup datumu a času ..... ČísVýraz:Maska (maska pro datum)
───────────────

Nastavení aktuální pozice kurzoru.

██ syntaxe: GOTOXY( Sloupec,Řádek )

■ Sloupec,Řádek... Číselné výrazy, relativní vzhledem k aktuálnímu oknu.

Grafické příkazy

GRAFICKÉ PŘÍKAZY
Grafické příkazy jsou definovány pouze v módu 80x25. Kromě příkazu graph
musí být před použitím grafického příkazu aktivován grafický mód příkazem
with graphics. Pokud tomu tak není, příkaz se ignoruje.

██ syntaxe: WITH GRAPHICS DO Příkaz

■ Příkaz bude proveden v grafickém módu dle typu obrazovky. Platí pro EGA
(640x350), VGA (640x450) Hercules (720x348). Příkaz může být i
složený (begin ... end).

──────────────────
Další příkazy pro grafický režim:

■ graph ....... grafické zobrazení dat, obchodní (bussines) grafika
■ putpixel .... kreslení bodu
■ line ....... kreslení čáry
■ rectangle ... kreslení obdélníku
■ ellipse ..... kreslení elipsy (kružnice)
■ floodfill ... vyplnění ohraničené oblasti vzorem
■ outtextxy ... výpis textu zadaným typem, velikostí a směrem písma
■ getmaxx, getmaxy ... maximální grafické souřadnice aktuálního okna

Grafy

PŘÍKAZ GRAPH ovládání zobrazení grafu
Příkaz procedury pro grafické zobrazení datových souborů (jen při 80x25).

██ tři varianty syntaxe:
GRAPH; ....... interaktivní práce s grafem (bez implicitních hodnot)
GRAPH (GF=TextVýraz); ........ zobrazení grafického souboru *.PCX

GRAPH ( NázevSouboru [/NázevKlíče ], ............... graf souboru
( SeznamÚdajů )
[, Type=TextVýraz] [, Head=TextVýraz] [, HeadX=TextVýraz]
[, HeadY=TextVýraz] [, HeadZn=TextVýraz] [, DirX=TextVýraz]
[, Width=ČísVýraz] [, Grid=TextVýraz] [, Print=TextVýraz]
[, GrPoly=ČísVýraz] [, Fill=TextVýraz] [, Cond=[()LogVýraz[)]]
[, Recno=ČísVýraz] [, Max=ČísVýraz] [, Min=ČísVýraz]
[, Nrecs=ČísVýraz] [, Interact] [, Palette=TextVýraz]
[{, Txt=(DefiniceTextu)}] [{,TxtWin=(DefiniceTextuOkna)}]
[, ww=(DefiniceOkna) ] [{,RGB=(DefiniceBarvy)} ]
[, assign=TextVýraz] );

■ Názevklíče ... zobrazení dle alternativního klíče
■ SeznamÚdajů ... alespoň dva údaje souboru, první pro osu X, druhý a
další pro osu Y. Typy údajů : osaX (F,A,N,D),
osaYi (F,N,D)

Graph

PŘÍKAZ GRAPH ovládání zobrazení grafu

Graphics

GRAFICKÉ PŘÍKAZY

Grid

PARAMETRY GRAFU

Group

GROUP, COUNT - duplicitní klíčová slova

GrPoly

PARAMETRY GRAFU
Výběr vět ze souboru
■ COND=LogVýraz ... výběr vět pro zobrazení
■ RECNO=ČísVýraz .. počáteční věta pro zobrazení (podmnožina se akceptuje)
Implicitně = 1.
■ NRECS=ČísVýraz .. počet vět pro zobrazení
maximum pro CIRCLE a POLYREG je 32,pro ostatní typy 64,
zobrazí se však počet reálně zobrazitelných vět.
...........


■ WIDTH=ČísVýraz .. šířka objektů v procentech (1..100%), implicitně 50%
Lze použít pro všechny typy kromě CIRCLE. Pro čárové
grafy šířka čar-pod 50% tence, jinak tlustá (3pixely)

■ MAX=ČísVýraz .... maximum na ose Y │ když Min=-1 dosadí se do Max maximum
■ MIN=ČísVýraz .... minimum na ose Y │ hodnot+10% a do Min minimum-10%
Jiné záporné hodnoty než min=-1 nejsou akceptovány.
(Funkce v L kapitole)
■ GRPOLY=ČísVýraz . stupeň aproximačního polynomu pro POLYREG(max. Nrec-1)
■ INTERACT ........ interaktivní práce s převzetím zadaných parametrů