Az DBase nyelv család

Bevezetés

Néháy gondolat a nyelvcsaládról:

DBase:

A dBase nyelv gyakorlatilag az adatbázisokkal egyidõs, egyike a legelsõ adatbáziskezelõ nyelveknek. Mint ilyen, nem is tekinthetõ igazán programozási nyelvnek, pusztán az adatbázisokon gyakran végzett mûveletek leírására és fájlban való rögzítésére szolgáló eszköznek. Ez volt az első széleskörben elterjedt adatbázis kezelő program. Az alap ötlet Wayne Ratliff-tól származik aki 1978-ban assembly-ben írt egy adatbázis programot (még CP\M alá) hogy segítse az irodai futball-házibajnokságot.
A programozás fejlõdésével az adatbáziskezelõkkel szemben is egyre nõttek az igények (pl.: ne interpretált legyen a nyelv). Ennek következménye 1987-ben a Clipper, késõbb a FoxBase és a ma is használatos FoxPro. Ezeket a nyelveket nevezzük dBase alapúaknak, mivel mindegyik a dBase nyelvbõl fejlõdött ki. Olyannyira, hogy a dBase a III. Plus verziójáig, a Clipper az 5.02-es verziójáig, a FoxBase minden verziója, illetve a FoxPro 1.* verziói egy az egyben kompatibilisek egymással. Ez alapján a továbbiakban tárgyalt nyelv legyen a dBase III. Plus, illetve a Clipper 5.0 vagy afeletti verziója.

Clipper:

Magyarországon nemrég még nagyon elterjedt nyelv volt a Clipper. Népszerûségét õsének, a dBase nyelvnek köszönheti. A relációs adatbáziskezelõ nyelvek közül ez nyújtotta a legnagyobb rugalmasságot és szabadságot a programozók számára. Az interpreteres dBase-verziók után a fordítóprogramos Clipper megjelenése minõségi elõrelépést jelentett, ugyanakkor megtartotta, sõt továbbfejlesztette a dBase adatbáziskezelõ nyújtotta összes szolgáltatást. Elõnyeit látva (gyorsabb futás, az egyetlen EXE állományba áttehetõ programrendszer, a rendelkezésre álló adatbáziskezelõ verziótól független alkalmazási lehetõség, a segédprogramok, a C illetve Assembly rutinok beépítésének lehetõsége stb.) egyre többen áttértek használatára. Elterjedésében azonban jelentõs szerepe volt annak, hogy a korábbi adatbázisokba és programokba minimális változtatást kellett végrehajtani. Az 1987. õszi 5.0 verziószámmal ellátott Clipperben - bár még nem objektumorientált nyelv - az objektumorientált programozás egyre több elemét alkalmazzák. A továbbiakban a Clipper-rõl említettek az 5.0 vagy afeletti verziókra vonatkoznak.

FoxPro:

A Visual FoxPro egy egyszerû programfejlesztésre és adatbázis-kezelésre szánt környezet, a Microsoft Visual Studio része. Maga a nyelv szorosan összefügg a fejlesztõi környezettel, segítségével gyors, drag-and-drop stílusú programfejlesztés valósítható meg. A Visual FoxPro dBase alapú nyelv, ez a szintaxisában és adatbázis kezelési stílusában tükrözõdik. Negyedikgenerációs nyelv, mivel objektum-orientált, általános célú, támogatja az adatbázis-rendszerek fejlesztését, és a vizuális programfejlesztést, segítségével könnyen létrehozható egy önmagához hasonló rendszer. Nyelvezete egyszerû, sok kulcsszó formájában megjelenõ paranccsal, a hangsúly inkább azon van, mit szeretnénk elérni, nem azon, hogy hogyan. Könnyen megtanulható olyanok számára is, akik újak a programozásban. A FoxPro egy interpretált nyelv. Futás közben új erõforrásokat, például kódrészleteket tartalmazó fájlokat tölthetünk be, illetve módosíthatjuk a kódot például makró-helyettesítésekkel. A programok futtatásához egy futási környezet szükséges. Írhatunk programokat a hagyományos módon, vagyis a kódrészletek forrásfájlokban való elhelyezésével. Megadhatunk egy kezdõ procedúrát, ekkor a program futása itt indul. Azonban leggyakrabban vizuális alkalmazások fejlesztésére használják. Definiálhatunk ablakokat (formokat), ezek képezik a felhasználói felületet. Megadhatunk egy kezdõ formot, ekkor a program futtatása ennek a formnak a létrehozásával és megjelenítésével indul. Ez kezdeményezheti újabb formok megjelenítését, a rajtuk lévõ vezérlõelemek különbözõ tevékenységeket végezhetnek, például megjeleníthetik és módosíthatják az adatbázisban tárolt adatokat.

A dBase nyelvcsalád története:

dBase:

A dBASE volt az első széles körben használt adatbázis kezelő rendszer mikroszámítógépeken, melyet az Ashton-Tate adott ki eredetileg CP/M operációs rendszerre, ami még Intel80/85 és Zilog 80 alapú prcesszorokra íródott. Később megjelent apple II, Apple Macintosh, UNIX, Vms és DOS alá, ahol már az egyik legtöbbet eladott software termék volt éveken keresztül. A dBASE eredeti tervezője Wayne Ratliff volt. 1978-ban - ekkor a Jet Propulsion Laboratory -ban dolgozott, - Ratliff assembly -ben írt egy adatbázis programot CP/M alapú mikroszámítógépekre, hogy megnyerje az irodai futbal-fogadásokat. A dBASE -t a Jeb Long JPLDIS -re alapozta (Jet Propulsion Laboratory Display Information System) és "Vulcan" -nak nevezte el, Mr. Spock után a Star Trek -ből.
A 1980 -as évek elején Geroge Tate az Ashton-Tate -től kereskedelmi megegyezést kötött Ratliff -el. A Vulcan ekkor kapta a dBASE nevet és hamar nagy sikerre tett szert.
Már az 1980 -s évek közepétől kezdve sok más cég is megalkotta a saját változatát. Ezek voltak a FoxPro (most Visual FoxPro), Arago, Force, Recital, dbFast, dbXL, Quicksilver, Clipper, Xbase++, FlagShip és Harbour. Ezeket a nyelveket együtt, nem hivatalosan, xBase -nek, vagy XBase -nek nevezzük.
A dBASE -t sosem sikerült portolni Microsoft Windows -ra ennek köszönhetően jöttek létre a Paradox, Clipper, FoxPro és Microsoft Access programok és nyelvek.
A dBASE -t 1991 -ben eladták a Borlandnak, ami később a jogokat továbbadta az újonnan alakult dBASE válalatnak.

A Clipper - legenda:

Van egy legenda a CA_Clipper nevének eredetéről.
Egy nap, egy kaliforniai tengerparti étteremben ebédelt az Ashton-Tate egyik alkalmazottja egy konzulens barátjával. Arról beszélgettek, hogy az Ashon-Tate nem készíett fordítót a dBase-hez. Ennek okán felmerült, hogy egy új céget kellene alapítani és megírni a fordítót. Ahogy nőt az izgalom, és egyre csak jöttek az ötletek, felmerült a termék nevének kérdése!
Az egyikük felfigyelt a szalvétán lévő hajóra. Ez egy clipper (vitorláshajó) volt. Egy kecses, gyors és elegáns jelenség, ami egyértelműen szimbolizálta mindazt amit ők csinálni szerettek volna.
És mi legye a cég neve? A menü megadta a választ. Az étterem neve után - ami Nantucket Lighthouse volt -  a cég neve Nantucket's Clipper lett. :)

Foxpro:

A FoxPro-nak rövid, de dicsőségteljes élete volt.
1989-ben jelent meg a dBaseIII PLUS egy alternatívájaként, Dave Fulton - a Bowling Green State University egyik professzora - 3. generációs  termékeként.
Az első két termékét - a FoxBase-t és a FoxBase+ -t - azért írta, hogy az Ashotn-Tate dBase termékének technológiáit magábaolvassza és kiegészítse.
A siker minden várakozást felülmúlt! Fox minden más xBase terméket messze maga mögött hagyott.
Az alábbi táblázat a FoxPro csúcsratörésének mérföldköveit mutatja:
Dec 1984 FoxBASE Dave Fulton és Bill Ferguson írta. A dBase funkcióit ötvözi a fox gyorsaságával.
Jun 1986 FoxBASE+ Egy megfizethetőbb, megbízhatóbb és gyorsabb alternatíva dBase III. alkalmazások írásár.a
Sep 1988 :^( Az Ashton-Tate bepereli a Fox Software -t.
Sep 1989 FoxPro 1.0 A dBase promptját felváltja a FoxPro parancsablaka.
Jul 1991 FoxPro 2.0 Rushmore* optimalizálás, SQL, Varázslók, Projekt Menedzselés, összetett indexelés.
Jun 1992 MS FoxPro 2.0 A Microsoft bekebelezi a Fox Software -t 1.36 millió részvény felvásárlása révén($173M)
Jan 1993 FoxPro 2.5 Az első Windows-os FoxPro verzió megjelenése. Windows EXE állományok előállítására alkalmas software csomag.
Jun 1993 FoxPro 2.5a Nemzetközi nyelvi támogatás.
(and multi-line Wait Windows)
Sep 1993 FoxPro 2.5b Görög, Lengyel, Újzélandi és Cseh nyelv támogatása.
Mar 1994 FoxPro 2.6 Jobb dBase kompatibilitás(több mint 50 parancs továbbfejlesztése). Katalógus kezelés, még több Varázsló, valódi NULL támogatás
Aug 1994 FoxPro 2.6a Fontos hibajavító kiadás, ami az "ESL" file -ok méretét 3 -ról 2.1 MB -re csökkenti.
1995 - Dave Fulton nyugdíjba megy a Microsoft-tól
Sep 1998 Patch 2.6a A microsoft megjeleníti a "nullával való osztás" javítást FPW 2.6a -hoz
Jul 1999 FoxPro 2.x A Microsoft megszünteti a FoxPro 2.x programcsalád támogatását
(*)Rushmore Optimalizálás: indexek használata a gyorsabb adatelérés érdekében.

Felhasználói felület

FoxPro:

Formok
A formok segítségével kommunikálhatunk a felhasználóval. Egyik legjellemzõbb használatuk az adatbázisok tartalmának megjelenítése illetve módosítása, de akár rajzolhatunk is egy formra, bár grafikai alkalmazások fejlesztésére a sebessége miatt nem ajánlott.
Formokat megszerkeszthetünk a Form Designer segítségével interaktív módon, vagy programból a CREATE FORM és MODIFY FORM parancsokkal is.
A formokon vezérlõelemeket (control) helyezhetünk el. Ezek egy része az ablakozó rendszerek fejlesztését támogató vizuális környezetekben megszokott elemek, azonban sok kifejezetten az adatbázisok manipulálásával kapcsolatos. A vezérlõelemeknek nevet adhatunk, amikkel hivatkozhatunk rájuk. Egy form metódusában elõtag nélkül hivatkozhatunk a rajta levõ controlokra, egy control az õt tartalmazó formra a PARENT kucsszóval hivatkozhat.
A vezérlõelemek tulajdonságait futás közben változtathatjuk, például mozgathatjuk, elrejthetjük õket.
A Form Designer segítségével új property-t és metódust is adhatunk a formhoz.
A vezérlõelemek osztályaiból újabb osztályokat származtathatunk, új tagokkal és funkciókkal bõvítve azokat. Az így kapott új vezérlõelemeket is elhelyezhetjük a formokon.
A ControlCount és Controls property-k segítségével felsorolhatjuk a formon elhelyezett kontrolokat.
A builderek segítségével megadhatjuk, hogy egy adott vezérlõelem milyen adatokon manipuláljon. A formnak van egy adatkörnyezete (data environment), ami azokat az adattáblákat tartalmazza, amit az adott form kontroljai használni kívánnak. Ezt a Data Environment Designerrel szerkeszthetjük. A builderekkel megadhatjuk, hogy egy vezérlõelem melyik adattábla adatait jelenítse meg (például táblázat, vagy legördülõ lista). Bizonyos vezérlõelemek, amelyek input fogadására is képesek, megváltoztathatják az adattábla tartalmát is.
Egy formot a DO FORM név WITH paraméterlista paranccsal jeleníthetünk meg. A paraméterek az INIT metódusnak adódnak át. A formot a Release metódusával zárhatunk be.
A Windows események hatására meghívódnak a formok és a rajta levõ vezérlõelemek eseménykezelõ metódusai (például aktiválás, egér kattintás). A Form Designerrel megírhatjuk ezen metódusok törzseit, ami tulajdonképpen a kód nagy részét adja. Például gombok lenyomásának hatására újabb formokat jeleníthetünk meg, kiszámíthatunk valamit, elvégezhetünk adatbázis-kezelõ mûveleteket, nyomtatóra küldhetünk információt, stb.

Környezeti paraméterek használata

Általánosságban elmondható, hogy az egyes parancsok és utasítások hatása nagyban függ a környezeti paraméterek beállításaitól. Tehát a környezeti paraméterek úgy funkcionálnak, mint a globális változók, vagy a fordítási direktívák. Rajtuk keresztül tud kommunikálni a programozó az interpreterrel, illetve ugyanazon program más környezeti paraméter-beállításokkal más eredményt képes produkálni, következésképpen nagy hasznot jelenthetnek a kódújrafelhasználásban.
A környezeti paraméterek beállítására szolgáló parancsok közönséges utasítások, de könnyedén felismerhetõek, mert mindegyikük a SET kulcsszóval kezdõdik.
A környezeti paramétereknek sokféle csoportosítása lehetséges, válasszuk most a legkézenfekvõbbet. Ez alapján kétféle környezeti paraméter létezik:

Kétállapotú környezeti paraméterek:

Ilyenkor, mint egy kapcsolót állíthatjuk a paramétert, eldöntve ezzel, hogy kívánjuk-e használni az általa nyújtott funkciót, vagy sem.
Ilyenek például (a példákban mindig a kapcsoló alapértelmezett beállítása van nagybetûkkel írva):

SET CENTURY on|OFF a dátum típusú mezõk kiírásakor megjelenítõdjön-e az évezredet és évszázadot jelölõ karakter
SET ECHO on|OFF az interpreter kiírja-e a program végrehajtása során a már végrehajtott utasításokat (ez egy elég fontos paraméter, ha belegondolunk, hogy ezen korai rendszernél a debug-olásnak semmilyen más eszköze nem volt)
SET ESCAPE ON|OFF a program futásából ki lehet-e lépni az ESC billentyûvel
SET DEVICE TO SCREEN|print a képernyõ vagy a nyomtató legyen-e az alapértelmezett kimenet
SET SAFETY ON|off bizonyos adatbázismûveleteket nem, vagy csak jóváhagyással engedélyez alapértelmezés szerint az interpreter (ilyen pl.: egy teljes tábla törlése avagy felülírása) - természetesen ezen környezeti paraméter kikapcsolása igen veszélyes, mégis jó példa arra, mekkora volt a programozó szabadsága
További kétállapotú környezeti paraméterbeállításra szolgálnak a következõ eljárások:
SET BELL, SET CONFIRM, SET CONSOLE, SET CURSOR, SET DELIMITERS, SET EXACT, SET EXCLUDE, SET FIXED, SET INTENSITY, SET PRINTER, SET SCOREBOARD, SET SOFTSEEK, SET UNIQUE.
Paraméteres Környezeti paraméterek:
Az ilyen környezeti paraméterek nem kétállapotúak, hanem valamely, állapotokkal nem jellemezhetõ információ megadására szolgálnak. Általánosságban igaz az, hogy amennyiben ezeket a környezeti paramétereket paraméter nélkül hívjuk meg, akkor törlõdik az utolsó beállításuk (pl.: Az üres SET PROCEDURE TO bezárja a nyitott eljárásfájlt).
Ilyenek például:
SET DATE ANSI|BRITISH|AMERICAN... itt lehet beállítani, hogy a dátum típusú adatokban az év, hó és nap jelzés milyen sorrendben kövesse egymást
(ANSI:ÉÉ/HH/NN, BRITISH:NN/HH/ÉÉ,...)
SET PATH TO < útvonal > mi legyen az alapértelmezett útvonal, ahonnan az interpreter a fájlokat olvassa
SET MARGIN TO < num.kif. > nyomtatáskor a baloldali margó szélessége karakterekben megadva
SET DECIMALS TO < num.kif. > kiíráskor a numerikus adatok minimum hány tizedesjegy pontossággal jelenjenek meg
SET PROCEDURE TO < file név > a fõprogramban használt eljárásfájl megadása
További paraméteres környezeti paraméterbeállításra szolgálnak a következõ eljárások:
SET ALTERNATE, SET COLOR, SET DATE, SET DELIMITERS, SET EPOCH, SET FILTER, SET FORMAT, SET FUNCTION, SET INDEX, SET KEY, SET ORDER, SET PRINTER, SET RELATION, SET TYPEHEAD

Környezet

dBase:

A dBase III PLUS-nak vannak már úgyneveztett környezeti paraméterei, melyek különböző használati, működési módokat tesznek lehetővé. Így lehetőség van a feladathoz, a munkastílushoz legjobban illeszkedő környezet kialakítására. Ezeket a beállításokat a CONFIG.DB file-ban tárolhajuk el, ami automatikusan betöltődik a dBase minden egyes indulásakor.
A dBase III Plus adatbázis-kezelőt többféleképpen lehet használni:

Clipper:

A Clipper már rendelkezik elõfordítóval, mely a fordítóprogram számára tartalmaz kiegészítéseket. Ezek lehetnek a következõk:
A fordítóprogram:
A szerkesztõprogram:
Az RTLink szerkesztõprogram a nagy programoknál dinamikus overlay technika alkalmazását teszi lehetõvé. Újdonságai:
Forráskód nyomkövetõ (debugger):

FoxPro:

A környezet (IDE) sok eszközt nyújt a hatékonyság és egyszerûség érdekében.
A ProjectManager segítségével átláthatjuk a projektünk egyes komponenseit, újakat adhatunk hozzá, módosíthatjuk azokat.
Az Application segítségével legenerálhatjuk egy alkalmazás keretét,ami egy jó kiindulás lehet új projekt esetén.
A programfejlesztést úgynevezett designer-ek és builder-ek segítik, melyekkel az egyes komponenseket gyorsan és könnyen megtervezhetjük:
A program futása során látható felhasználói felületet a formok határozzák meg.
A builder-ek segítségével a formokon megjelenõ elemeket, és vezérlőiket tervezhetjük meg.