Microsoft FoxPro 2.6 - digiTANTO.it

8
M A .--------------------------------------- Microsoft FoxPro 2.6 di Raffaello De Masi 1"':'1 ersonalmente ritengo Naomi ~ Campbell la ragazza più bella del mondo, ma democraticamente riesco ad ammettere che qualche orbo non possa condividere la mia idea (ve la immaginate tutta l'umanità maschile innamorata della stessa donna?). E questo vale per tutte le cose della vita, ivi compreso mio fratello, che scarrozza moglie e figliolanza plurigemellare in una Uno (ironia del nome) di quasi due- centomila chilometri, a suo dire ancora <dresca)). Non parliamo poi dell'infor- matica, dove utenti scrivono ancora in WordStar e progettano edifici faraonici utilizzando ancora il loro gagliardo Ap- pie Il o qualche vetusto Z80 o 8088. Un vecchio proverbio napoletano co- sì recita: «Don Gennarì)), dicette Pulci- 344 nella, «voi col sigario e io col mozzone, cacciamo 'o stesso fumo)). Partendo quindi dal principio che «pure i fegatelli di mosca fanno sostanza)), e che non esiste categoria (tranne, forse, i caccia- tori e pescatori) più legata alle proprie convinzioni, abitudini o manie, degli utenti informatici, non abbiamo mai preteso che quanto diciamo da queste pagine possa essere accolto da chi leg- ge come vangelo, o anche solo come cortese suggerimento a cambiare. La cosa è tanto più vera nel caso dei data base e questo per una serie di mo- tivi, anche oggettivi; mentre per i wp o gli spreadsheet esiste una, potremmo dire, scuola di pensiero unica, per cui il passaggio da una parrocchia all'altra non genera soverchie preoccupazioni né radicali cambiamenti di stile di utiliz- zo, i db sono spesso del tutto dissimili nell'impostazione, nell'uso, nella poten- za, nella facilità di realizzazione di un progetto, per non dire nell'utilizzo. Chi ha avuto modo di utilizzare, anche non comparativamente, FileMaker e Omnis (anche se il paragone è improponibile come il confronto di una Punto con una Celica) non avrà certo potuto non nota- re l'estrema semplicità di gestione e d'uso del primo; e certamente a chi do- vesse utilizzare un db con un file piatto, per esempio per gestire una biblioteca, non mi sentirei, in cuor mio, di propor- gli di comprare 40 o Omnis, appunto. Fatto sta che, comunque, quando le cose si complicano e ci si trova a gesti- re grandi masse di dati relazionali, for- temente articolati e gerarchizzati, ci si scopre a vedere la trama di certe appli- cazioni. Una cosa è fare footing attorno all'isolato o giocare da terzino nella par- tita Avellino-resto del mondo, un 'altra è partecipare alla maratona di New York o al Gran Premio di Montecarlo. E così ci si ritrova, nel mondo Mac, a guardar- si attorno e a ritrovarsi con pacchetti davvero poderosi, potenti, dai polmoni e dalle spalle possenti. E FoxPro, ve lo posso assicurare, è davvero un Mohammed Ali nel suo genere. FoxPro; il pacchetto Fornito in una monumentale e pe- santissima confezione, FoxPro consta di ben otto dischetti che, decompressi, creano una cartella di ben 17 Mb (il pro- gramma nudo e crudo è ben 3 Mega, Microsoft FoxPro 2.6 Produttore e distributore: Microsoft S.p.A. Centro Direz. S. Felice palazzo A Via Rivoltana, 13 - 20090 Segrate (MI] Tel.: 02/70392 Prezzo indicativo (IVA esclusa]: Microsoft FoxPro 26 Lit 999.000 MCmicrocomputer n. 146 - dicembre 1994

Transcript of Microsoft FoxPro 2.6 - digiTANTO.it

M A.---------------------------------------Microsoft FoxPro 2.6

di Raffaello De Masi

1"':'1 ersonalmente ritengo Naomi~ Campbell la ragazza più bella del

mondo, ma democraticamenteriesco ad ammettere che qualche orbonon possa condividere la mia idea (vela immaginate tutta l'umanità maschileinnamorata della stessa donna?). Equesto vale per tutte le cose della vita,ivi compreso mio fratello, che scarrozzamoglie e figliolanza plurigemellare inuna Uno (ironia del nome) di quasi due-centomila chilometri, a suo dire ancora<dresca)). Non parliamo poi dell'infor-matica, dove utenti scrivono ancora inWordStar e progettano edifici faraoniciutilizzando ancora il loro gagliardo Ap-pie Il o qualche vetusto Z80 o 8088.

Un vecchio proverbio napoletano co-sì recita: «Don Gennarì)), dicette Pulci-

344

nella, «voi col sigario e io col mozzone,cacciamo 'o stesso fumo)). Partendoquindi dal principio che «pure i fegatellidi mosca fanno sostanza)), e che nonesiste categoria (tranne, forse, icaccia-tori e pescatori) più legata alle proprieconvinzioni, abitudini o manie, degliutenti informatici, non abbiamo maipreteso che quanto diciamo da questepagine possa essere accolto da chi leg-ge come vangelo, o anche solo comecortese suggerimento a cambiare.

La cosa è tanto più vera nel caso deidata base e questo per una serie di mo-tivi, anche oggettivi; mentre per i wp ogli spreadsheet esiste una, potremmodire, scuola di pensiero unica, per cui ilpassaggio da una parrocchia all'altranon genera soverchie preoccupazioni

né radicali cambiamenti di stile di utiliz-zo, i db sono spesso del tutto dissimilinell'impostazione, nell'uso, nella poten-za, nella facilità di realizzazione di unprogetto, per non dire nell'utilizzo. Chiha avuto modo di utilizzare, anche noncomparativamente, FileMaker e Omnis(anche se il paragone è improponibilecome il confronto di una Punto con unaCelica) non avrà certo potuto non nota-re l'estrema semplicità di gestione ed'uso del primo; e certamente a chi do-vesse utilizzare un db con un file piatto,per esempio per gestire una biblioteca,non mi sentirei, in cuor mio, di propor-gli di comprare 40 o Omnis, appunto.

Fatto sta che, comunque, quando lecose si complicano e ci si trova a gesti-re grandi masse di dati relazionali, for-temente articolati e gerarchizzati, ci siscopre a vedere la trama di certe appli-cazioni. Una cosa è fare footing attornoall'isolato o giocare da terzino nella par-tita Avellino-resto del mondo, un 'altra èpartecipare alla maratona di New Yorko al Gran Premio di Montecarlo. E cosìci si ritrova, nel mondo Mac, a guardar-si attorno e a ritrovarsi con pacchettidavvero poderosi, potenti, dai polmonie dalle spalle possenti. E FoxPro, ve loposso assicurare, è davvero unMohammed Ali nel suo genere.

FoxPro; il pacchettoFornito in una monumentale e pe-

santissima confezione, FoxPro constadi ben otto dischetti che, decompressi,creano una cartella di ben 17 Mb (il pro-gramma nudo e crudo è ben 3 Mega,

Microsoft FoxPro 2.6

Produttore e distributore:Microsoft S.p.A.Centro Direz. S. Felice palazzo AVia Rivoltana, 13 - 20090 Segrate (MI]Tel.: 02/70392Prezzo indicativo (IVA esclusa]:Microsoft FoxPro 26 Lit 999.000

MCmicrocomputer n. 146 - dicembre 1994

MACINTOSH

22:39:41 \) \)

La finestra di apertura;si notino le diverse ca-tegorie di file, apribili ocreabil; destinati a sco-pi diversi, cosi come sievidenzia nell'articolo.

plinato utente Mac, il passaggio a que-sta piattaforma il più piano e agevolepossibile traspare fin dai primi passi.Una tradizione Macintosh è quella diaprire le operazioni con un «guidedtour», che nella maggior parte dei casiè rappresentato da qualche pagina chefunge da cicerone all'apertura e allasemplice manipolazione di qualche filed'esempio. Qui non è così; la visita gui-data è un fascicolo di ben 200 pagineche è una vera e propria serie di lezionidi base.

All'apertura ci si ritrova, dopo unacuriosa presentazione di due splashscreen, in ambiente; in altri termini nonappare nulla, tranne una finestrina pic-cola piccola, che mostra uno o più co-mandi scritti in stile linguaggio di pro-grammazione La cosa più Jogica sareb-be quella di andare in «File» e scegliere

FoxPro (or Maclhtosh(c) 1989-1993 It4crosoftCorporetlon

Po",,,r To Go 9ioch'i MIOI eD 1.02b Fo1df'r pt" •.••. uion; aulJo f ••• m..Inc.

ORli Files

O Aeed Only(8J [Helusive-rporetion

•. rlle Edlt De'obese Record Program Aun Wlndow

"-1tt..ro\.of! rUltp,O

"""='-'=-------=0

ProgremFileIfld~H

Deporl

(c) 1 ~~~ee~nMenu

WlI ••.• ti ~ T<o 00 q QueryProjectU1ew

.;; rlle [(m O-atabose necorCl Proqram fiun Wlndow~~---------------------- Micro$Oft FOHPro -

Lo splashscreen diFoxPro; cliccando i ta-sti dell'About viene vi-sualizzata tutta la confi-gurazione del sistemae dell'ambiente.

di applicazione dell'interfaccia Mac,non riesce a nascondere la filosofia difondo, indiscutibilmente Pc. Sia ben in-teso, all'inizio la cosa sconcerta un po-co, ma si nota che lo sforzo per l'inte-grazione fatto dai progettisti è stato po-tente, e bastano poche ore per acquisi-re le nuove tecniche senza sforzo, eapplicarle senza disagi.

Lavorare in FoxProA costo di sembrare ripetitivi e pro-

lissi (ma chi è utente Mac capirà la ne-cessità della raccomandazione, cono-scendo bene le sue abitudini), diremoche il miglior sistema per non buttaredalla finestra tutto o per non prenderea calci pacchetto e monitor è quello dinon tentare. La preoccupazione, da par-te dei progettisti, di rendere all'indisci-

ma bisogna anche tenere conto degliadd-in); il materiale cartaceo è compo-sto da nove manuali (circa 2500 pagi-ne), scritti sulla sottile carta stile Micro-soft.

Nulla è lasciato al caso o all'espe-rienza dell'utente. I manuali, letti conordine e attenzione, guidano anchel' uti Iizzatore sprovveduto a scoprire,con ordine e progressività tutte le ca-ratteristiche e le potenzialità del packa-ge. Cosa non rara in tutta la carta stam-pata made in USA, nulla è dato perscontato e occorre solo avere la pazien-za di leggere i manuali in stile Micro-soft, per così dire. In altre parole quan-to si legge va valutato e assimilato pa-rola per parola, perché non esiste (el'utente avanzato di Excel ne avrà avutoconferma) una parola superflua, un rigoda poter saltare, una ridondanza o unaprecisazione inutile.

E c'è da precisare una cosa, prima dicominciare; giocando con le parole, po-tremmo dire che FoxPro non è fattoper utenti Macintosh. Mi spiego; chiusa Mac è abituato appena ha messole mani su un programma, a «scenderein strada» immediatamente; pressochétutte le applicazioni, infatti, permettonodi essere utilizzate, anche se grossola-namente, la prima volta, senza leggereil manuale. È quella marcia in più diMac che sovente è stata utilizzata daisuoi denigratori per accentuare la favo-la di «calcolatore per bambini», ma chedimostra, se ce ne fosse bisogno, labontà di una filosofia che, inutile negar-lo, viene da diverse parti più o menoimitata.

Con FoxPro, purtroppo, non si può!Per ricambiare la cortesia ai PCisti l'am-biente è troppo ereditato dal DOS peressere immediatamente intuitivo perun aristocratico utente Mac, mai venu-to a contatto, finora, con directory in-terminabili e astruse estensioni. Infatti,anche probabilmente per garantire latrasparenza delle applicazioni e dei do-cumenti nei due diversi ambienti, ci siritrova, come vedremo, subito in unambiente vagamente alieno, che seb-bene stemperato da numerosi tentativi

MCmicrocomputer n. 146 - dicembre 1994 345

MACINTOSH

;; File Edlt Database Record Progrem Run Window RQDE

parti, costruendo ne efficacemente gliscript di gestione.

FoxPro spinge ancora più a fondoquesto concetto, vale a dire che tutto,ma proprio tutto, gode di vita propria eha personalità e individualità separata .Esiste il file grezzo di dati, e su di que-sto si tagliano una serie di maschere diinput, di output, di report, di visualizza-zione, di progetto, di etichettario, di ri-cerca e ordinamento, addirittura discreen (vale a dire di formato di scher-mo). La filosofia è quella di avere, allabase, una massa grezza di dati, su cuipoi applicare e adattare maschere eschemi diversi; queste maschere sonoveri e propri filtri, destinati a nasconde-re o a visualizzare dati un poco come legrate di cartoncino utilizzate dalle dami-ne e cortigiane per decifrare messaggisegreti in uno scritto apparentementebanale.

Potrebbe sorgere immediata la do-manda: «Vale la pena adottare questaimpostazione?» La risposta è senz'altrosì, a patto di impadronirsi presto e be-ne del linguaggio di scripting, in mododa gestire automaticamente abbina-menti di fogli e mappe diverse. Altri-menti, pensare di guidare il data baseda chiamate da menu (ancorché possi-bile) è pura follia. D'altro canto, una vol-ta acquisita la necessaria padronanzadel linguaggio, ci si ritrova in mano unmezzo estremamente articolato ed effi-ciente, veloce e piacevole, facile dausare proprio perché l'applicazione èfatta di tante parti concorrenti. Unoscreen, un foglio di report, una tavola diricerca, grandi non più di qualche k, sidebuggano facilmente, si buttano via,

00 (!llllt

Address5111 P2Jrlrway

r\4ewFa1

I Do Query I~~I •••SQl ) io't.'k>n

~IBrowse .1 t ~r;.

.•.••c:=::::J r=.;"o <:PtlQr)'; ~tefe

Il

l\lllo "", •••tQJ thAve

ll~;""T,'

Ex _

Contect.le'" W. Qb.rtsoo

DG,,,,,,By ...,O •••.••.••

RQBE Select Flelds5electedOJtput

~ t OJstomer .cno {}-------------• ~

OJstomer.phone ~OJstomer.city

OJstomer .•tate ~~ OJstomer.ytdpurch WI~I ",_••NA I OJstomer.cootact

OJatomer .company

!hO ....

Li,.

No,

state

,&.1 ytdpurch

ROBE - 9Uhap.J

: ~tpUt Retds v o Fields ...

-"-~--------- ~Order By...

OJstomer.~

OJstomer .eddress

(ustomer

JeffW.

"'""-._n.•....... ,o,rry1

.... '"Tom Tat'.d,,,"" ...len Sl'oerBert Cfa Rppend Record

Srenda CartwTilJ'ltBl!Jrbarll H.lrlerti'l

D.Jane ~rJhallynnWMiamelènce Hl!I)'den

NancyWright[)ctWGuyton

GU"-Garret~

Record: 7/500

SelectionCriteria:_ .•...OJstomer .CClfTIF*lyu

ht Computer.

Customer

a.o'4021182321208212640A8872;&.8618,.1,6459,l,6188AS1S1.&.396..&.3662.••1046"'7249.&.3835A3061A0169.••8902..&.2418"0687AS039.•••• 09

<>3) un file tabella :u-~v~·'r(.",e..•.idenzi oto. 4thtorr.-!r ••t.at'l'!

OJstomer

•• File Edlt Databese Record

'I:J~~~~Qoo

14021 1st Ccwnputer.18232 1st ceto!!ReòJCtions12062 1st SoftW1Ire~teml Ltd.12840 1.t 9Jr~y.&.8872 A Beck Pert8f'rli"le;

,&,8818 A. Aru Computer..&.6459 A. BIoon1ington Biz"6168 PZ.hcAS181 NJb)'rl'l8n:: YeIonex.&.3964 ..a.crea rree SoMions.&.3862 ..Idd ..••societes.••10.6 ..&dd hc"'7249 .Adder hcorporated"'3835 Nh. Software"3061 "I(M,ntage Computer &:hooI'&'0169 ~r1e1 hc:.A8902 .Alex Ccu'lty ConmJrity CorpA2418 ~x S)lstemt"CleS7 M'terlcan Computer Compeny.••8039 Nnerlcan Forl.mA9409 A'nerican mowtionsQ ~'I

si evidenrio nelt 'orti colo.

Exemi'le end/or edt ecthe teble

Un file tabella nel for-mato "browse", con ilrelativo menu eviden-ziato; nella figura qui didestra, la finestra di"query" con una fasedi definizione delle mo-dalità di campo.

«Open»; vero, ma qui le cose funziona-no diversamente.

Permettetemi una precisazione, ne-cessaria a chi è (male) abituato all'am-biente Mac; e immaginiamo di aprireun file di FileMaker Pro, tanto per parla-re di qualcosa nota a tutti e a cui tuttipossono fare riferimento. Avremo subi-to a disposizione la scheda di layout, esarà immediatamente possibile passaread altri formati semplicemente selezio-nandone uno dal menu a discesa soprail rolodex di sinistra; nessun problemaneppure per la stampa di un report oper la creazione di un etichettario, sonotutti lì, a portata di mano. In altri terminivogliamo dire che il file contiene sia idati che i formati.

4D va un poco più avanti; i dati sonoimmagazzinati in un file separato da unaltro, che contiene tutti i formati e leprocedure-macro. L'applicazione è cer-tamente più snella e meglio organizza-ta; l'importante è legare bene le due

Perché FoxProLa risposta è brevissima; perché usa la

tecnologia RushMore. Si tratta di una tecni-ca che permette di accedere in manieraestremamente efficiente a gruppi di re-cord, neppure particolarmente ordinati e in-dicizzati. Una curiosità, il nome fu scelto daun componente del progetto dopo aver vi-sto il film ((North by NorthWest» di Hitch-cock.

Con questa tecnologia, alcune operazioniriguardanti gli ordinamenti e le ricerche sutabelle riescono a ((viaggiare» centinaia eanche migliaia di volte più veloci dei nor-mali standard operativi. Con questa tecno-logia FoxPro permette ai personal di ma-neggiare file giganteschi, contenenti anchemilioni di record, a una velocità comparabi-le a quella dei supermini o dei mainframe.

RushMore usa gli indici standard B-treetal quali e non richiede alcuna modifica diessi o dei file. Può essere quindi usato con

è cosi veloce!indici del tipo [.IDX) (delle prime versioniFox), compattati (ancora (.IOX}), e composti[.CçXJ.

E interessante notare che RushMorenon fa dipendere la sua velocità dal tipo diindice; il fatto che indici compattati sianopiù veloci, sotto RM, di quelli estesi dipen-de solo dalla loro minore grandezza, cosache richiede, ovviamente, più limitati ac-cessi alla memoria di massa. Sebbene siacomunque una precisazione inutile, RMfunziona allo stesso modo su ambedue i ti-pi. Non è certo qui il luogo e il momento diparlare più ampiamente di RushMore (pro-babilmente ci sarebbe qualcuno che riusci-rebbe ad essere più chiaro di me) tanto pernon lasciare a bocca asciutta il lettore dire-mo, molto limitativamente, che RM usaclausole del tipo FOR per spezzettare il filein sottotabelle. E la spiegazione finisce qui;semmai ne riparleremo qualche altra volta.

346 MCmicrocomputer n. 146 - dicembre 1994

MACINTOSH

ti: file Edit Detabese Record Progl'llm Run Window Object Sereen

Untitled.\tH

•Una fase di definizionedi uno screen e in par-ticolare quella di unospinner.

Uafloble Oeflnition

chiamare la modalità d'uso che gli sivuole applicare; ma è roba da niente difronte al vantaggio di poter scegliere etagliare di persona la tecnica d'uso deldb; in poche parole è come avere a di-sposizione un unico motore a cui appli-care carrozzeria, gommatura, cambiodiversi a seconda dell'uso che dobbia-mo fame.

FoxPro parte dal principio, adottatoanche nei più nuovi linguaggi di pro-grammazione, come Future Basic, PG-Pro, ProGraph o CPX che un'applicazio-ne non è una struttura monolitica, ma èrappresentata, almeno durante la suafase di costruzione, da un «progetto»; ipezzi relativi (data base, report, masche-re di input, ecc.) sono costruiti singolar-mente e solo successivamente assem-blati, secondo i più recenti dettami del-la programmazione 00. La disponibilitàdi lavoro su tool separati permette dicostruire anche applicazioni self-tailo-red per diverse classi d'utenza, senza

CE) l ConceI )

II

NOlI v.Iue ...

~1- te Sto ••... )

1:.1Redlo ButtOR

'" file Edlt Datebese Retord Program Hun Window ObJect Report

nhap-tfrHIO Il 12 15 '4 l' 16 17

RI!lcord: 1/500

o

È arrivato il momento di inserire i da-ti; possiamo battere a mano i dati o im-portarli da un file esterno. Sempre perrimanere nel campo delle top mode I,una telefonata alla nostra amica PatCleveland ci fa avere, portato diretta-mente da lei, un file che importiamo di-rettamente nella nostra lista. Siamo co-sì in possesso di qualche centinaio diindirizzi e numeri telefonici (non telefo-natemi, per carità, sono incorruttibile)ancora sotto forma di lista, né più némeno di come lo si vedrebbe in un fo-glio Excel. Possiamo cominciare a lavo-rare sul serio.

AI lavoro con i formatiSviluppato tutto il viaggio del Guided

tour, si ha già bene in mente la struttu-ra d'impostazione del pacchetto. All'ini-zio, come abbiamo già diverse voltedetto ci si ritrova un po' in difficoltà conla tecnica di caricare un file e poi di

Un file di report, anchequi con le diverse fine-stre di definizione.

se necessario, senza rimpianti, si riuni-scono poi insieme in una grande fami-glia, concorrenti tutti ad uno scopo.Non a caso, infatti, la costruzione diun'applicazione efficiente si basa, inFoxPro, sulla corretta realizzazione diun «Project», fatto appunto di tanti pez-~i tutti çQnçorrenti a uno scopo.

E così, quando chiamiamo «Open»,FP pur proponendo in default l'aperturadi una tabella (che poi altro non è cheun file di dati, grossolanamente orga-nizzato, appunto, in una tabella) offre lapossibilità di aprire ben 11 tipi diversi difile. Sebbene, ovviamente la chiamataFILES$ di Toolbox evidenzi solo i fileapribili in base al tipo desiderato, il tipodi documento (e qui si sente la manodeIl'MS-DOS) si riconoscono dal suffis-so, quasi sempre, ma non sempre,mnemonico. Avremo così DBF per letabelle, PRG per i programmi, FRX per ireport, SCX per gli screen, MNX per imenu e così via; ma non occorre spre-mere molto la memoria; ci pensa il pro-gramma a «filtrare» i tipi desiderati.

Bene, cominciamo; dobbiamo co-struire il nostro bel database, ad esem-pio una rubrica-indirizzario delle top mo-del che abitualmente frequentano casanostra. La cosa migliore è creare im-mediatamente una tabella, forma unpoco rudimentale e grezza, certo, mapure Dio ci mise sei giorni a fare tutto.La tabella, inoltre, è molto pratica per-ché permette di cambiare, al tocco, ladisposizione e l'ordine di accesso aicampi, ed ha il pregio di essere velocis-sima nelle manipolazioni.

Che fare, allora. Definiamo immedia-tamente i campi, in una finestrina cheha molto in comune (e non poteva es-sere che così) con quella di altri pac-chetti. I campi vengono definiti per no-me, tipo, lunghezza, e vengono orga-nizzati gerarchicamente: i tipo possibilisono otto, tra cui quelli ben noti, comenumerico e alfanumerico, data e pictu-re, ma anche nuovi, come me ma (cam-pi di grandissima estensione, capaci dicontenere documenti complessi pro-dotti anche con altri programmi), o ge-nerai (capaci di accettare dati in formabinaria, come disegni, suono o addirit-tura risorse).

Una volta eseguito il tutto vengonoproposti due semplici formati lista e ta-bella; i formati sono i più semplici pos-sibile (in uno i campi sono l'uno accan-to all'altro, nell'altro uno sull'altro) manon c'è da spaventarsi; si tratta di unatimida proposta del pacchetto, aventecomunque scarsa importanza. Già qui,comunque, è possibile fare delle modi-fiche, come spostamento e ridimensio-namento dei campi; ma è inutile per-derci più di un poco di tempo.

MCmicrocomputer n. 146 - dicembre 1994 347

MACINTOSH

ti File Edit Detabase Record Program Run Wlndow Browse

7) uno delle fasi d\ ce-ptla2'\one; si non, in alto, la finestradel de:bugger

La creazione di un progettoe il suo sviluppo

Abbiamo già detto che la vera carat-teristica di FoxPro è quella di lavoraresu progetti. In effetti un progetto ha

apre una finestra che possiede, di latoa sinistra, una serie di comandi chepermettono di definire le parti della ma-schera stessa: campi, aree grafiche edi editing, bottoni di vario tipo, campi dispinner (un edit field associato a duecursori opposti a freccia che permetto-no di graduare, secondo un intervallocustomizzabile, i valori nel campo stes-so), capi di tipo pop-up e liste di scelta.AI momento della definizione ognuna diqueste parti (e tutte le altre che non ab-biamo nominato) sono associabili conuna variabile, o, nel caso di bottoni, conuno script. In questo caso l'ambientepermette di associare automaticamen-te agli oggetti clausole, come WHEN,VALlD, IF e così via. Radio button echeck box sono definibili in numero illi-mitato, e associabili a script anche su-bordinandone la selezione ad altri bot-toni (tipicamente un push_button).

Se lo screen è costruito senza aprireuna tabella dati, viene lasciata ampia li-bertà di realizzazione; se invece, allespalle è già aperta una Table_DBF (ta-ble_data base file) il programma imma-gina che si stia lavoranaò già su campidefiniti e coordina l'uno e l'altro am-biente rendendo già, ad esempio, di-sponibili i campi (addirittura è possibileinserire una parte della finestra browsenello schermo). La cosa interessante èche sebbene si lavori sempre in grafi-ca, viene immediatamente creato, pas-so passo, il codice sorgente in linguag-gio, e diventa spesso utile e divertenteesplorarlo per «vedere come è fatto».

La seconda tappa importante è quel-la dei menu. Il lavoro svolto è tantoqualitativamente valido da essere para-gonabile, per facilità, all'uso dello stes-so tool di PG-Pro. In pratica disponiamodi una finestrina in cui si definiscono levoci di barra e discendenti; ogni vocepoi può essere «agganciata» a un co-mando, a un submenu, a una procedu-ra, a una macro. Il pannello dispone diuna opzione, «Try it», che permette disimulare, a schermo, il lavoro man ma-no realizzato e di testarne l'efficienza.

A questo punto appare logico mette-re insieme screen e menu per coordi-narli e galvanizzarne l'efficienza. In pra-tica abbiamo fatto già un gran passonella creazione di un'applicazione com-pleta; a questa operazione e, soprattut-to all'ottimizzazione di questa compe-netrazione è dedicato un ampio capito-lo della Developer's Guide.

€l €l (Il 1M'-,...51" PIIrt-.y...•,

r 86thoed",tationtOriYe

n,e ""","SC'••••• $t

te Fe

'"'$t""Bel:H••

""'."""'lo"~-tor seHo.. "

I~

I~t~=.......

Una delle fasi di compi-lazione; si noti, in alto,la finestra del debug-ger.

length: 149

Cont.ct.le" w. Q.eleruon

AeIdt: 12

Setup

Custome,

ij.:'·· l OQ»tomerChoIlW1y .• J

(set Order )

( AenlOve )

[

••••x Dooc,lptlon-- Ihdex Expreuion: ono

{} hdex mer:

1G:l

22:54:15 O O (Il

griglia, una chiave di lettura o comemeglio credete; fatto sta che senzauno screen i dati sono inaccessibili (ameno di non voler usare il grezzo for-mato tabella).

A voler essere pignoli, uno screen èuna vera e propria tabella; esso è con-servato in un file con suffisso [.sCX], ela tabella ha un campo associato di me-mo con un'estensione [.SCT] (ecco lagrandine, pochi chicchi, ma buoni). Macari macintoshisti, non storcete il naso,ci si fa l'abitudine a tutto; pensate aquei pove retti che combattono con leestensioni tutto il giorno. Il file SCXcontiene informazioni relative alla defi-nizione della finestra, alla sua posizionee dimensione, alle caratteristiche deicampi contenuti in essa e degli even-tuali bottoni, ancora informazionisull'ambiente di utilizzo e sulle relazioniintercorrenti tra lo schermo e il proget-to globale.

Dal menu «File» si sceglie «New» esi chiede di creare uno schermo; si

5C 35C 20C 'OC 15C 2C 5

C 12

.. :FoxPro: ICompile I( Concei )

~lT.Q liMe )

r.:;1iii;:;:-.,::C:C:-:-:-':, •••:l [ MIre >-> )

rror Lac.tion -~.E"'1Ie o...,.,""l 'de I

Record: 1/500

=:addreMdtynate:.,.

rStructure

II-ty ..1

~

setectlon

:

Aeld.... I Olk.~F1elj$liI:t

ì fitter o-t •. 1

fGedeone 496:. :FoxPro:Tutorial.OJstomer.d:lf

ht~er.

Ex"",,"

0.0'.021182321208212840A8672AS61SAS459,6,6188,6,5181,A,3964,6,3882""046"'7249A3B3S

A3061A0169A8902A2418"'0687AB039

""'09':>1

OAtorner

[

location o, CoMpiled Fie.

_~ _1 _

Debu Cu\tonwr

\} Cont.ctJeffW. OJIbertson

oerm....."..,lènce 9vren

'"Fbbert Hepworth

Complle

Record: 1/500

" File Edlt Datebase Record Progrern Run Wlndow

di. uno spi. nner.

CJstomer

Una fase di setup dellastruttura di un proget-to.

per questo nascondere dietro il giocodelle password e dei diritti d'accesso lamaggiore o minore «maneggiabilità»del file stesso; ovviamente anche conun occhio alla snellezza dell'applicazio-ne stessa (ogni formato non occupa piùdi qualche k).

Non è certo possibile, in un articolodi qualche pagina, riassumere tutte lepossibilità d'intervento o le diverse fasidi realizzazione degli specifici formati;vi possiamo assicurare che le possibi-lità sono tante e tali che, anche doposettimane di autoistruzione si ritroveràsempre qualche perla nascosta utilissi-ma (e questo senza ancora scomodareil linguaggio).

In ogni caso i formati fondamentalisono tre o quattro in tutto; sarà poil'esperienza e la curiosità a farci scopri-re gli altri.

Iniziamo dagli screen; essi sono la fi-nestra, è il caso di dirlo, che ci permet-te di dare uno sguardo ai nostri dati.Guardatelo come una maschera, una

348 MCmicrocomputer n. 146 - dicembre 1994

li file (dlt Dllltlllbase Recol'"d Program Run Window ObJed Report (D1IfPIIIQe Preulew

I OC )U021ut cOIIlp1u:n I _. )J.tf w. eulbuuoo5111 PU'lW.,- ~ I "'...•..• IBrCKllllln..•. I-U::::::J@112)21.t Dl.U ll.edu::t...iCllLliDen.iI Jchnlon I Z-" I .liO ltiven'i •• FAr- su_t•._orl_ I _ .•.. I•...120121st softwAreS}'1t.- Ltd--...ne:. 'ivc.a''')) c'upal 121._.....12*'0lIt. survtl1Robert. Mvr0rth133P.alU nth""u.u...•••nA.tldr •• ~i.R.AJu 'rluni'001 Rowedad

1<>1 I I I§I

Qatomer ~rd:1Z1S00 .- 'hO .•..

trà essere nidificata in questa cartellache sarà riconosciuta, al momento del-la compilazione, come una strutturaunica, e quindi assemblata immediata-mente. Il nome Home, sebbene vinco-lante al momento della realizzazionedel progetto, non lo sarà più dopo lacompilazione, e l'applicazione distribui-ta potrà essere sistemata dove meglioaggraderà all'utente finale.

molteplici vantaggi concreti, capaci difar risparmiare tempo e sudore al pro-getti sta dell'applicazione. Quando unprogetto viene realizzato e assemblatoviene tenuta una completa «mappa» ditutte le pieces del programma; FoxProautomaticamente ricorda e individuatutti i componenti del progetto stessomenu, fogli di report, schemi di ricerca,etichette, librerie, ecc.

Da un progetto si può accedere atutta la componentistica utilizzandoprocedure globali, organizzare la com-ponentistica in maniera razionale (adesempio creando cartelle ognuna dedi-cata a tipi diversi di categorie; poiché ilprogetto ricorderà la locazione di ognicomponente, non ci sono problemi dipath). Poiché un progetto, inoltre, per-mette di avere componenti dislocati incartelle diverse, è consentito accedereanche a componentistica «lontana»,magari dedicata ad altri scopi, e scrittae preassemblata in un linguaggio diver-so. Giusto per fare un esempio, è pos-sibile creare un comando per accedereal pannello di controllo, cambiarne leregolazioni o le scelte, e tornare all'ap-plicazione principale; poiché tutto que-sto avviene senza attivazione di fine-stre, l'operazione è pressoché istanta-nea. Un progetto conserva il suo codi-ce oggetto incapsulato nel suo «memofield»; questo permette di evitare, tral'altro la frammentazione dello spaziosul disco e il conseguente ritardo ope-rativo.

Riguardo all'operatività del program-ma oggetto, occorre tenere a menteche FoxPro tiene adeguata traccia ditutte le variazioni apportate al codicesorgente. In altri termini, se si esegueuna sola, anche piccola, variazione adun solo formato, tutto il progetto vienericompilato e ne viene quindi garantital'assoluta funzionalità. Infine, quando sigenera un'applicazione da un progetto,tutta la componentistica è assemblatain un'unica applicazione ([.APPI. o fileeseguibile), rendendo, manco a dirlo, ladistribuzione senz'altro più pratica.

" File Edit Datobese Record

del debugger

Giusto per semplificare le cose, sipossono creare progetti multipli, e sta-bilire fin dall'inizio che un progetto saràportabile; in questo caso il pacchettooffre, come utility aggiuntiva, la possi-bilità di creare una cartella speciale,«Home»; tutta la componentistica po-

Object Report

MACINTOSH

La costruzione di un fa-glio di etichette, in det-taglio e in preview.

Microsoft GraphAnche in FoxPro Microsoft ha inserito, graziosamente, Microsoft Graph, un piccolo add-

in destinato a produrre grafica commerciale. Si tratta di un pacchetto credo già abbastanzanoto per doverne parlare qui; come è noto esso funziona solo dall'interno di un'applicazio-ne Microsoft (Word, Excel o, appunto, Fox), ed è basato su un datasheet (una specie difoglio elettronico contenente i dati, permette di costruire grafici secondo i formati classicigià visti in Excel). Buona la risoluzione e le opzioni grafiche (ivi compreso il complessoorientamento in 3D) ma si tratta, come ovvio, di un add-in che può essere gradito ma nontoglie o aggiunge nulla alla valutazione generale del package.

MCmicrocomputer n. 146 - dicembre 1994

Altre utility di FoxProFoxPro possiede un potente debug-

ger sia a livello di compilazione che diruntime. Ovviamente, in questo secon-do caso, non è possibile garantire l'eli-minazione di tutti gli errori attraverso ildebugger, ma finestre dedicate, comeDEBUG e TRACE possono aiutare mol-tissimo; come pure sono molto utili imonitor di ambiente, di memoria e di fi-le (ad esempio è possibile verificare

349

MACINTOSH

passo passo la gestione di file anche inun network).

SOL Select è un potente strumento,utilizzabile sia in ambiente di sviluppoche di debug. Attraverso di esso è pos-sibile «agganciare» pezzi del program-ma (liste, bottoni, variabili) e controllar-ne le funzioni a richiesta. Ancora conReportWriter molte funzioni specifichedi questo ambiente sono già bell'epronte. Esiste la possibilità di creare egestire array mono e bidimensionali,pubbliche e private, recuperare da essevalori e dati da passare a funzioni defi-nite dall'utente, e còsì via. Per utentiben avanzati, FP offre una serie di co-mandi e funzioni per operazioni di I/O abasso livello (si può accedere a file diqualunque tipo e lavorare su di essi,

tranne, stranamente file FoxPro).L'OLE (Object Linking and Embedding),specifico dei sistemi operativi Apple eWindows, ha qui facility di accessomolto potenti e facili da gestire; è inol-tre possibile costruire help personaliz-zati, linkabili nell'oggetto. E ancora co-struire documentazioni complete per leapplicazioni attraverso l'applicazioneFoxDoc.

FoxApp è l'applicazione che permet-te di costruire, perdonate il gioco di pa-role, applicazioni. FoxApp è abbastanzaintelligente, visto che controlla la com-ponentistica del progetto cercandonele parti principali perché possa funzio-nare (un'applicazione minima richiedeuna tabella, uno schermo, una palette ealmeno un menu).

Il linguaggio di FoxPro

Un manuale linguaggio di mille pagi-ne, del peso di un chilo e mezzo e delledimensioni di un elenco telefonico for-mato B4 la dicono lunga sulla potenzadell'idioma di FP. Oltre settecento co-mandi fanno paura, ma proprio paura.Fortunatamente, almeno all'inizio, nonè necessario imparare tutto; la maggiorparte di un'applicazione, certo non mol-to complessa, sarà costruita diretta-mente dalle window, e se proprio è ne-cessario manipolare qualche procedurao qualche bottone con uno straccio diprogrammino, i comandi e le istruzionipiù usuali e semplici funzionano e«suonano» come quelle dei più noti lin-guaggi. Microsoft, con una scelta co-

Cosa offre la concorrenzaA livello di FoxPro ci sono solo tre altri

pacchetti, capaci di offrire le stesse presta-zioni; 4Dimension, Omnis 7 ed Helix Ex-pressoDel primo package (giunto alla versio-ne 3 International, equivalente alla 5 Italia-na), prodotto dalla ACI, abbiamo già parlatodiffusamente in un articolo qualche mesefa. Si tratta di un pacchetto per così dire«strano»; sembra essere stato creato da unbambino capriccioso e geniale, che ha alter-nato picchi elevati di intuitività e preziosismiraffinati a idiosincrasie e strane ostinazionidifficili da comprendere. Fin dalla sua com-parsa è stato oggetto di attente cure per laprotezione della copiatura; il principio di ba-se del produttore è che nulla viene dato gra-tis; anche il più piccolo di più occorre pagar-lo. E così sono fioriti una serie di pacchettiaggiuntivi tra cui un wp, uno spreadsheet eun package di grafica (cari e di prestazioniinferiori a quelli offerti dalla concorrenza), uncompilatore (non facciamoci confondere dal-

la parola, visto che non crea un'applicazionestand-alone, ma solo ottimizza certi partico-lari calcoli e routine), e varie altre cosucce.Mentre fino alla penultima versione il pac-chetto serviva anche il multiutente, la nuovaha separato i due campi e il c1ientserver vie-ne venduto a parte a suon di bigliettoni.

4D è probabilmente il database, di questaclasse, più venduto; è il più agevole da im-parare, ma soffre di una grave lentezza nelleoperazioni di ordinamento e di ricerca. È di-sponibile un runtime per creare applicazionistand-alone.

Omnis 7, giunto alla versione 3.0, è il piùaristocratico dei quattro. Prodotto e com-mercializzato dalla Blyth Software è costo-sissimo, e dispone, come FoxPro, della ana-loga versione sotto DOS. Non è protetto,possiede una buona documentazione, e di-spone di un'interfaccia molto simile a quelladi 4D, anche se più potente ed elastica. Nonè più importato da tempo in Italia e purtrop-

po la stessa casa non assiste amorevolmen-te gli sfortunati clienti (me compreso) chepossiedono un vecchio package e desidera-no upgradarlo. Forse a causa di questa sca-dente assistenza il pacchetto è piano pianosparito dai cataloghi dei grandi distributori,come Mac Connection, MacWarehouse eMacCenter. E tutto questo è un peccato, vi-sto che si tratta di un prodotto eccellente, dipoderose prestazioni, dotato di una docu-mentazione ineccepibile e ben articolata.

Helix Express (versione 2.0) è la naturaleevoluzione, durata dieci anni, di uno dei piùvecchi database per Mac. Prodotto dalla He-lix Technologies, Illinois, è un package curio-sissimo; spinge al massimo la concezionegrafica Mac, essendo dotato di una interfac-cia del tutto grafica. Un'applicazione è quichiamata ((collezione», una raccolta, appun-to di icone, che contengono formati, campi,abachi, report, liste, tutte definite attraver-so, e solo attraverso simboli e comandi gra-

yQuit V

{\

O Keybo81 ti: DOlmeD [nGbledD \Iart 8 nPlLI plo(en~I:I

•• File Edlt ~ Inuolclng Reporh 15:20:48 Q Q eD •Fonnals ... .2 O Fleld nemes ". Wlndow WRSOUT

tb~~AHT'sv v

NIMlIClS Cycle Formets .1 Menu MINUflEP o..lsnw.E•••• VREP -- --- Menu MINUOICES 'INVHOR o..OOI<P"""I<SAI.ESSTAR1\JP lisI fleld Nemes .'li Menu STRRTUP '1M" c...&.OORESS'I

FIM'"AXOOOES C-AOORfSS2m_"IY_ Cl,,,,,,,,,, flnd Rnd Replece ~1 __ "'"nt.C»,mMS 0..""'"m_O. Debugger Dptlons ~ FPAYI4:HTS <:-STAre'l'tIOUn c..COUNTR'I'

Close Top Wlndow FSlJ..ES c...FQST.&.LCCOf

Close Other Windows 'SlOCK o..CRfC<1'......,w__o..'AX

Close fili Windows formet ••• " o..mlOCfll ••• rl o..eoo<

t...CRfOlIr,(f'

""'- t...WESKeywordlDIlte codeI

<'.-'nI:t.l'-d~ ._btWjlrnodlfWd

enus •••• ,ty Il ••••••Windows .•...,.Reportsfile formats I aooe •• _ I .•...,. ...SBerth formets I aooe •• _ I .•...,.

jgI MDdIty ••••• tIpIe fof"U 17\ 17\

D80ld

DltalllDUnderllneD Ou111neDShadow

8:03:07 Q Q (Il •

.11

'00

:so

Menu Ber #1

.F••Conneel Menu ...

Rppend ItemInsert ItelllDelpti" !tpm

\lluctUIE' fUI Oft

•• File Edlt Use Deslgn FileRppend Menu IIRInsert Menu XTDelete Menu

350 MCmicrocomputer n. 146 - dicembre 1994

MACINTOSH

'" ....AIcord: 121500

• file Edlt Datablle Record Program Run Wlndow TeHI O OrJ Controll.pr H

'"I!I,\r hl'i'I~,orn

sn:r:e ••.. c~. .t__ .phonlI. eu.to-er con ae •tu.w-.r- .• tole, CuslOMr".eno;

'1IlOr1 Cus:t.--;l.I«Rf eu.t_ .• tate • ~CAM;'"TOCl..fliMG.~

Cf'lEJITE AEI'ORT .~ 4Qt1:OQtQ ba •• :'OIl""O: lulOl'"'iol osch0p4. r,-." FAOtl o.ehap!5 1ol10TIo4 !:I12 FOAl1 H(l()l..lQIIilPlE:I"OAT FON1 -Gedeone ';O:dato bo •• :'oKPJ"O:ll.llorlol :o.ch0p4. ("1(" PREVtElol

CI'tU l''IOUlgale • l

00 ''"'CA6E naYigaUi • 2IKI' -1tFIIOf()

00''"'""'''CItSf l''lOVlgaltl • 3"',.l' f(lf()

GO BOTTot1EI'IlIF

CME nau1oot.· 4100 BOTTOI1

lHOCASE~OE:T5

OJetOll'llr

Due esempi di script(program) completa-mente editabili attra-verso il text editor in-corporato.

raggiosa, ha abolito e/o cambiato radi-calmente molti comandi presenti nelvecchio FoxBASE+ for Mac, rendendolipiù logici e maneggiabili, ma onesta-mente la potenza e la complessità dellinguaggio è tale da fornire i migliori ri-sultati solo in mano a gente dal polsofermo. Il manuale, comunque, è inec-cepibile; ogni comando o funzione è il-lustrato nella sua sintassi e in unaesemplificazione ben realizzata e colle-gata con riferimenti ad altri comandi.Gli esempi sono sia realizzati come li-nee singole di programma, sia, in molticasi, come vere e proprie pieces di sor-gente, utilizzabili tal quali, o con minimiaggiusta menti, in numerose occasioniin programmi custom.

Accanto alle istruzioni e ai comandi, il

fici. La cosa all'inizio è davvero sconcertan-te (anche gli stessi script sono fatti da ico-ne, incatenate l'una all'altra da legami con-seguenziali o logici somiglianti ad autostra-de piastrellate), ma ci si fa subito la manoalla intrinseca comodità di questo ambienteabbastanza veloce, molto ben strutturato, edotato di utility curiose e gradevoli (adesempio esiste un comando, Why?, che in-dica perché l'ultima operazione corrente siastata rifiutata, o abbia generato un errore).

Sebbene non distribuito in Italia, Helix Ex-press gode di un servizio di supporto inter-nazionalemolto efficiente e gentile (una miainterlocutrice si sforzava di parlare un passa-bile italiano per chiarire i termini di una ri-sposta); gli upgrade sono poco costosi (dallanascita ne ho ricevuti almeno cinque o sei)e i miglioramenti, nelle successive edizionisono sempre stati costanti e notevoli, se-gno di un'elevata cura prestata al prodotto.Helix addirittura ha una linea diretta per i

I tre ambienti a con-fronto, nell'ordine 40,Omnis 7 ed Helix Ex-press; si noti l'origina-lità e la particolaritàdell'ultimo, complicatosolo all'apparenza.

• fili Edlt Iton S,I

suggerimenti, che, se riconosciuti validi,vengono apprezzati e ricompensati con unpiccolo bonus. Non possiede, e questa èuna piccola pecca, runtime, mentre vienefornita col pacchetto una versione ridottadel c1ientserver, che funziona ali?!perfezio-ne anche se solo per due utenti. E dotato diuna collezione d'esempi molto articolata edefficace, da cui poter trarre spunti e sugge-rimenti per il lavoro giornaliero.

Tutti e tre i package offrono, a pagamen-to, con costi che vanno dal centinaio di dol-lari fino alle molte centinaia di lire, l'abbona-mento a una rivista dedicata; generalmentesi tratta di articoli molto specialistici, pocoutili per l'utente normale. Viceversa, negliUSA si trovano diversi tutorial più semplici epiacevoli dei manuali, talvolta criptici.

Tre bellissimi package, quindi, che con-tendono degnamente lo scettro a Fox; chis-sà che non sia il caso di riparlarne in unprossimo futuro.

./ lli •.•", Ocu-' 'ont \ltll~ 15:24:02 o oI rthn,( Il Il ~IH'1 I l dO,,1I

ItfIt. fui:omN_C_.1'txt[ntrlJli.l(nt ••../J"WJi~t:IMiIlitlJ

I IlllHiMIlCHt" lth,," II\!

linguaggio offre una cinquantina di fun-zioni di sistema, molto utili. Indipenden-temente comunque dall'uso di esse inFP, c'è da ricordare che è la prima voltache vediamo elencate tutte queste va-riabili con il loro numero, e l'elenco po-trebbe essere molto utile a chi pro-gramma in un linguaggio tradizionale.

ConclusioniFoxPro ha tante qualità e le abbiamo

tutte descritte; ma ci siamo tenuta lamigliore per queste conclusioni; è digran lunga il più veloce db dell'areaMac (ad esclusione di Panorama, la cuivelocità è però legata al fatto che tuttoil file è mantenuto in RAM). Databaserelazionale dell'ultima generazione, do-tato del suo equivalente in DOS (concui può scambiare file e buona partedel codice). dotato di una documenta-zione, sia software che cartacea, su-perba, è comunque destinato a un pro-fessionista, capace di tirar fuori la grin-ta da questo package così raffinato.

Molto più veloce di 4D in molte oc-casioni, può paragonarsi per prestazionia Omnis 7 (dal costo però stratosferi-col; non è facile da usare a livello avan-zato, mentre, per usi più modesti, è piùutile ricorrere a mezzi meno potenti,come appunto Panorama o FileMaker.Supporta pienamente AppleEvents e,ovviamente, il Publish-Subscribe. Ri-chiede una certa «assuefazione», spe-cialmente per chi è abituato allo sta n-dard corrente delle applicazioni Mac,ma offre il livello più avanzato oggi rag-giungibile nel campo dei data base (enon parlo solo dell'area personal). In al-tri termini è un pezzo super-raffinato,una Lamborghini o una Bugatti, per in-tenderci; per chi è abituato a rispettarei limiti di velocità, meglio comprare unaPunto o una Twingo!

MCmicrocomputer n. 146 - dicembre 1994 351