24.01.2014 Views

Parte ii - IIS Marconi Latina - Area didattica

Parte ii - IIS Marconi Latina - Area didattica

Parte ii - IIS Marconi Latina - Area didattica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Manuale COBOL 967<br />

Organizzazione a indice<br />

In tutti gli schemi sintattici che riguardano l’istruzione ‘READ’, si può vedere che viene indicato<br />

immediatamente il nome del file (già aperto) che si vuole leggere. Successivamente,<br />

appare una parola chiave opzionale, ‘INTO’, che precede il nome di una variabile; se viene<br />

specificata questa informazione, si intende fare in modo che il record logico ottenuto dal file,<br />

oltre che essere disponibile nella variabile strutturata dichiarata appositamente per questo,<br />

dopo l’indicatore di livello ‘FD’ relativo, sia anche copiato in un’altra variabile. Inoltre, le<br />

istruzioni imperative (imperative-statement) che si possono inserire dopo le parole ‘AT END’<br />

e ‘INVALID KEY’, servono a dichiarare cosa deve fare il programma nel caso la lettura fallisca<br />

per qualche motivo.<br />

Se il file che viene letto è associato a una variabile indicata con l’opzione ‘FILE STATUS’<br />

nell’istruzione ‘SELECT’ (nella sezione ‘FILE-CONTROL’ di ‘ENVIRONMENT DIVISION’), il<br />

valore di tale variabile viene aggiornato.<br />

Nel caso di un file a cui si accede sequenzialmente, si applica il primo schema sintattico.<br />

In questo caso l’istruzione ‘READ’ fornisce il record attuale e sposta in avanti il puntatore al<br />

record, in modo che una lettura successiva fornisca il prossimo record. Quando l’accesso è<br />

dinamico e si vuole leggere un file in modo sequenziale, occorre aggiungere l’opzione ‘NEXT’,<br />

per richiedere espressamente l’avanzamento al record successivo.<br />

Quando si accede sequenzialmente, oppure in modo dinamico ma specificando che si richiede<br />

il record successivo, si può verificare un errore che consiste nel tentativo di leggere oltre la<br />

fine del file. Se ciò accade e se è stata specificata l’opzione ‘AT END’, vengono eseguite le<br />

istruzioni che seguono tali parole.<br />

La lettura sequenziale di un file relativo, comporta l’aggiornamento del valore della «chiave<br />

relativa», ovvero di quanto specificato con la dichiarazione ‘RELATIVE KEY’ dell’istruzione<br />

‘SELECT’.<br />

La lettura sequenziale può essere applicata anche a un file organizzato a indice; in tal caso, la<br />

sequenza di lettura corrisponde a quella della chiave principale.<br />

Quando si accede in modo diretto ai record all’interno di un file relativo, si utilizza il secondo<br />

schema sintattico, per ottenere il record specificato dal numero contenuto nella variabile<br />

che funge da chiave (come specificato nell’istruzione ‘SELECT’, attraverso la dichiarazione<br />

‘RELATIVE KEY’). Se un record con quel numero non esiste, si verifica la condizione<br />

controllata dall’opzione ‘INVALID KEY’ e il programma esegue le istruzioni che questa<br />

controlla.<br />

Il terzo formato sintattico si usa per i file organizzati a indice, con accesso diretto, in base alla<br />

chiave specificata. La chiave in questione è quella primaria, salvo specificarla nell’istruzione<br />

‘READ’ con l’opzione ‘KEY IS’. La chiave cercata deve essere scritta in corrispondenza del<br />

campo che la contiene, all’interno del record dichiarato dopo l’indicatore di livello ‘FD’ relativo<br />

al file, secondo le specifiche dell’istruzione ‘SELECT’ (‘RECORD KEY’, o ‘ALTERNATE<br />

RECORD KEY’). Se la lettura avviene con successo, si ottiene il record che contiene quella chiave;<br />

altrimenti si verifica la condizione controllata dall’opzione ‘INVALID KEY’ e le istruzioni<br />

relative vengono eseguite.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!