Parte ii - IIS Marconi Latina - Area didattica
Parte ii - IIS Marconi Latina - Area didattica
Parte ii - IIS Marconi Latina - Area didattica
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.