per chi si avvicina alla conversione dati si presentano numerosi problemi:
in questo articolo vengono fatte varie riflessioni prima di presentare alcune soluzioni
La conversione dei dati rappresenta un aspetto di notevole rilevanza per l’E.D.P:
ogni singolo utente oppure grande azienda vive spesso la necessità di utilizzare al meglio
i dati racchiusi nei file per poter estrapolare le informazioni che sono di volta in volta necessarie;
per esempio, l’archivio della contabilità contiene la storia della vita aziendale
e sarebbe utilissimo poter analizzare i flussi finanziari rapportati
alla stagionalità nella vendita di determinati pro dotti per determinare
i periodi di maggiore necessità di liquidità attraverso un foglio elettronico.
Si potrebbero citare altri mille esempi, alcuni più semplici ed altri più articolati,
ma tutti fondati sullo stesso problema: poter utilizzare i dati memorizzati
attraverso determinati programmi in file aventi uno specifico tracciato record
con altri software che utilizzano altri formati di memorizzazione.
Questa problematica abbraccia un’area alquanto vasta
perché comprende l’integrazione e la migrazione o conversione;
la prima è l’operazione mediante la quale dati eterogenei e programmi di vario tipo vengono messi
in grado di lavorare sugli stessi dati;
la seconda rappresenta un’operazione di cruciale importanza
soprattutto per chi affronta il non semplice problema del cambiamento dei sistemi informativi:
la transizione da una struttura hardware e software ad un’altra;
un esempio può essere la migrazione da un sistema informativo basato su host
ad un altro che preveda una rete locale,
oppure l’effettuare una sostituzione dei programmi utilizzati
fino ad un determinato momento con altri che impiegano formati file differenti.
Per sinteticità, il problema può essere visto come il permettere all’utente
di utilizzare i propri dati con diversi programmi e, contemporaneamente,
limitando al di sopra della soglia di congruenza con l’originale l’eventuale perdita di informazioni.
Questa operazione può essere compiuta continuamente trasportando i dati
da un formato ad un altro e compiendo così una conversione
oppure prevedendo anche l’operazione inversa sui dati i quali potrebbero aver subìto delle modifiche.
La migrazione è una forma di conversione permanente per la quale la nuova struttura dati sarà utilizzata abitualmente e rimpiazzerà definitivamente la precedente. L’integrazione è l’operazione mediante la quale uno o più pro grammi operano sugli stessi dati.
L’acquisizione dei formati dei file
In tutti i problemi di conversione,
un aspetto delicato è il riuscire ad acquisire le esatte informazioni
sul tracciato record dei file di origine e destinazione al fine di poter realizzare
un programma in grado di leggere e scrive re tali formati.
Questa fase rappresenta spesso un aspetto assai complesso in quanto
raramente i formati dei file sono resi pubblici.
Un vecchio sistema per acquisire queste informazioni era costituito
dall’eseguire il dump del file ed analizzarlo carattere per carattere
per tentare di comprenderne ire lativi significati.
Ma, se questo sistema è applicabile quasi esclusiva mente ai file di dati
in quanto sono ben leggibili e discretamente interpretabili,
non consente alcun risultato allorquando si desideri leggere un file
memorizzato da un moderno word processor o foglio elettronico:
in esso appaiono numerose informazioni aggiuntive
difficilmente comprensibili se non si dispone del relativo tracciato del file;
inoltre, alla luce della nuova legislazione in materia,
questa operazione potrebbe rappresentare un illecito.
Inizia quindi la faticosa ricerca di questi dati,
ma sovente con scarsissimi risultati in quanto non sono riportati neppure sui libri o sulle riviste.
L’unico sistema diviene quindi quello di contattare direttamente le software house
avanzando una richiesta in tal senso.
Generalmente le soluzioni possibili sono due:
viene fornita una sorta di interfaccia verso i dati che sfrutta lo stesso programma che li ha generati,
e può essere costituita dalle API o dalle tecniche ODBC.
In questa maniera non è necessario realizzare i moduli che si occupano dell’accesso ai dati,
con conseguente significativo guadagno di tempo e stabilità del programma.
Possono anche essere fornite le esatte descrizioni degli archivi anche se,
spesso, è necessario firmare un documento con cui ci si impegna
a non divulgare le informazioni di cui si viene a conoscenza,
ma esso rappresenta un giusto strumento di tutela delle aziende
che generalmente non vincola il programmatore nella realizzazione del proprio software
se non per quanto attiene alla diffusione delle notizie relative a quelle parti
che coinvolgono direttamente quanto tutelato da segreto.
Una volta che si conoscono i due tipi di formato,
quello di origine e quello di destinazione,
si deve analizzare e stimare l’eventuale possibilità di perdita di dati
che la con versione comporta; infatti capita spesso di imbattersi in formati
che non supportano determinati tipi di dati, per cui, generalmente,
la conversione verso di essi può causare la perdita di informazioni.
Per esempio, se si crea attraverso una videoscrittura un documento
contenente le intestazioni di pagina ed esso deve essere convertito in un
formato che non le supporta, diventa impossibile effettuare la conversione
senza perdita di informazioni.
Un classico metodo per aggirare ostacoli analoghi
è rappresentato dal la possibilità di gestire come testo
generico i dati che non possono esse re convertiti nel formato specifico:
conseguentemente, nel nostro esempio il documento generato
conterrà al l’inizio di ogni pagina una parte di testo riportante
quello che originaria mente formava l’intestazione,
ma con tutti i problemi del caso: la numerazione delle pagine non si modifica automaticamente,
se vengono inserite o cancellate delle parti la posizione della falsa intestazione
subirà spostamenti anziché rimanere posizionata sempre in alto,
se si deve cambiare il contenuto dell’intestazione si rende indispensabile intervenire manualmente su ogni pagina, eccetera.
Riassumendo, la prima fase consiste nel reperire il formato dei file coinvolti nella conversione
ed analizzare se quello di destinazione supporta tutti i tipi di dati che possono essere presenti nel primo e,
in caso negativo, studiare tutte le soluzioni alternative.
L’header di un file di dati
Generalmente i file di dati sono composti da due parti:
l’header ed il corpo.
L’header è quella parte del file tipicamente posta al suo inizio in cui sono memorizzate informazioni generali
sul file ed i dati in esso contenuti.
Per esempio, i file in formato Dbase compatibile
hanno una struttura iniziale nella quale sono riportati i seguenti dati:
- flag indicante se il file ha un archivio collegato per i campi di annotazioni (campi memo);
- data dell’ultimo aggiornamento;
- numero dei record contenuti nel file;
- lunghezza espressa in byte del l’header;
- specifiche dei vari campi contenuti nel Data Base;
mentre un file creato con il WinWord conterrà altre informazioni:
- titolo del documento;
- l’autore;
- la data di creazione.
In alcuni casi le informazioni contenute nell’header sono di assoluta importanza
per una esatta interpretazione dei dati del file,
mentre in altri costituiscono solo un loro arricchimento.
Ma in entrambi i casi è indispensabile sapere da quale posizione iniziano i dati.
Nel caso non si disponga della descrizione dell’header
e si debba quindi procedere per tentativi,
il problema viene ulteriormente aggravato dal fatto che svariati formati
prevedono che gli header abbiano una lunghezza variabile
che viene calcolata in base a valori contenuti in esso stesso.
Purtroppo è assolutamente impossibile fornire un sistema universalmente valido
per la gestione degli header
in quanto essi differiscono da formato a formato di file:
ogni programma prevede un formato di memorizzazione differente dagli altri,
comunque l’header contiene spesso informazioni vitali
per la gestione dei dati del file,
ma esse sono difficilmente comprensibili non disponendo
delle relative spiegazioni, per cui diviene indispensabile procurarsele.
Conclusioni
Le conversioni di dati vengono ora mai quasi sempre effettuate
utilizzando funzioni standard dei programmi.
Vi sono però situazioni nelle quali non è possibile
appoggiarsi esclusivamente a questi sistemi e si rende necessario
scrivere un programma che esegua la conversione.
A tal fine è indispensabile acquisire dettagliate informazioni
sulla struttura dei formati coinvolti;
rimane comunque sempre auspicabile l’utilizzo del formato intermedio di tipo testo.
Bibliografia
[MSRTF] "Rich Text Format Specification", documento GC0165, Marzo 1992, Microsoft Corp.
[SET95] DEV, "Una classe per i record a lunghezza variabile", Settembre 1995, Edizioni Infomedia.
[OTT95] DEV, "La gestione dei record a lunghezza costante", Ottobre 1995, Edizioni Infomedia.
[NOV95] DEV, "Gestire file con record a lunghezza variabile e fissa", Novembre 1995, Edizioni Infomedia.
[DIC95] DEV, "File di tipo testo e classi per gestirli", Dicembre 1995, Edizioni Infomedia.
Indirizzi utili
Borland:
rappresentanza italiana:
I.S.S. Software, via Valera 31/16,20020 Arese (Ml)
tel. 02/93.58.22.60
fax 02/93.58.22.80
Internet: http://www.borland.com
http://www.borita.it
C.A. Computer Associates:
via E Sforza 3, Milano 3 city, 20080 Basiglio (Ml)
tel. 02/90.46.41 fax 02/90.46.42.501
Internet: http://www.cai.com
BBS: 02/90.75.53.83
Lotus Developement:
20141 via Lampedusa 11/a, Milano;
tel. 02/89.59.11
Hot Line clienti:
02/89.50.23.97
02/84.37.382;
Internet: http://www.lotus.com
BBS: 02/89.53.41.11
Corel Wordperfect:
Canada
tel. 167/87.74.56 (numero verde) fax 001+613-72.89.790
001+613-76.19.176
Internet: http://www.corel.com
Gupta tecnologies:
tel. 02/38.09.33.96 fax 02/38.09.33.97
Internet: http://www.gupta.com http://www.gupta.it
Oracle:
tel. 02/24.95.91 fax 02/28.50.91
Internet: http://www.oracle.com
Microsoft SpA:
Centro Dir.le Milano Oltre, Palazzo Tiepolo, via Cassanese 224, 20090 Segrate (Ml)
tel. 02/70.39.21 fax 02/70.39.20.20
Internet: http://www.microsoft.com/italy