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. V přírodě nic není zadarmo. Vysoká produktivita programování a rychlost provádění výpočtů je vykoupena velkou náročností systému na operační paměť počítače i na kapacitu a rychlost diskové jednotky.

            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.

              FoxPro nabízí řadu nástrojů pro vytváření aplikací, které lze aktivovat ze systémového menu. Nejzávažnější jsou:

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é).