Paolo Guccini

Impossibile non é per sempre

CONVERSIONE DI FILE
Considerazioni

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


Il testo e' stato acquisito tramite OCR dalla rivista su cui e' stato pubblicato e velocemente ricontrollato.
Le segnalazioni di errori saranno molto gradite e si possono fare alla pagina Contatti.

Tratto da:
Paolo Guccini
Rivista DEV Computer Programming
Edizioni Infomedia
Settembre 1996