QLDBASE

scritto da:        Hans-Gerd Peerenboom
                   Im Muhren 44
                   5401 Spay am Rhein
                   tel. 02628/2619
                   GERMANIA

versione italiana: Giuseppe Zanetti,
                   via Vergani, 11
                   35031 Abano Terme (PD)
                   ITALIA
                   E-mail: (InterNet): beppe@alessia.dei.unipd.it

IL PROGRAMMA DBASE III

Nel mondo dei computers MS-DOS la serie di programmi dBase, ha costituito
un nuovo standard fino dall' uscita della prima versione, che girava sotto
CP/M ed e' disponibile per il QL con gli opportuni emulatori.

Per rendersi conto dell' importanza di dB III, basti pensare che la
maggioranza dei programmi per PC che gestiscono archivi e' scritta in clipper,
che altro non e' che il compilatore per questo linguaggio.

A dire il vero dB non e' l'unico linguaggio di interrogazione di archivi
disponibile sui personal computers, ma c'e' anche SQL, che e' lo standard
di interrogazione piu' grandi sistemi di banche dati, tuttavia non e' ancora
ampiamente diffuso a causa dell' iniziale osticita' del linguaggio.

Questo programma nasce dal bisogno di leggere dati trasferiti da un personal
computer e di trasportarli in Archive.

La struttura di un file di dBase e' descritta in un interessante articolo di
Peter Mandrella (vedere bibliografia a fine testo), in cui descrive ampiamente
come leggere, scrivere e manipolare files in DB3.

In questa sede ci limitiamo ad osservare l' header del file, poiche' e' qui'
che sono contenute le informazioni piu' interessanti per l'utente, per
ulteriori informazioni rimando all' articolo citato o ad uno dei molti testi
reperibili sull' argomento.

STRUTTURA DELL' HEADER DI UN FILE DB3

Byte nr.        Contenuto

1               chr$(3); identifica ogni file DB3
2,3,4           ultimo accesso al file: anno, mese giorno
5,6,7,8         numero di records in archivio
9,10            lunghezza dell' header
11,12           lunghezza dei dati
13-32           (non utilizzati)
da 32 in poi    definizione dei campi
ultimo byte header: chr$(13)

Dopo l'header seguono i dati, dopo l' ultimo dato  il file termina con un
carattere di EOF (End Of File) == chr$(26)

La definizione dei dati consiste in:

Lunghezza del campo * definizione del campo

la definizione del campo consiste in ogni caso di 32 bytes:

10 bytes        nome del campo (chr$(0) se vuoto)
1 byte vuoto (chr$(0))
1 byte per il tipo di dato
        C per dati "carattere"
        N per dati numerici
        D per date (anno,mese,giorno)
        L per condizioni logiche (vero o falso)
4 bytes vuoti (chr$(0))

1 byte  lunghezza del campo
        in ogni caso, anche se il campo e' vuoto
        se il campo e' maggiore della massima lunghezza consentita,
        i caratteri in sovrappiu' saranno persi
        in Archive cio' non accade, perche' usa un metodo "dinamico" di
        archiviazione delle stringhe.

1 byte  numero di cifre decimali: per dati numerici
        in Archive i numeri vengono memorizzati come sequenze ASCII

14 bytes vuoti (chr$(0))


Una volta conosciuta la struttura dei dati, e' facile trasferirli da dB3 ad
Archive o in FlashBack.

IL PROGRAMMA QLDBASE

Il programma QLDBASE_exe legge dati in formato DB e li trasforma in dati
esportabili in archive (_exp).

Prima dovete trasferire i dati in formato PC con una apposita utility, ad
esempio Xover, MultiDiskOver, AtariDos o l' ottimo ATRdevice (che e' di
pubblico dominio).

Il programma e' scritto in C e compilato con il compilatore della Computer
One (C1), ma occorrono i patch di Carsten Koch.

NON HO POTUTO TRADURRE in italiano i messaggi del programma poiche' non
dispongo di suddetti patch, percui la ricompilazione sarebbe risultata assai
problematica.

Il lavoro di conversione viene svolto dal programma in due fasi:

- Nella prima fase viene analizzato l'header del file e nel frattempo viene
  preparato l' header per Archive.

- Nella seconda parte vengono scanditi i record dell' archivio, si possono
  solamente visualizzare o anche convertire in un file _exp. In questa fase i
  campi numerici, data e logici vengono convertiti nella corrispettiva
  rappresentazione ASCII.

NB: i campi dBase "MEMORY" non vengono manipolati correttamente.

Ora il file risultante puo' essere importato in Archive o in Easel.

COME USARE IL PROGRAMMA

Il programma viene lanciato con "exec_w QlDbase_exe" e per prima cosa richiede
il nome di un file dB3, sul quale verranno applicate tutte le ulteriori
operazioni.
Inserito il nome il programma legge l'header del file per verificare che sia
effettivamente un file db3 e per ricrearsi in memoria la struttura dell'
archivio.
Se tutto e' proceduto in modo corretto, dovrebbe apparire il menu' principale,
in cui sono disponibili alcune opzioni.

1. Cambiare archivio

2. Analizzare la struttura dell' archivio

3. Vedere i dati contenuti nell' archivio

4. Esportare dati ad Archive

9. Terminare il lavoro

NOTE

L' autore e' a disposizione di chi gli segnali eventuali malfunzionamenti del
programma.

Il programma e' estremamente LENTO, non preoccupatevi: e' tutto normale.

Non ho potuto tradurre in italiano i messaggi del programma, poiche' non ho i
patch per il compilatore della C1.

Giuseppe Zanetti