+ All Categories
Home > Documents > Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO...

Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO...

Date post: 16-Feb-2019
Category:
Upload: vantuyen
View: 212 times
Download: 0 times
Share this document with a friend
7
di Francesco Petroni Creazione e gestione dei file dati NUMERO < ---------------------- CAMPI ----------------------- > RECORD (tlpo) (car. ) (ca •....) (f) (data) (numerlCO) :RECNO () NOME COGNOME SEX DATA NASC. PROV STIPENDIO : -------- ------------ --------- ---- ---------- ---- ---_._------ l LUIGI ROSSI M 09-Jun-58 RM 1~200, 000 2 MARCO VERDI M 20-Mar-64 F'A 1.250,00121 3 LUDOVICO BIANCHI M 29-May-51 LI 2.1913,000 4 CARLOTTA GIALLI F 21-May-45 LI 1,875,000 5 MARGHERITA VIOLA F lin-Oct-54 RM 1,0913.200 6 WALTER NERI M l1-Jan-55 RM 1,100,12100 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 B GIUSEPPE ARANCIO M 04-Sep-5B LI 1,450,00121 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 111> CHIARA ROSA F 25-Mar-60 MI 1,456,000 11 ALDO AZZURRI M 15-Feb-56 MI 2,009,000 Creazione di una struttura dificare Record e, trattandosi di un corso DB II e DB 111, quali istruzioni o modalità di lavoro caratterizzano questi prodotti. Per creare la struttura di un File si utilizza il comando CREATE «nome del file». Sia il DB II che il DB III ri- spondono mostrando una tabellina per l'immissione dei dati che caratte- rizzano la struttura e cioè. carattere data (solo OB 111) numerico logico memo (solo OB 111) in caratteri in caratteri Nome del campo Tipo del campo Lunghezza del campo Numero dei decimali La lunghezza può arrivare fino a 256 per i Campi carattere (noi direm- mo alfanumerici), è fissa in 8 per i Campi Data, è fissa in l per i Campi logici, che assumono solo i due valori T (true = vero) e F (false = falso). I Campi numerici possono arrivare fino a 15 caratteri, ma la loro reale lunghezza dipende dalla precisione di calcolo permessa dal linguaggio (IO ci- fre per il DB Il, 15 per il DB [Il), men- tre la parte decimale va calcolata col metodo classico di tutti i linguaggi. In pratica per rappresentare il numero 99,999 è necessario un Campo Nume- rico lungo 6 di cui 3 decimali. Il campo Memo (vale solo per il DB 111) occupa una lunghezza fissa di lO caratteri, che in pratica costituiscono la chiave di accesso ad un altro file (ti- po *.DBT nella tipologia illustrata nel- la prima puntata) e g::stito totalmente dal DB II!. In DB II la struttura può compren- Figllra I - Rappresen- tazione Grafica di un Archivio. La struttura è il contenitore costi- lIIilO da nome. lipo e dimensioni dei campi. Il conlenuto è formalo da record. Ciascun re- cord è un insieme di informazioni il cui si- gnificato rea te dipende dalla slrul/llra nel quale sono immessi. Ad esempio il dalo "ROSA" è IIn cogno- me in quanto è inseri- lO net campo cognome. di informazioni tra loro rigidamente correlate. Il Record è il minimo ele- mento dell'archivio, anzi la quantità di informazioni contenute nell'archivio si misura in numero di Record. Come detto ogni Record è un insie- me di informazioni, ciascuna delle quali è associata ad un campo che ne determina e specifica il significato. La rappresentazione grafica più im- mediata della struttura di un File è co- stituita da una tabella rettangolare, in cui la dimensione orizzontale è fissa, in quanto comprende le specifiche del- la struttura e cioè nome dei campi, ti- po, lunghezza, eventuali controlli (ve- di tabella di fig. l). Invece la dimensione verticale di- pende dal numero di record inseriti ed è quindi generalmente variabile, in quanto permette accodamenti, cancel- lazioni, inserimenti, e riorganizzazioni. Tutte queste operazioni debbono avve- nire senza che la struttura (la parte orizzontale della tabella) vari. L'argomento della seconda puntata del corso riguarda la struttura (ovvero come si crea o si modifica una struttu- ra) e l'organizzazione in Record, e cioè come, una volta definita la strut- tura si possono inserire, ricercare, mo- La prima parte del corso, pubblicata sullo scorso numero di MC, aveva una finalità introduttiva e quindi in pratica è servita per far capire la filosofia e le mo- dalità di approccio allo strumento DE. Con la seconda parte si entra nel vivo del corso e si comincia a parlare di ar- chivi. Si vedrà come costruire un archi- vio. come lo si gestisce, come si manipo- lano i dati in esso contenuti, ecc. Propedeutica a questa parte del corso è la conoscenza di alcuni concetti fonda- mentali come il conceI/o di File, il con- ceI/o di Strul/ura, il conceI/o di Campo. Concetti fondamentali struttura di un File, Campi, Record Il file (o archivio) va inteso come un insieme logicamente composto di in- formazioni. Nel file vanno distinti gli elementi che costituiscono il conteni- tore (Struttura, Campi, tipo e lunghez- za dei Campi, Controlli dei Campi, ecc.) dal contenuto. Il contenuto è un insieme di Re- cord, e per Record si intende un insie- me, di dimensioni costanti e predeter- minate all'atto della creazione del file, Seconda parte 68 MCmicrocomputer n. 48 - gennaio 1986
Transcript
Page 1: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

di Francesco Petroni

Creazione e gestione dei file dati

NUMERO < ---------------------- CAMPI ----------------------- >RECORD (tlpo)

• (car. ) (ca •....) (f) (data) (numerlCO)

:RECNO () NOME COGNOME SEX DATA NASC. PROV STIPENDIO:-------- ------------ --------- ---- ---------- ---- ---_._------

l LUIGI ROSSI M 09-Jun-58 RM 1~200, 0002 MARCO VERDI M 20-Mar-64 F'A 1.250,001213 LUDOVICO BIANCHI M 29-May-51 LI 2.1913,0004 CARLOTTA GIALLI F 21-May-45 LI 1,875,0005 MARGHERITA VIOLA F lin-Oct-54 RM 1,0913.2006 WALTER NERI M l1-Jan-55 RM 1,100,121007 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000B GIUSEPPE ARANCIO M 04-Sep-5B LI 1,450,001219 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121

111> CHIARA ROSA F 25-Mar-60 MI 1,456,00011 ALDO AZZURRI M 15-Feb-56 MI 2,009,000

Creazione di una struttura

dificare Record e, trattandosi di uncorso DB II e DB 111, quali istruzionio modalità di lavoro caratterizzanoquesti prodotti.

Per creare la struttura di un File siutilizza il comando CREATE «nomedel file». Sia il DB II che il DB III ri-spondono mostrando una tabellinaper l'immissione dei dati che caratte-rizzano la struttura e cioè.

caratteredata (solo OB 111)numericologicomemo (solo OB 111)in caratteriin caratteri

Nome del campoTipo del campo

Lunghezza del campoNumero dei decimali

La lunghezza può arrivare fino a256 per i Campi carattere (noi direm-mo alfanumerici), è fissa in 8 per iCampi Data, è fissa in l per i Campilogici, che assumono solo i due valoriT (true = vero) e F (false = falso).

I Campi numerici possono arrivarefino a 15 caratteri, ma la loro realelunghezza dipende dalla precisione dicalcolo permessa dal linguaggio (IO ci-fre per il DB I l, 15 per il DB [Il), men-tre la parte decimale va calcolata colmetodo classico di tutti i linguaggi. Inpratica per rappresentare il numero99,999 è necessario un Campo Nume-rico lungo 6 di cui 3 decimali.

Il campo Memo (vale solo per il DB111) occupa una lunghezza fissa di lOcaratteri, che in pratica costituisconola chiave di accesso ad un altro file (ti-po *.DBT nella tipologia illustrata nel-la prima puntata) e g::stito totalmentedal DB II!.

In DB II la struttura può compren-

Figllra I - Rappresen-tazione Grafica di unArchivio. La strutturaè il contenitore costi-lIIilO da nome. lipo edimensioni dei campi.Il conlenuto è formaloda record. Ciascun re-cord è un insieme diinformazioni il cui si-gnificato rea te dipendedalla slrul/llra nelquale sono immessi.Ad esempio il dalo"ROSA" è IIn cogno-me in quanto è inseri-lO net campo cognome.

di informazioni tra loro rigidamentecorrelate. Il Record è il minimo ele-mento dell'archivio, anzi la quantità diinformazioni contenute nell'archivio simisura in numero di Record.

Come detto ogni Record è un insie-me di informazioni, ciascuna dellequali è associata ad un campo che nedetermina e specifica il significato.

La rappresentazione grafica più im-mediata della struttura di un File è co-stituita da una tabella rettangolare, incui la dimensione orizzontale è fissa,in quanto comprende le specifiche del-la struttura e cioè nome dei campi, ti-po, lunghezza, eventuali controlli (ve-di tabella di fig. l).

Invece la dimensione verticale di-pende dal numero di record inseriti edè quindi generalmente variabile, inquanto permette accodamenti, cancel-lazioni, inserimenti, e riorganizzazioni.Tutte queste operazioni debbono avve-nire senza che la struttura (la parteorizzontale della tabella) vari.

L'argomento della seconda puntatadel corso riguarda la struttura (ovverocome si crea o si modifica una struttu-ra) e l'organizzazione in Record, ecioè come, una volta definita la strut-tura si possono inserire, ricercare, mo-

La prima parte del corso, pubblicatasullo scorso numero di MC, aveva unafinalità introduttiva e quindi in pratica èservita per far capire la filosofia e le mo-dalità di approccio allo strumento DE.

Con la seconda parte si entra nel vivodel corso e si comincia a parlare di ar-chivi. Si vedrà come costruire un archi-vio. come lo si gestisce, come si manipo-lano i dati in esso contenuti, ecc.

Propedeutica a questa parte del corsoè la conoscenza di alcuni concetti fonda-mentali come il conceI/o di File, il con-ceI/o di Strul/ura, il conceI/o di Campo.

Concetti fondamentalistruttura di un File, Campi, Record

Il file (o archivio) va inteso come uninsieme logicamente composto di in-formazioni. Nel file vanno distinti glielementi che costituiscono il conteni-tore (Struttura, Campi, tipo e lunghez-za dei Campi, Controlli dei Campi,ecc.) dal contenuto.

Il contenuto è un insieme di Re-cord, e per Record si intende un insie-me, di dimensioni costanti e predeter-minate all'atto della creazione del file,

Seconda parte

68 MCmicrocomputer n. 48 - gennaio 1986

Page 2: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

Corso dBASE 1//

dere fino a 32 campi, che in applica-zioni di una certa complessità sono in-dubbiamente insufficienti, e l'occupa-zione totale della struttura può arriva-re fino a 1500 byte.

Il DB 111,oltre ad avere i due tipi dicampo in più, ne permette fino a 128per una occupazione totale di 4000 by-te al massimo, che in pratica aumentanel caso si utilizzino campi Memo.

Il campo Data, del DB 111,non è nédel tipo carattere né del tipo numeri-co, ma accetta calcoli numerici (diffe-renza tra date, ed il risultato è numerodi giorni, somma tra una data e un nu-mero di giorni che dà per risultato unanuova data).

2

remo un piccolo programma di immis-sione dati con alcuni controlli sui datiimmessi. Ad esempio, se in una strut-tura abbiamo inserito un campo Codi-ce Provincia, di tipo carattere e di lun-ghezza 2 caratteri, immettendo i datiin modalità comandi diretti il DB con-trolla solo tipo e lunghezza. Invece uncontrollo, eseguibile solo da program-ma, è quello di verificare l'esistenzadella sigla immesssa in una tabella, allimite, in un altro archivio.

Altro esempio: in un archivio checontiene informazioni sul personale diuna certa ditta esistono in ogni record,riferito a ciascun dipendente della dit-ta, due date, quella di nascita e quella

3

il record successivo pronto per l'im-missione, e così via. Per interromperlabasta dare un RETURN a vuoto all'i-nizio del nuovo Record.

Come ci si muoveall'interno di un file

Il comando USE < nome del file>apre il file e posiziona il numero delrecord a l, Se non si sta utilizzando al-cun file indice, l'ordine in cui sono lo-gicamente messi i dati è fornito dal lo-ro numero record, ovvero sono messiin ordine di immissione.

Dopo l'USE sono dunque attivi i

B:ARCDB3.dbfCREA ARCDB2ENTER RECDRD STRUCTURE AS FDLLDWS:

FIELD NAME,TYPE,WIOTH,DECIMAL PLACES001 NOME,C,12002 COGNOME,C,14003 SEX,C,l004 DATANASC,C,8005 PROVNASC,C,2006 STIPENOIO,N,81111117

INPUT DATA NOW?

Nome campo

1 NOME2 COGNOME3 SEX4 DATANASC5 PROVNASC6 STIPENDIO

Tipo Dim Dee

Caratter'e 12Carattere 14Carattere 1Data 8Carattere 2Numerico 8 111

Byte rimasti 3955Campi de~initi: 6

Nome campo Tipo Oim Dee

Le cifre decimali vanno da 0 alla dimensione del campo meno 2 (al massimo 15)

Figura 2 e 3 - Comando CREATE < nome deljìle>. /I comando fa apparire una maschera in cui, in maniera assolutamente il1luitiva, \'011110 immesse le informa-zioni necessarie alla d~fìnizione della strutlura del nuovo jìle. /I DB3 esegue anche un conteggio dei byte consumati.

Può essere manipolato per mezzo difunzioni specifiche (tipo mese, anno,giorno e funzioni che lo trasformanoin stringa e viceversa). Sono tutte pos-sibilità che nelle procedure che si ba-sano sul calcolo di date, come tutte leprocedure di tipo amministrativo-ge-stionale, risultano utilissime.

In figura 2 e 3 vediamo le mascheredi immissione di una struttura presen-tate dal comando CREATE <nomedel file> rispettivamente in DB Il e inDB 111.

Esiste ovviamente un comando (01-SPLA Y STRUCTURE) che permettedi vedere una struttura appena creata(nella configurazione di partenza a ta-le funzione è destinato il tasto F6), inquanto quando si lavora con un file,qualsiasi cosa si intenda farne, biso-gna conoscerne la struttura.

Una volta definita la struttura è pos-sibile cominciare ad inserire dati. Lemodalità di immissione sono due. Lapiù semplice è quella permessa dal la-voro in comandi diretti, la seconda èquella che consiste nel far gestire tuttele operazioni sul file da una appositaprocedura (ovvero da un insieme diprogrammi).

La differenza tra le due modalità èevidente: con la prima si è in grado dieseguire sui dati immessi solo i con-trolli automatici (fatti dal DB) relativia quel tipo campo, con la seconda tuttii dati immessi possono essere inseritein routine, anche complesse, di valida-zione. Alla fine della puntata presente-

MCmicrocomputer n. 48 - gennaio 1986

di assunzione. Immettendo i dati diret-tamente il DB esegue solo il controlloformale del dato, che cioè quella dataesista, il controllo del rapporto logicotra le due date può essere fatto solo daprogramma.

Gestione di un archivioin comandi diretti

Per immettere i dati in un archiviola prima cosa da fare è richiamarlotramite il comando USE < nome ar-chivio> . A questo punto l'archivio è adisposizione e cioè ci si può lavoraresopra e sono attivi i vari comandi chene permettono la gestione. Ad esem-pIO:DISP STRU mostra la struttura e indicail numero di recordL1ST [varieopzioni] ne visualizza il conte-nuto

Se dobbiamo immettere dati il co-mando è APPEND, che conviene tra-durre in accoda. Infatti ogni nuovo re-cord viene accodato e il DB gli attri-buisce un numero che lo identificheràin seguito, e che può essere visto comeun campo che contiene il progressivodel record da chi usa l'archivio.

Il comando APPEND genera unnuovo record (vedi fig. 4), il cui nume-ro appare il alto, e presenta una ma-schera per immettere i dati. La ma-schera è composta dal nome del cam-po e, in inverso, da uno spazio di lun-ghezza pari al campo da immettere.

Finita l'immissione dei dati appare

nomi dei campi ed è attivo il primo re-cord. I comandi utilizzabili sono:DISP che visualizza il record attivooppure?[RECNO()], <nome del campo>, <nomedel campo> DB 111? :Il: , < nome del campo>, < nome delcampo> DB Il

Il punto interrogativo è il comandodi PRINT che si può riferire sia a va-riabili sia ai nomi dei campi del file inuso in quel momento, per cui una vol-ta posizionati si su un record (nel no-stro caso il primo) se ne può visualiz-zare il contenuto o parte del contenu-to.

Per muoversi all'interno del file perricercare un record specifico il modopiù semplice è conoscerne il numerorecord e il comando di,movimento èGO < numero del record>altri comandi di movimento sonoskip < + / - numero) che muove il pun-tatore avanti ed indietroi comandi di inizio e fine file (associa-bili aGO)BOF(), EOF() variabili logiche.

Raggiunto il record che interessa, sipuò visualizzare con il DISP o con levarie opzioni viste prima.

Per modificare un record in coman-di diretti il comando da usare è EDIT,che visualizza la stessa maschera del-l'append ma con i campi «pieni». Ilcomando EDIT può essere usato an-che passando direttamente il numerodel record (es. EDIT 56).

Quando un record viene immesso ilDB gli attribuisce un numero, che altri

69

Page 3: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

non è che il numero progressivo di im-missione. Tale numero può essere vi-sualizzato e può anche essere utilizza-to per richiamare il record, ammessodi conoscerlo.

Il numero del record (RECNOO inDB3 oppure # in DB2) perde moltaimportanza quando si lavora con unfile indice. Il file indice comporta undiverso modo di sequenziare i record equindi un diverso modo di movimentoall'interno del file e un diverso mododi ricerca.

In ogni caso è indispensabile saper-si muovere bene all'interno di un file equindi vi suggeriamo di fare «ginnasti-ca». In figura 5 c'è un output di unesercizio di movimento su e giù per ilfile.

La cancellazione di un record

Il DB consente una cancellazione

Reco..-d n. 28NOMECOGNOMESEXDATANASC I IPROVNASCSTIPENDIO

Figura 4 - Il comando APPEND costituisce lo ma-niera più semplice per inserire dati in un archivio.BosIo aprire un archivio e impostare APPEND cheappare una maschera totalmente confezionata dalDB, in cui appaiono sulla sinistra i nomi dei campie sulla destra, in negativo, le zone per l'immissionedei dOli, già dimensionate in funzione della lun-ghezza del campo. In 0110 appare il numero del re-cord che si sta accodando.

dei record a due livelli, la cancellazio-ne logica e la cancellazione fisica.

Con quella logica il record continuaad esistere nel file, conserva cioè il suonumero record, ma gli viene attribuitoun asterisco che indica che è stato can-cellato.

Il comando è DELETE, che usato«liscio» opera sul record attivo. In re-altà consente una sintassi più comples-sa che permette di cancellare più re-cord contemporaneamente:DELETE < intervallo> < condizione>

Una volta cancellati logicamentedei record possono essere consideratio meno, ad esempio in un calcolo o inuna visualizzazione, tramite un co-mando di SET.SET DELETED on/off

I record cancellati logicamente pos-sono essere riattivati con il comandoRECALL che ha una sintassi identicaal suo contrario DELETE.

La cancellazione fisica avviene conil comando PACK, che provoca lariassegnazione dei numeri record. Ov-vero se su un file di 100 record cancel-liamo il 50mo, dal 51mo in poi il nu-mero record viene riattribuito.

Il PACK è una operazione quindi ditipo «pesante» che va eseguita con

70

certe precauzioni. In generale convie-ne lavorare con il DELETE, e, saltua-riamente, con operazioni di tipoBATCH, eseguire il PACK. Mai e poimai il PACK può essere immesso inuna procedura di gestione maschere.

Il comando REPLACE

Esiste un altro comando che per-mette di modificare il contenuto diuno o più campi di uno o più record, èil comando REPLACE la cui sintassiè:REPLACE < campi> WITH < espressio-ne> FOR/WHILE < condizione>

Il Replace è quindi un comando diassegnazione che permette di far assu-mere ad uno o più campi un determi-nato valore. E questo vale sia per unsingolo record, quello su cui è posizio-nato il puntatore in quel momento, siaper tutti i record che rispettino unacerta condizione e tutti i record in as-soluto.

Ad esempio, se si vuoi assegnare adun campo chiamato Progressivo lostesso valore del numero record au-mentato di 1000 e al campo Nominati-vo il valore del campo Cognome piùquello Nome, ambedue trasformati incaratteri maiuscoli, l'intera operazionepuò essere fatta con un unico coman-do ReplaceREPLACE Progressivo WITH Rec-noO + 1000,Nominativo WITH UPPER (Co-gnome) + UPPER (Nome)

È evidente che se l'operazione ri-guarda più record di un File consisten-te l'operazione di Replace richiede uncerto tempo.

Un'altra modalità di utilizzo del co-mando REPLACE è quella costituitada una maschera di immissione dati,per la quale può essere meno rischiosolavorare su variabili di comodo, sullequali è possibile eseguire controlli ecalcoli a volontà. Solo alla fine, quan-do i dati siano stati tutti validati, si in-seriscono nel record tramite un'unicaoperazione di APPEND seguita imme-diatamente da un REPLACE.

La maggior sicurezza consiste nelfatto che l'APPEND è immediatamen-te seguito da un REPLACE e quindiviene minimizzato l'intervallo di tem-po tra la predisposizione del nuovo re-cord e l'effettivo riempimento dei suoicampi.

AI contrario, se si lavora diretta-mente sui campi occorre dare subito ilcomando di APPEND, per cui se suc-cede qualcosa che interrompe il lavoro(ad esempio un errore nel programmao una caduta di tensione) c'è il rischioche il record sia stato costruito, mache i dati non siano stati immessi o losiano stati in modo errato.

L'inconveniente più grave è costitui-to dal fatto che sia errato proprio uncampo chiave per cui il Record sba-

Corso dBASE 1/1

gliato non è PIU richiamabile con laprocedura di modifica dati.

In tal caso occorre intervenire in co-mandi diretti (al di fuori della proce-dura) sul file, oppure se si sta realiz-zando una procedura per utenti nonesperti occorre predisporre un pro-gramma che recuperi i dati errati o cheli cancelli.

Comandi supplementari

Una volta creato un archivio è pos-sibile modificarne la struttura conser-vandone, il più possibile e compatibil-mente con le modifiche apportate, idati. È inoltre possibile copiare l'inte-ro file jn un altro, in pratica duplican-dolo. E possibile copiare la strutturadi un file in un altro, che quindi èidentico a quello di provenienza comestruttura, ma è completamente vuotodi record.

Infine c'è un comando di copiaestremamente potente che duplica so-lo i campi voluti e i record voluti daun archivio origine ad un archivio de-stinazione. La sintassi di tali comandiè:

COPY FILE < nome del file A> TO < no-me del file D>

provoca la duplicazione del file in-tero, vale per qualsiasi tipo di file ecorrisponde all'identico comandoDOS, solo che in caso di esistenza delfile D, chiede conferma per l'operazio-ne.

COPY STRUCTURE TO <nome del file>produce un nuovo file vuoto con strut-tura identica a quello di Origine.

RENAME < nome del file> TO < nomedel file>anche questo comando ha un coman-do DOS corrispondente.

Il comando più potente è il COPY,che al contrario del COPY FILE, agi-sce dall'interno del file e quindi valesolo per quelli di tipo *.DBF. La suasintassi èCOPY TO < nome del file>< intervallo> .FIELDS. < elenco dei campi>FOR/WHILE. < condizioni>SDF.I.DELIMITED. WITH .BLAN K/< delimitazioni > .

Questo è un comando molto potentein quanto permette, con un 'unicaistruzione sia di duplicare un archivio,che di farne una versione ridotta, conun minore numero di campi, oppuredi farne una versione ridotta prelevan-do solo alcuni dei record presenti, aseconda di certe condizioni.

Per quanto riguarda l'ultima riga diopzioni sono quelle relative al forma-to. Ovvero è possibile fare delle copiecon delimitazioni speciali che ne per-mettono la lettura da ambienti diffe-renti dal DB, come da BASIC, daDOS, da LOTUSI32, da SYMPHO-NY. Vedremo queste possibilità inuna delle prossime puntate.

MCmicrocomputer n. 48 - gennaio 1986

Page 4: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

Corso dBASE 111

Figura 5· Ginnastica all'interno dell'Archivio. Quando si apre un archivio con il comando USE < nome ar-chivio> il puntatore si posiziona sul primo record. Per cui se si imposta ilcomando DISPLA Y viene visualiz-zalO il primo RECORD. Esistono vari comandi per muoversi su e giù nel file.

Gestione di un archivioin comandi diretti

I comandi da utilizzare per gestireun archivio in maniera diretta sonoUSE < nome del fìle>, APPEN D,EDIT < numero del record>, DELE-TE e PACK. Per muoversi all'interno

Con estrema cautela va usato il co-mando MODIFY STRUCTURE, chein DB2 provoca (ma prima il DB2 av-verte) la perdita dei dati. In DB3 nonesiste tale avvertimento il che farebbepensare che sia possibile eseguire talecomando su un file pieno, senza per-derne il contenuto. In realtà ho avutopersonalmente problemi e ho saputoaltrettanto di altri utilizzatori nell'usodei MODI STRU. Per cui, anche inDB3, conviene seguire il metodo DB2,ovvero:USE <archivio origine>COPY STRU TO < archivio destinazione>USE < archivio destinazione>APPEND FROM <archivio origine>CLOSE DATABASES

In pratica la modifica della strutturasi esegue su un archivio vuoto, che,una volta eseguita la modifica, si riem-pie prelevando i campi che non sonocambiati, dalla vecchia struttura. Sepoi si vuole conservare il vecchio no-me del file basta cancellare il vecchiofile e rinominare il nuovo col nomedel vecchio. Cioè:DELETE FILE <archivio origine>RENAME <archivio destinazione> TO< archivio origine>

STIPENDIO120000012500002190000187500010900001100000129500014500001345210014560002009000

DATANASC PROVNASC09/06/58 RM20/03/64 PA29/05/51 LI21/05/45 LI03/10/54 RM11/01/55 RM29/06/57 RM04/09/58 LI20/12/62 TO25/03/60 MI15/02/56 MI

Un uso tramite comandi diretti diDB2 e DB3 può essere fatto solo da

stesso record. Esistono comandi di in-serimento e cancellazione righe (equindi record).

Le difficoltà crescono e arrivano arendere il comando BROWSE imma-neggiabile quando la lunghezza deltracciato è tale che il singolo recordsupera una videata e allora muoversitra campi, record e schermi diventaproblematico.

Gestione di un archiviosotto programma

chi conosce bene tutti i comandi, e so-lo quando i dati non siano molti equando non sia indispensabile la cor-rettezza dei dati.

In realtà DB2 e DB3 sono strumentiprofessionali che possono gestire ar-chivi importanti, sia in termini di di·mensioni che in termini di affidabilitàdei dati. Vanno quindi realizzati deiprogrammi per la gestione degli archi-vi e per la loro utilizzazione.

In particolare diventa indispensabi-le ricorrere alla programmazionequando occorre mettere in relazionevari archivi tra di loro, ad esempioperché un elemento di un archivio di-pende da informazioni che stanno inun altro archivio, oppure quando uncampo debba essere sottoposto a con-trolli particolari.

In questa puntata pubblichiamo unprogramma che serve per l'immissionedi nuovi dati nello stesso file che ab-biamo utilizzato in alcuni esempi pre-cedenti. I concetti nuovi sono numero-si e quindi abbiamo preferito inserirel'esempio in un riquadro che illustri ivari comandi. In figura 7 potete vede-re un esempio di output del program·ma.

Nella struttura del fìle che vogliamoalimentare esistono due campi chevanno controllati, il campo SEX, chepuò assumere solo i due valori F e M,e il campo PROVNASC (provincia dinascita) che deve corrispondere aduna delle sigle automobilistiche delleprovince italiane.

L'esempio si può generalizzare, inpratica un campo dell'archivio princi-

Il ARCD83COGNOME------- SEXROSSI MVERDI MBIANCHI MGIALLI FVIOLA FNERI MMARRONI MARANCIO MBRUNO MROSA FAZZURRI M

Record n.NOME--------LUIGIMARCOLUDOVICOCARLOTTAMARGHERITAWALTERBENIAr1INOGIUSEPPEMARIOCHIARAALDO

SEX DATANASC PROVNASC STIPENDIOM 09/06/58 RM 120001210M 20/03/64 PA 1250000M 29/05/51 LI 2190000F 21/05/45 LI 1875121121121F 1213/10/54 RM 1090121121121M 11/1211/55 RM 110012100M 29/1216/57 RM 1295QHZl0M 04/1219/58 LI 1451210121121M 2121/12/62 TO 1345121121121F 25/1213/6121MI 145612100M 15/02/56 MI 212109121121121

SEX DATANASC PROVNASC STIPENDIOM 29/(2)5/51 LI 219121121121121

Figura 6 . ComandoBROWSE. Permettedi lavorare in modali·tà «full screen» sul-l'archivio. Ovvero ap-paiono più record con-temporaneamente sulvideo e con i tasti«freccia» ci si puòmuovere sia in vertica-le da un record all'al-tro sia in orizzontaleda un campo all'altro.È possibile in tale mo-dalità modificare ilcontenuto del file.

del file si usano GO < numero del re-cord>, SKIP - / + < numero di re-cord> .

Per vedere il contenuto di record sipuò usare il DISPLA Y che visualizzail record su cui è posizionato il punta-tore, oppure un certo numero di re-cord. Il comando LIST che opera sututto il file e può operare selezioni percondizioni.

Esiste il comando BROWSE chepermette di operare sul fìle con moda-lità FULL SCREEN. In pratica appa-iono più record contemporaneamente(uno per riga) e si possono modificaredirettamente (vedi fig. 6).

M 09/06/58 RM 1200000

M 15/02/56 MI 201219121121121

F 1213/1121/54RM 112191211210121

In realtà il BROWSE è un po' diffi·cile da maneggiare in quanto disponedi un suo EDITOR, che permette mo-vimenti verticali sullo schermo, checorrispondono a movimenti sul fìle, emovimenti orizzontali, che corrispon-dono a movimenti sui campi dello

ROSSI

COGNOMEBIANCHI

AZZURRI

VIOLA

COGNOMEROSSIVERDIBIANCHIGIALLIVIOLANERIMARRONIARANCIOBRUNOROSAAZZURRI

NOMELUIGIMARCOLUDOVICOCARLOTTAMARGHERITAWALTERBENIAMINOGIUSEPPEMARIOCHIARAALDO

4

2

5

3

6789

10Il

5SET HEADING OFFDISP

5 MARGHERITAGO BOTTO MDISPLAY

Il ALDOGO TOP? RECNO ()

1DISPLAY

1 LUIGISKIP -1

Record n.

• GO 3• DISPLAY

Record NOME3 LUDOVICO

· SI<IP 2Record n. 5

? RECNO ()

· USE ARCDB3· LIST

Record1

MCmicrocomputer n. 48 . gennaio 1986 71

Page 5: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

pale rimanda ad un archivio seconda-rio che contiene i dati di decodificadel campo. Si introduce il concetto dilavoro su più archivi aperti contempo-raneamente e del passaggio da uno al-l'altro, tramite un semplice comando.Il passaggio comporta il fatto che pur

essendo aperti più file, in un dato mo-mento si può lavorare solo su un file, ein questo momento sono riconosciutidal comando REPLACE solo i numeridei campi del file in uso.

II problema più grosso quando l'ap-plicazione richiede numerosi file aper-

Corso dBASE 1//

ti è proprio costituito dal sapere inogni momento quali sono i fìle aperti equali di questi sia in uso. In fase di de-bug dei programmi risulta particolar-mente utile il comando DISPLA YSTATUS' che fa la «fotografia» Inquell'istante della situazione file. Me

I primi programmi in dBASEERASE) e APPEND BLANK predisponeun nuovo record, per ora vuoto.

La sintassi tipica del comando di im-missione è@ X,Y SAY <messaggio> GET <nomecampo> PICTURE <formato> READdove@ X, Y sono i valori numerici delle coor-dinate dello schermo sul quale ci si posi-ziona

Figura 7 - Esempio di OUlpUI.

SA Y permette di scrivere un messaggiosul video, e tale messaggio, come nellamigliore tradizione, va posto tra virg·olet-te;

GET permette l'input o su un campo osu una variabile che però va preventiva-mente definita.

PICTURE permette una notevole va-rietà di formati di immissione, ad es. ilpunto esclamativo esegue la conversionedei caratteri immessi in caratteri maiusco-li.

Il GET <nome del campo> viene atti-vato dalla istruzione di READ seguente.Ogni READ può riguardare più GET, mase del campo in input si vuole eseguire al-l'istante un controllo, occorre dedicargliuna READ.

Il campo NOME non viene caricato di-rettamente da una specifica coppia diGET & READ, ma si appoggia ad unavariabile di comodo VAR I, questo per-ché vogliamo controllare anche la fineimmissione dando un invio a vuoto sulcampo nome. In pratica si definisce la va-riabile VAR I di lunghezza pari al camponome, si fa la GET della variabile, si con-

Iniziamo con questa puntata a mostra-re dei listati di programmi in dBASE. Ilprimo della serie è un programma che ge-stisce l'immissione di nuovi record in unarchivio. Il listato è abbastanza elementa-re in quanto non abbiamo inserito sofisti-cazioni di programmazione, ma poichélavora su due archivi è già abbastanzaavanzato per il neofita o per chi leggal'articolo senza provare dopo sulla mac·china gli esempi. Fortunatamente il DBnon ha istruzioni di salto, il che facilita lacomprensione del listato di un program-ma che si svolge sempre in sequenza.

All'inizio del programma si eseguono ivari settaggi permessi dalle istruzioniSET, qui ad esempio si disabilita la ripeti-zione dei comandi di assegnazione e siabilita l'uso del carattere «due punti» co-me separatore di campi.

Si aprono due archivi, il primo è quellousato negli esempi precedenti, il secondoè un file la cui struttura è formata solo dadue campi:

SIGLACinAIn tale archivio in pratica sono conte-

nute tutte le sigle automobilistiche e aciascuna di queste è associato il nomedella città. Tale archivio ha un indice, ve-dremo nel prossimo numero di che si trat-ta, per ora diciamo solo che abbiamocreato una chiave di ricerca nella tabellacostituita dalla sigla automobilistica, percui data una sigla il DB provvede a posi-zionarsi sul record corrispondente.

L'istruzioneDO WHILE < condizione> ENDDO

genera un loop chiuso dall'ENDDO, dalquale si esce solo quando non si verificapiù la condizione iniziale o quando c'èuna istruzione di uscita tipo RETURN.In pratica vogliamo continuare ad immet-tere dati fin quando non diamo un co-mando di fine.

CLEAR pulisce lo scherm'o (in DB2 è

NOMECOGNOMESESSODATA DI NASCITAPROVINCIAIMPORTO

:CLAUDIO:ROSSINI:M:: 11/12/37::TO: TORINO: 1,2121121,121121121:

trolla se viene dato un invio a vuoto. Se èstato dato un invio a vuoto si esegue il co-mando RETURN, altrimenti si «rimpiaz-za» il campo nome con il contenuto dellaVARI.

Nessun problema per il COGNOME,in quanto è senza controlli. Invece percontrollare che il SESSO sia o F o M, vie-ne realizzato un loop (con 00 WHILE ..ENDOO) dal quale si esce solo se il cam-po SEX contiene o S o F. Questo lo fauna comodissima funzione logica (di ri-cerca di sottostringa) che indica se in unacerta variabile esistono o meno certi ca·ratteri.

Si crea un loop anche per il controllodella provincia, ma generalizziamo il con-cetto di controllo attivando un Flag chefa iniziare un loop dal quale si esce solose il controllo è andato a buon fine equindi si è azzerato il Flag.

Nel nostro caso il controllo consistenella ricerca della sigla della provincianell'archivio secondario. Se la ricercaprovoca la condizione logica di fine delfile vuoi dire che non si è trovata la siglae quindi si invia un messaggio di non tro-vato. Se la sigla è presente nell'archiviosecondario viene scodificata scrivendo lacittà e viene disattivato il Flag, per cui sipuò uscire dal loop.

Usciti dal loop la prima cosa da fare èdi riposizionarsi sul file primario e di rim-piazzare il campo PROVNASC con la va-riabile di comodo usata.

L'immissione dell'importo ci permettedi vedere un altro tipo di PICTURE perdati numerici. Il programma si chiudecon un loop di attesa del tutto uguale aiFOR .. NEXT del Basic e con l'ENDOOche chiude il loop principale iniziato conil comando DO WH I LE.T.

Questo DO WHILE.T. .. ENDOO è unciclo senza condizione iniziale e dal qualesi esce solo con un comando di uscita dalprogramma che è il RETURN.

., GEl SEX PICTURE .. ~..

•• GEl COGNOME P I CTURE •• ~ ' ~ I ~ I , ~ ~ ' I • ~ I "

72

• 01/12/1985 CONTROLLOSET TAU': OFFSEl DELIMITER ONCLEA* archIVIO prInCIpaleSELECT 1USE ARCDB3* tabell a esternaSELECT 2USE PRVDB3 INDEX PRVINDSELECT 1

•DO WHILE . T.CLEARVARI=".i) 1,1 SAY "NOMEREAD• controllo fIne l nputIF VARI=" ••

RETURNENDIFAPPEND BLANI<REPLACE NOME Wr TH VAR 1;j) :2, 1 SAY "COGNOMEREAD• controlIo datoDO WHILE • NOl. SEX .••• MF"

.i) 3,1 SAY "SESSO

IMMISSIONE ( db3 )

•• GET VARI PieTURE """'1"""". . ...

REA DENDDON 4,1 SAY "DATA DI NASCITA" GEl DATANASCREAD:t controllo l n una tabelI a esternaFL:r:::lDD WHILE FL:cl

VAR2=",1) 5~ 1 SAY "PROVINCIA " GEl VAR2 PICTURE •• ,,"READSELECT 2FINO "~VAR2"IF EOF ()

4) 5,25 SAY "NON TROVATA"ELSE

<i) 5,2S SAY CITTAFL=0

ENDIFENDDOSELECT lREPLACE PROVNASC WI TH VAR2~ 6.1 SAY •• IMPORTO " GEl STIPENDIO PICTURE "tu., tU ••• , ••••• "REAOCN==lDO WHILE CN< 1121121

CN""CN+lENDOOENDDO

MCmicrocomputer n. 48 - gennaio 1986

Page 6: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

GRUPPOEDITORIALEJACKSONMilono.Londro-Modrid.Son Froncisco

ILVERO GIOCO COMINCIA ADESSO

Page 7: Creazione e gestione dei file dati -  · 7 BENIAMINO MARRONI M 29-Jun-57 RM 1,295,000 ... 9 MARIO BRUNO M 21Z1-Dec-62 TO 1,345,00121 ... somma tra una data e un nu-

MOSTRAE SEMINARI

MILANO4-7 FEBBRAIO1986

EDP USA compie 15 anni. Quindici an-ni di mostre che hanno costituito un"ponte" fra la tecnologia Informaticaamericana e la creatività appllcatlvaItaliana.EDP USA 86 rappresenta Il momentodi Incontro di queste forze al più altolivello specialistico.I 6.000 mq. di area esposi tiva ospiteranno, neiquattro giorni della manifestazione i produttoriamericani più rappresentativi di tutti i compartidell'informatica, una sezione Computer Gra-phics e una Trade Mission ufficiale di diecimembri specialiuati in software proveniente da-gli Stati Uniti. Nel salone dei congressi si svolge-

ranno tre seminari presieduti da eminenti perso-nalità dell'informatica:

5 febbraio: "Infocenter: Strumenti e Organiz-zazione, una Realtà per il Futuro".Coordinatore: Prof. Giancarlo Martella, docentedi Trattamento dell'Informazione nell'Impresapresso il Politecnico di Milano.Quota di partecipazione: Lit. 75.000

6 febbraio: "Un viaggio dall'Invenzione delTransistor alla Intelligenza Artificiale".Coordinatore: Prof. Marco Somalvico, ordinariodi Complementi di Programmazione e di Robo-tica Industriale dell'Istituto di Elettronica del Po-litecnico di Milano.

Quota di partecipazione: Lit. 150.000, colazioneinclusa.7 febbraio: "Personal Computer e CAD: nuo-ve frontiere da esplorare".Coordinatore: Ing. Roberto Favero, consulentedi informatica.Quota di partecipazione: Lit. 75.000.Le quote di partecipazione dovranno pervenire amezzo assegno intestato a USIMC entro il 27gennaio. L'ingresso alla mostra è riserVato aglioperatori del settore.Gli studenti sono ammessi nel pomeriggio deigiorni 4 e 7 febbraio previa prenotazione e paga-mento di un biglietto ingresso di Lit. 3.000.Orario di apertura della mostra: 9.00 - 18.00.

CENTRO COMMERCIALE AMERICANOVIA GATIAMELATA. 5 - 20149 MILANO - TELEPHONE 46 96 451/2 - TELEX 330208 USIMC-I


Recommended