# ISO 2709

ISO 2709 è una specifica per la rappresentazione dell'informazione bibliografica. Costituisce una generalizzazione e una ridefinizione rigorosa del formato adottato dalla specifica MARC per la rappresentazione dell'informazione bibliografica.

## Generalità

ISO 2709 organizza l'informazione bibliografica in record successivi, divisi in campi, a loro volta divisi in sottocampi.
Per limitare al massimo lo spreco di spazio, almeno nelle situazioni più frequenti, l'accesso ai campi è mediato da una struttura ausiliaria denominata directory: scorrendo la directory, un'applicazione informatica può estrarre da un record un campo qualsiasi, o eventualmente solo qualcuno dei suoi sottocampi, in due soli passaggi molto rapidi.
Al tempo stesso, il record è praticamente privo di parti vuote o non significative. Per contro, qualsiasi modifica ai dati tale da alterare la lunghezza di qualche componente, obbliga a ricostruire la directory.
Normalmente, il formato ISO 2709 è usato per la trasmissione, la memorizzazione e la presentazione dell'informazione.

## Struttura dei record

Un record è costituito da tre parti contigue:
* una label di ventiquattro caratteri, spesso chiamata anche leader o guida;
* una directory costituita da un numero variabile di voci (entry) e terminata dal carattere FT (Field Terminator, il carattere IS2 della tabella ISO 646);
* un'area dati, costituita da una serie di campi separati fra loro dal carattere FT.
Ogni record termina con il carattere RT (Record Terminator, il carattere IS3 della tabella ISO 646.)
Schematicamente, si ha dunque la seguente struttura:
| LABEL | DIRECTORY | FT | CAMPO | FT | CAMPO | FT | ... | CAMPO | FT | RT |
I campi contengono solo i dati veri e propri. Le informazioni necessarie a distinguere i campi fra loro e ad accedere a uno qualsiasi di essi sono contenute nella directory. In particolare, nella directory si trovano i nomi dei campi, detti etichette, sempre costituiti da tre caratteri con eventuali zeri iniziali di riempimento.
La struttura dei campi e delle voci della directory non è completamente definita dallo standard: alcune caratteristiche sono determinate dal contenuto della label, e quindi dipendono dalle diverse implementazioni.
Sebbene le tre parti si presentino nel record nell'ordine sopra riportato, per illustrarle più in dettaglio conviene procedere in senso inverso.

## Struttura dei campi

Lo standard definisce due tipi di campo: campi dati e campi di controllo (in inglese, rispettivamente data fields e control fields).

### Campi dati

Contengono i dati veri e propri, e hanno sempre etichetta di valore superiore a 10. Sono sempre divisi in sottocampi, il primo dei quali può essere preceduto da una serie di indicatori. La struttura si può dunque schematizzare come segue:
| IND | SUBF_1 | SUBF_2 | ... | SUBF_N | FT |

#### Indicatori

Normalmente lo scopo degli indicatori è fornire informazioni sul modo di elaborare i dati nel campo, o un particolare significato da attribuire ad essi in certe circostanze. Sono quindi indicazioni per l'applicazione, e non si possono considerare strettamente come dei dati.
Un indicatore è semplicemente un carattere, per lo più una cifra o uno spazio bianco. Il numero di indicatori è fisso per ogni record, ed è stabilito nella label. Quasi tutte le specifiche basate su ISO 2709 prevedono due indicatori, ma è comunque possibile pensare ad una specifica che non faccia uso degli indicatori, o che non ne usi esattamente due.

#### Sottocampi

I sottocampi di un campo dati sono costituiti da due parti: l'identificatore di sottocampo e i dati veri e propri. L'identificatore è costituito da una sequenza di caratteri la cui lunghezza è fissa per ciascun record ed è indicata nella label. Il primo di questi caratteri è invariabilmente il separatore di sottocampo (US, Unit Separator, il carattere IS1 della tabella ISO 646). Quasi tutte le specifiche basate su ISO 2709 prevedono due caratteri per l'identificatore, per cui i sottocampi, in definitiva, sono identificati da un singolo carattere, dato che il primo è sempre US. È comunque possibile pensare ad una specifica che non faccia uso di identificatore, o che adotti identificatori più lunghi di due soli caratteri. Nel primo caso, però, non ha più senso parlare di sottocampi.

### Campi di controllo

Sono di solito usati per vari tipi di informazioni di controllo. Non sono mai divisi in sottocampi e non sono provvisti di indicatori. Per questi campi sono riservate le etichette da 001 a 009 e da 00A a 00Z. L'unico campo obbligatorio, per qualsiasi specifica conforme allo standard, è il campo 001, che costituisce l'identificatore del record, e deve quindi essere unico all'interno di uno stesso gruppo di record.

## Struttura della directory

La directory è costituita da una serie di voci tutte di uguale lunghezza. Ognuna di esse è divisa a sua volta in quattro parti:

### etichetta

    come accennato sopra, in sostanza costituisce il nome del campo; essa è sempre costituita da tre caratteri, di solito numerici, sebbene siano ammesse anche lettere;

### lunghezza

    rappresenta la lunghezza del campo, comprensiva del terminatore di campo; è ovviamente un valore numerico, la cui lunghezza è definita nella label; se il valore numerico è tale da non coprire la lunghezza della sequenza, si usano zeri iniziali di riempimento;

### posizione

    è la posizione del campo, calcolata a partire dall'inizio dell'area dati; anche questo è un valore numerico, la cui lunghezza è definita nella label; anche in questo caso, se necessario, si usano zeri iniziali di riempimento;

### codici applicativi

    una sequenza di caratteri che può servire a segnalare ad un'applicazione informatica particolari elaborazioni da effettuare sul campo; la lunghezza di questa sequenza è definita nella label.
Schematicamente, la struttura di una voce si presenta come sotto:
| ETICHETTA | LUNGHEZZA | POSIZIONE | CODICI |
La maggior parte delle specifiche basate su ISO 2709, e in particolare UNIMARC e MARC21, usano rispettivamente quattro, cinque e zero cifre per le tre parti variabili della voce. In particolare, quindi, non definiscono codici applicativi. Considerando i tre caratteri dedicati all'etichetta, in tutte queste specifiche la lunghezza della directory è sempre un multiplo di dodici, escludendo il terminatore di campo.

## Struttura della label

Come si è visto sopra, alcune caratteristiche del formato sono variabili, e i rispettivi valori sono indicati nella label. Essa però contiene anche alcune altre importanti informazioni, insieme ad alcuni valori fissati dallo standard stesso e che potrebbero essere utilizzati diversamente in future versioni dello standard.
I ventiquattro caratteri che costituiscono la label, numerati a partire da 0, sono così organizzati:

### 0-4

    Lunghezza totale del record, comprensiva del terminatore di record. Essendo questo un numero di 5 cifre, non è possibile creare record più lunghi di 99.999 caratteri.

### 5

    Stato del record, non definito dallo standard.

### 6-9

    Codici applicativi, non definiti dallo standard.

### 10

    Numero di indicatori.

### 11

    Lunghezza dell'identificatore.

### 12-16

    Inizio dell'area dati, a partire dall'inizio del record.

### 17-19

    Altri codici applicativi.

### 20-23

    Struttura delle voci della directory. In dettaglio, il carattere 20 indica quanti caratteri sono usati in una voce per rappresentare la lunghezza del relativo campo; il carattere 21 indica quanti caratteri sono usati in una voce per rappresentare la posizione del campo a partire dall'inizio dell'area dati; il carattere 22 indica quanti caratteri sono usati in una voce per rappresentare codici applicativi legati al relativo campo; il carattere 23 è riservato per eventuali usi futuri.

## Esempi di specifiche basate su ISO 2709

Da quanto visto sopra a proposito della label, si comprende che le differenze fra le singole specifiche basate su ISO 2709 sono concentrate nelle aree 5-11 e 17-22 della label.
Come esempi concreti, possiamo considerare UNIMARC e MARC21, praticamente identici per quanto riguarda l'aderenza allo standard ISO 2709. Entrambi, infatti, usano:
* due indicatori per ogni campo dati
* due caratteri per l'identificatore di sottocampo di campo dati
* quattro caratteri in ogni voce di directory per la lunghezza del relativo campo a partire dall'area dati
* cinque caratteri in ogni voce di directory per la posizione del relativo campo a partire dall'area dati
* nessun codice applicativo nelle voci di directory
Riportiamo ora un esempio di label UNIMARC e di label MARC21. Per comodità, le label sono precedute da una riga utile a riconoscere le posizioni, e le parti fisse sono evidenziate in neretto:
Altre parti della label non evidenziate hanno un significato troppo strettamente legato al trattamento dell'informazione bibliografica, per cui non sono esaminate in questo contesto.