Il metodo classico per scambiare dati fra sistemi diversi prevede lo scambio di dati mediante file, che vengono trasmessi via rete, oggi tipicamente su canali riservati di tipo VPN oppure mediante protocolli sicuri di tipo SFTP.

Tracciati e flussi.

Indispensabile che i due sistemi si accordino su un insieme di regole per interpretare i dati, detto tracciato per lo scambio dei dati o semplicemente tracciato.

Ognuno dei file contenenti i dati da scambiare, organizzati secondo le regole del tracciato, è detto flusso di dati o semplicemente flusso.

File delimitati.

Se si tratta di un file delimitato come un file CSV (Comma Separated Value), tipicamente prodotto da un software per gestire i fogli elettronici, come Excel di Microsoft, il tracciato potrebbe essere ad esempio:

ID,COGNOME,NOME,ANNONASCITA,MESENASCITA,GIORNONASCITA

Indicando che in ogni riga del flusso saranno presenti 6 campi (=colonne se si pensa a una tabella) e che questi campi saranno delimitati dal carattere “,”.

File a larghezza fissa.

Se si tratta di un file a larghezza fissa, come sono la gran parte dei tracciati che regolano i flussi che si scambiano le imprese con l’Agenzia delle Entrate oppure le banche o le società di assicurazione, il tracciato potrebbe essere ad esempio:

ANNONASCITA        9(004)    [1]
MESENASCITA        9(002)    [5]
GIORNONASCITA      9(002)    [7]
CATCOMUNENASCITA   X(004)    [9]
CATCOMUNERESIDENZA X(004)   [13]
COGNOME            X(025)   [17]
NOME               X(015)   [42]

e una riga del relativo flusso potrebbe essere:

19741207L781F861               ROSSIGNOLI         NICOLA

Considerando che lettura della riga del file di testo viene effettuata da sinistra a destra, la sintassi è:

NOMEVARIABILE   TIPODATO(LUNGHEZZA)   NUMEROCARATTERE

Dunque:

  • dal carattere 1 [1] per 4 (004) caratteri si hanno dati di tipo numerico (9) contenenti l’anno di nascita
  • dal carattere 5 per 2 caratteri si hanno dati di tipo numerico contenenti il mese di nascita
  • dal carattere 7 per 2 caratteri si hanno dati di tipo numerico contenenti il giorno di nascita
  • dal carattere 9 per 4 caratteri si hanno dati di tipo testo (X) contenenti il codice catastale del comune di nascita
  • dal carattere 13 per 4 caratteri si hanno dati di tipo testo contenenti il codice catastale del comune di residenza
  • dal carattere 17 per 25 caratteri si hanno dati di tipo testo contenenti il cognome
  • dal carattere 42 per 15 caratteri si hanno dati di tipo testo contenenti il nome

Tracciati più complessi possono prevedere regole diverse per insiemi di record (righe) diversi, ad esempio il record di intestazione (quello alla riga 1 del flusso) potrebbe avere alcune regole, i record intermedi altre, il record di chiusura (quello all’ultima riga del flusso) regole ancora diverse.

File di solo testo.

Potrebbe sembrare che i flussi siano semplicemente file di solo testo. Corretto. Ma un file di solo testo può contenere molte diverse caratteristiche che possono rendere il flusso illeggibile (o ancora peggio farlo interpretare male) all’altro sistema al quale lo si è inviato.

Un editor di testi professionale (come Notepad++) permette di comprendere facilmente quali e quante diverse impostazioni sia possibile specificare per un file di solo testo. Prima di scambiare i dati, nel momento in cui si definisce il tracciato, è dunque buona norma definire almeno le due cose seguenti.

La codifica.

Un file di solo testo può essere codificato secondo diversi standard, i più diffusi sono:

  • ASCII (a 7 bit) risale agli anni ’60 del XX secolo, contiene i caratteri standard: le cifre numeriche iniziano dal numero 48 (per lo zero), i caratteri maiuscoli iniziano dal numero 65 (per la A), i caratteri minuscoli iniziano dal numero 97 (per la a)
  • ANSI (a 8 bit) è la codifica impiegata dai sistemi operativi Windows i codici da 32 a 127 corrispondono a quelli utilizzati dall’ASCII, poi sono codificati altri caratteri come ad esempio le lettere accentate
  • ISO 8859 nella sua declinazione ISO 8859-1 (divenuta ISO 8859-15 con l’avvento dell’euro) è stato per anni il metodo maggiormente utilizzato per la codifica delle pagine web e per l’invio di email in formato testo semplice; i caratteri da 32 a 255 sono mappati secondo lo standard ANSI sopra descritto; ISO 8859 è il primo metodo per la gestione dei caratteri delle diverse lingue del mondo
  • UTF-8 (Unicode Transformation Format 8 bit) è la codifica UNICODE più utilizzata; UNICODE incorpora ISO 8859 parte 1 (quindi al solito i caratteri da 32 a 255 sono quelli già noti) e copre poi un vastissimo insieme di caratteri in tutte le lingue vive e nella maggior parte di quelle morte, comprende gli ideogrammi, i simboli scientifici, l’alfabeto Braille, i simboli della musica e così via

UNICODE prevede che all’inizio di un file di testo vi sia il BOM (Byte Order Mark) che serve ad indicare il tipo di codifica UNICODE utilizzato dal file stesso. Il BOM potrebbe però creare problemi nella scrittura di file in determinati linguaggi di programmazione, come il PHP, che hanno bisogno di inserire istruzioni proprio all’inizio del file (che dunque non può iniziare con il BOM).

I caratteri di fine riga.

A seconda del sistema operativo utilizzato cambia ciò che fa capire al computer che una riga di testo è terminata (detto termine riga o EOL: End-Of-Line).
Esistono tre modi principali per indicare il termine di riga:

  • LF (Line Feed – codice ASCII: 10) utilizzato nei sistemi linux
  • CR (Carriage Return – codice ASCII: 13) utilizzato nei sistemi MacOS
  • CR+LF (insieme di entrambi i caratteri) utilizzato nei sistemi Windows

 

Bibliografia: Rossignoli, N., Informatica per i beni culturali, Lampidistampa, Milano, 2010

Immagine: Photo by Vitaly Vlasov from Pexels