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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

878 volume V Programmazione<br />

L’organizzazione relativa, oltre alle operazioni di lettura e scrittura, prevede la cancellazione<br />

dei record, che comunque possono essere rimpiazzati successivamente attraverso un’operazione<br />

di scrittura. Si osservi comunque che un record che risulta essere stato cancellato, non può<br />

essere letto.<br />

Osservando lo schema sintattico si può intuire che la prima parte dell’istruzione ‘SELECT’<br />

funzioni nello stesso modo di un file organizzato sequenzialmente; la differenza più importante<br />

riguarda la definizione del tipo di unità di memorizzazione che, date le caratteristiche dei file<br />

organizzati in modo relativo, deve consentire un accesso diretto ai dati.<br />

La dichiarazione ‘RESERVE integer’ si usa nello stesso modo del file organizzato<br />

sequenzialmente.<br />

L’indicazione dell’organizzazione, attraverso la dichiarazione ‘ORGANIZATION IS<br />

RELATIVE’ è obbligatoria, anche se probabilmente è sufficiente scrivere soltanto ‘RELATIVE’.<br />

Se non viene specificata la dichiarazione ‘ACCESS MODE’, si intende che l’accesso debba avvenire<br />

in modo sequenziale, altrimenti vale quanto indicato espressamente. Se l’accesso richiesto<br />

è diretto o dinamico, è necessario indicare quale variabile usare per specificare il numero del<br />

record, nella posizione occupata nello schema sintattico dalla metavariabile data-name-1 (da<br />

specificare ulteriormente nella sezione ‘WORKING-STORAGE SECTION’ della divisione ‘DATA<br />

DIVISION’).<br />

La dichiarazione ‘FILE STATUS IS data-name-2’ funziona nello stesso modo descritto a<br />

proposito dei file organizzati in modo sequenziale.<br />

Il punto fermo che conclude l’istruzione ‘SELECT’ appare una volta sola, alla fine; tutta<br />

l’istruzione deve risiedere nell’area B.<br />

Viene mostrato un esempio completo di un programma COBOL che legge un file relativo, ad<br />

accesso diretto, scandendo sequenzialmente il numero del record:<br />

|Listato 82.38. Programma elementare che legge un file relativo, ad accesso diretto.<br />

|000100 IDENTIFICATION DIVISION.<br />

|000200 PROGRAM-ID. ESEMPIO-RELATIVO-DIRETTO.<br />

|000300 AUTHOR. DANIELE GIACOMINI.<br />

|000400 DATE-WRITTEN. 2005-03-08.<br />

|000500 ENVIRONMENT DIVISION.<br />

|000600 INPUT-OUTPUT SECTION.<br />

|000700*<br />

|000800 FILE-CONTROL.<br />

|000900 SELECT MIO-FILE ASSIGN TO "input.rel"<br />

|001000 ORGANIZATION IS RELATIVE<br />

|001100 ACCESS MODE IS RANDOM<br />

|001200 RELATIVE KEY IS N-RECORD<br />

|001300 FILE STATUS IS STATO-DEL-FILE.<br />

|001400*<br />

|001500 DATA DIVISION.<br />

|001600 FILE SECTION.<br />

|001700 FD MIO-FILE<br />

|001800 LABEL RECORD IS STANDARD.<br />

|001900 01 MIO-RECORD PIC X(20).<br />

|002000 WORKING-STORAGE SECTION.<br />

|002100 77 N-RECORD PIC 9999 COMP VALUE IS ZERO.<br />

|002200 77 STATO-DEL-FILE PIC XX.

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

Saved successfully!

Ooh no, something went wrong!