Programování FoxPro 2.0 (pro
začátečníky)
Charakteristika FoxPro
FoxPro
2.0 je nový programovací systém, opírající se o relační databázové
soubory. Podporuje nejmodernější metody programování a efektivní práci
programů v jednouživatelském prostředí i v počítačových sítích. Z
vlastností FoxPro se nejvíce cení:
a) Rychlost zpracování velkých objemů informací, která je bez konkurence.
b) Vysoká produktivita práce při tvorbě aplikací.
c) Univerzálnost. Kromě běžných databázových úloh lze v něm řešit širokou škálu problémů z oblasti automatizovaného zpracování informací, včetně sémantických analýz textů a modelování boje.
d) Snadná modifikovatelnost aplikací, plynoucí z vlastností relačních databázových systémů i z vlastností programovacího jazyka.
e)
Nízká cena síťových aplikací.
Tato
charakteristika umožňuje pokládat FoxPro za vhodný nástroj pro automatizaci
systémů řízení, velení a spojení. Nejsou výjimečné ani aplikace z vědecké
a technické praxe.
FoxPro je vhodné pro řešení úloh:
a)
u kterých není možné předem přesně definovat
datové a programové struktury,
b)
které mají tak velký rozsah, že je nelze řešit najednou a nutno volit
postupnou automatizaci, s vědomím úprav dříve vyřešených částí
c)
u kterých se často mění požadavky na konkrétní řešení dílčích částí
(což je pro systémy velení a řízení přímo typické),
d)
u kterých nelze předem definovat všechny požadavky na výstupní informace.
Uložení FoxPro, jeho startování
a ukončení práce
Systém
FoxPro je (obvykle) uložen v adresáři \FOXPRO2. Uživateli je přidělován
jiný adresář, někdy dokonce na jiném disku. Na učebnách VA to nejčastěji
bývá adresář \FOXPRO2\PR. V adresáři \CS jsou obvykle uloženy programy
VGACS a KEYBCS2. Zabezpečují zobrazování a vstup textu s diakritickými
znaky.
Na
disku má být k dispozici dostatek místa pro pracovní soubory a programy (přibližně
1 MB). Bezpodmínečně je nutné, aby v souboru CONFIG.SYS (v hlavním adresáři)
byl nastaven parametr FILES=40 (nebo více) a BUFFERS=25 (nebo více). Byla-li
nutná úprava souboru CONFIG.SYS, nutno provést nové odstartování systému.
Dále nutno nastavit cestu do adresáře FOXPRO2 příkazem PATH \FOXPRO2. Pokud
bude požadováno grafické zobrazování výsledků, pak v adresáři
\FOXPRO2\GRAPH musí být uloženy programy FOXGRAPH a nastaveny cesty PATH
\FOXPRO2; \FOXPRO2 \GRAPH. Systém FoxPro se startuje z adresáře uživatele. K
jeho přivlastnění se používá příkazu cd \FOXPRO2\PR. Startování se
provádí příkazem FOXPRO (síťová verze se startuje příkazem FOXPROL).
Ukončení práce FoxPro lze provést pouze příkazem QUIT, který kromě uzavření
všech souborů zruší pracovní soubory FoxPro. Pracovní soubory mají příponu
.TMP. Lze je rušit pouze mimo prostředí FoxPro.
Pro
pohodlnou práci s FoxPro je vhodné připravit startovací soubor typu .BAT,
který obsahuje níže uvedené příkazy (nebo příkazy k ním analogické):
CD
C:\FOXPRO2\PR
PATH
C:\FOXPRO2;C:\FOXPRO2\GRAPH
C:\CS\VGACS
C:\CS\KEYBCS2
FOXPRO
Nutno
zdůraznit, že systém pracuje tím rychleji, čím má více operační paměti
k dispozici. Proto před startováním systému je vhodné zrušit práci
rezidentních programů, kterých funkci může FoxPro plně nahradit (NORTON,
PCSHELL, atd.)
Rozsahu probírané látky v 1. části
kursu
FoxPro
2.0 je rozsáhlý systém, jehož popis zabírá několik tisíc stran. K jeho
profesionálnímu zvládnutí je zapotřebí přiměřené doby. Je ovšem rozdíl,
zda aplikaci (aplikace = úloha řešená v daném systému) připravuje řešitel
pro jiného uživatele nebo jen pro sebe. To znamená, že je současně
provozovatelem i uživatelem řešení. V tomto případě lze totiž podstatně
slevit z požadavku poznání systému. Z metodického hlediska při tom nedochází
k chybě. Na profesionální úroveň se lze propracovat postupným zvyšováním
zde získaných znalostí.
Cílem
1. části kursu je v co největší míře usnadnit pochopení práce s databázovými
soubory. Obsah je zaměřen na:
a)
Vytvoření struktury databázového souboru, její dokumentování a modifikování.
b)
Naplnění databázového souboru daty, jednoduché vyhledávání údajů a
jejich uspořádaný výpis.
c)
Uspořádané výběry údajů z jednoho a více souborů, zjišťování jejich
četnosti, jejich seskupování, součtování, průměrování, hledání
nejmenší nebo největší hodnoty, atd.
b)
Zobrazování a tisk sestav. V uvedeném pořadí jsou probírány k tomu potřebné
příkazy a funkce FoxPro. Syntax příkazů je záměrně zjednodušena.
a)
prostředky přímého programování,
b)
prostředky automatizace a racionalizace programování (case).
Ve
skriptech je zvolena optimální kombinace uvedených nástrojů, vedoucí k
nejrychlejšímu dosažení cíle. Obsah skript předpokládá předchozí zvládnutí
základů programování a operačního systému MS DOS.
Konvence zápisu příkazů a funkcí
(syntax)
a)
Popis příkazů je zapisován do řádků volně. Zápis příkazu nebo výrazu
však musí být na jednom řádku nebo musí být vyznačeno středníkem pokračování
příkazu či výrazu na dalším řádku. Například: WAIT "Tento příkaz
pokračuje"+ ;
"na druhém řádku"
b)
Při zápisu povelů, zejména v okně Command, se doporučuje před a za středníkem
uvádět mezeru (jak je ukázáno na výše uvedeném příkladě).
c)
Slova napsaná velkými písmeny jsou klíčová slova FoxPro. Jsou vyhrazena
pro příkazy a funkce FoxPro. Pro praktický zápis stačí uvádět první čtyři
znaky klíčových slov (lze použít malých písmen).
d)
Ostré závorky určují část příkazů a funkcí, které musí být
nahrazeny skutečnými údaji. Ostré závorky a jimi ohraničený text nesmějí
být uváděny v příkazech a funkcích. Příklad: COPY TO <jméno_souboru>
předepisuje syntax příkazu COPY TO evidence.
e)
Hranaté závorky označují volitelné údaje. V příkazu ani ve funkci se
nevyskytují, s výjimkou definic polí (například matic) a adresace jejich
prvků. Například COPY TO <jméno_souboru> [[TYPE] FOXPLUS] vyjadřuje
volitelnost klíčového slova FOXPLUS, které může předcházet slovo TYPE.
Naopak je doporučován zápis: A[2,1], MATICE[r,s].
f)
Kulaté závorky v popisu musí být vždy uváděny. I když je jejich obsah
nepovinný. Například TIME([<výrazN>]) lze zapsat TIME().
g)
Je-li povolen zápis pouze jednoho ze skupiny prvků uvedených v popisu příkazu,
pak tyto prvky jsou odděleny svislou čarou. Například GO <výrazN> │ TOP │ BOTTOM povoluje
zápis GO <výrazN> nebo GO TOP nebo GO BOTTOM.
Konvence označování řídících
kláves
a)
Při vstupu informací se často používá, kromě běžných kláves, též kláves
řídících. Zmáčknutím těchto kláves se vyvolá naprogramovaná činnost.
Zmáčknutí řídících kláves znamená často současné zmáčknutí dvou
kláves. Klávesy CTRL a nějaké jiné klávesy, například písmena I (od
anglického slova Insert = vlož).
b)
CTRL je zkratkou anglického slova ConTRoL = řízení. Jelikož tento popis klávesy
je zdlouhavý, vžila se pro klávesu CTRL značka ^. Současné zmáčknutí klávesy
CTRL a například I se vyjádří tedy ^I. Uvedený tvar se vyskytuje (pro
nedostatek místa) v nápovědích hlavního menu. My, při programování,
budeme používat zápisu ve tvaru CTRL+I.
Konvence usnadňující orientaci v
pracovních pomůckách
a)
Definice příkazu nebo funkce začíná slovem, které je současně názvem příkazu
nebo funkce. Pro zvýraznění je toto slovo ve skriptech zapsáno obzvláště
velkými písmeny.
b)
Pro usnadnění orientace jsou definice příkazů a funkcí označeny dvěma tečkami,
popisy a vysvětlivky označeny třemi tečkami a dílčí příklady čtyřmi
tečkami.
c)
Vyhodnocení výrazů je předznamenáno otazníkem. Je to v souladu s příkazem
tisku (zobrazení) hodnoty výrazu. Výsledná hodnota je pak uvedena na následujícím
řádku.
d)
V příkladech je uváděno vysvětlení ve tvaru komentáře programu:
&& - uvádí komentář na příkazovém řádku
* - uvádí komentář na samostatném řádku.
Konvence dialogů
Styk
uživatele se systémem zajišťuje dialog. Dialog je seskupeni oken, ve kterých
jsou zobrazeny nabídky (menu), seznamy (list), tlačítka (button), a řádky
určené k zápisům jmen (name) a výrazů (expresion). Přepínání mezi okny
se provádí myší nebo klávesou Tab nebo Shift+Tab (v opačném pořadí).
a)
Nabídka je okno (window), které umožní výběr jedné ze zobrazených možností
(volbu). Možnosti mohou být uspořádány vodorovně (bar menu) nebo svisle
(popup menu). Volba z nabídky se provádí jedním (nebo ve zvláštních případech
dvojím) zmáčknutím levého tlačítka myši. Volby pomocí klávesnice se
provádějí zápisem zvýrazněného písmena volby. Volbami se řídí větvení
programu. Za příklad může posloužit hlavní menu systému, které nabízí
obecné činnosti (system), práci se soubory (file), pořizování a
aktualizaci textových informací (edit), práci zaměřenou na databázové
soubory (database), práci se záznamy databázových souborů (record), činnosti
spojené s budováním a provozováním programů (program), dále volbu tvarů
a barev oken (window).
┌─────────────────────────────────────────────────────────────
│ SYSTEM FILE EDIT DATABASE RECORD PROGRAM WINDOW
└─────────────────────────────────────────────────────────────
b)
Zvláštní formou menu je překrývané okno (control popup), ve kterém je vidět
pouze standardní (default) nebo naposledy vybranou nabídku. Volba spočívá v
roztažení menu levým tlačítkem myši. Tlačítko nutno držet do ukončení
volby (posouváním myši). Volba klávesnicí je stejná jako u běžné nabídky.
Okno řídící nabídky má často pravý a spodní okraj rámu zdvojený a je
vždy uvedeno názvem nabídky. Například okno výběru jednoho ze všech možných
typů souborů má tvar:
┌──────────────
TYPE: │ Database
└──────────────
c)
Seznam (list) je podobný nabídce. Nemá však zvýrazněna písmena voleb. Když
není k dispozici myš, pak nutno volbu provést pomocí šipek a potvrdit klávesou
Enter. V seznamu může počet možností přesáhnout rozměr okna (další
odlišnost od nabídky). Když je seznam větší než okno, pak se v příslušném
rozměru okna zobrazí polohový ukazatel zobrazené části seznamu vůči
celku (značce se říká diamant). Pomocí myši a diamantu lze řídit rychlý
přesun okna (seznamy obvykle nabízí obsah souboru, který může být značně
rozsáhlý). Příkladem je výběr jednoho z databázových souborů:
┌───────────────
│ EVID_VOZ.DBF
│ TYPY_VOZ.DBF
│ VYKONY_V.DBF
│ OPRAVY_V.DBF
└───────────────
d) Řídící pole
(check box) je seskupení
alternativních nabídek, které se navzájem nevylučují. Řídící pole umožňuje
nastavení více možností najednou. Nastavení se zaznamená (nebo zruší) zmáčknutím
levého tlačítka myši nebo klávesou Enter v prostoru vymezeného hranatými
závorkami. Samotné nastavení často vede na upřesňující (pomocný)
dialog. Příklad nastavení tisku, při kterém je možné nastavit číslování
řádků (line numbers), zvláštní řádky před tiskem strany (page eject
before) a po tisku strany (page eject after):
┌──────────────────────────
│ [X] Line Numbers
│ [ ] Page Eject Before
│ [X] Page Eject After
└──────────────────────────
e)
Výběrové pole (radio button) je seskupení alternativních nabídek, které
se navzájem vylučují. Výběrové pole umožňuje nastavení pouze jediné možnosti.
Volba se zaznamená (nebo zruší) zmáčknutím levého tlačítka myši nebo
klávesou Enter v prostoru vymezeného kulatými závorkami. Tvar připomíná rádiový
knoflík (o). Příklad na umístění údaje: uprostřed (center), vpravo
(right), vlevo (left).
┌──────────────────────────
│ ( ) Left justify
│ (o) Right justify
│ ( ) Center justify
└──────────────────────────
f)
Tlačítko (push button) je v podstatě přepínač na činnost zapsanou v ostrých
závorkách. Tlačítko aktivuje činnost po zmáčknutí levého tlačítka myši
nebo klávesy Enter. Například <Cancel>. Zvláštní postavení má tlačítko
vyznačené dvojitými ostrými závorkami. Například « OK » . Takové tlačítko
je v dialogu pouze jediné. Aktivuje hlavní činnost. Lze ho přepnout, v
libovolném okamžiku, klávesami ^Enter.
(Ukázky různých dialogů jsou, bez tohoto popisu, uváděny
v následujících kapitolách.)
Kapacita systému FoxPro 2.0
Níže
uvedené údaje slouží pouze k vytvoření představy o mohutnosti systému.
Pro potřeby projektování a programování je není nutné znát. Limity v
podstatě neomezují požadavky praxe.
FoxPro
se dodává ve dvou velikostech: standardní a rozšířené.
VELIKOST: STANDARD EXTENDED
ZÁZNAMY A SOUBORY
───────────────── (1)
max.počet záznamů v jednom souboru 1 billion 1 billion
max.počet znaků v záznamu 4 000 4 000
max.počet položek záznamu 255 255
max.počet otevřených soub. DBF 25 25
max.počet znaků ind. klíče CDX (4) 254 254
max.počet otevřených indexových
souborů pro DBF (2) neomezen neomezen
POLOŽKA DATABÁZOVÉHO SOUBORU
────────────────────────────
max.počet znaků položky 254 254
max.počet znaků číselné položky 20 20
max.počet znaků jména položky 10 10
platných cifer v num. výpočtech 16 16
PROMĚNNÉ A POLE
───────────────
implicitní počet proměnných 256 256
max.počet proměnných 3 600 65 000
max.počet polí 3 600 65 000
max.počet prvků pole 3 600 65 000
max.délka řetězce 64K neomezen
PROGRAM A SOUBOR PROCEDUR
─────────────────────────
max.počet řádek ve zdroj. souboru neomezen neomezen
max.paměť přeloženého modulu 64K 64K
max.počet vnoření podprogramů (3) 32 32
OKNA
────
max.počet otevřených oken neomezen neomezen
max.počet otevřených oken Browse 25 25
RŮZNÉ
─────
max.počet znaků příkazu 2 048 2 048
max.počet znaků pro makrosubst. (5) 255 255
max.počet otevřených souborů 99 limit DOS
Poznámky k tabulce:
(1) Velikost jednoho souboru nesmí přesáhnout 2 GB pro jednouživatelský nebo v síti exkluzivně otevřený databázový soubor. Sdílené databázové soubory v síti bez indexového souboru nebo s indexovým souborem typu IDX nesmí přesáhnout 1 GB, se strukturovaným indexovým souborem typu CDX nesmí přesáhnout 2 GB.
(2) Omezeno dostupnou pamětí a parametrem FILES v CONFIG.SYS.
(3) Jde jednak o takzvanou rekurzivitu, kde procedura (nebo funkce) volá sama sebe, jednak o volání procedury procedurou příkazem DO.
(4) Indexy IDX (staršího typu) mají počet znaků indexového klíče omezen na 100. V současné době se používají zejména kvůli kompatibilitě se staršími verzemi a cizími databázovými systémy (například dBase IV). Jinak jsou považovány, ve srovnání s indexovými soubory typu CDX, za těžkopádné a zbytečně velké.
(5) Makrosubstituce je jev charakteristický pro programování ve FoxPro, při kterém se podstatná část příkazu doslova vypočítá, dosadí se do příkazu a provede. Tím se zjednodušuje a ulehčuje programování, zejména složitých logických problémů. Makrosubstituce, na rozdíl od jiných zde uvedených pojmů, bude probírána až ve 2. části kursu (pro pokročilé).