Parte ii - IIS Marconi Latina - Area didattica
Parte ii - IIS Marconi Latina - Area didattica
Parte ii - IIS Marconi Latina - Area didattica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
876 volume V Programmazione<br />
vuole lavorare con i file di testo, le righe di questi file sono suddivise in base alla presenza del<br />
codice di interruzione di riga (che può cambiare da un sistema operativo all’altro). Volendo<br />
considerare in COBOL le righe di un file di testo pari a dei record di dimensione variabile,<br />
occorre aggiungere l’opzione ‘LINE’, così da chiarire che si tratta sì di un’organizzazione<br />
sequenziale, ma di un file suddiviso in «righe».<br />
La dichiarazione ‘ACCESS MODE IS SEQUENTIAL’ è facoltativa, perché l’accesso a un file<br />
organizzato in modo sequenziale può essere solo sequenziale.<br />
La dichiarazione ‘FILE STATUS IS data-name’ consente di indicare una variabile (da specificare<br />
nella sezione ‘WORKING-STORAGE SECTION’ della divisione ‘DATA DIVISION’) da<br />
usare eventualmente per conoscere lo stato dell’ultima operazione svolta sul file. Questa variabile<br />
deve poter rappresentare un valore di due caratteri (il modello di definizione della variabile<br />
deve essere ‘XX’) e quando contiene il valore zero indica che l’ultima operazione è stata<br />
eseguita con successo (si vedano le tabelle 82.48 e 82.49, che appaiono alla fine del capitolo).<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 sequenziale:<br />
|Listato 82.34. Programma elementare che legge un file sequenziale.<br />
|000100 IDENTIFICATION DIVISION.<br />
|000200 PROGRAM-ID. ESEMPIO-SEQUENZIALE.<br />
|000300 AUTHOR. DANIELE GIACOMINI.<br />
|000400 INSTALLATION. NANOLINUX IV,<br />
|000500 TINYCOBOL 0.61.<br />
|000600 DATE-WRITTEN. 2005-02-16.<br />
|000700 ENVIRONMENT DIVISION.<br />
|000800 INPUT-OUTPUT SECTION.<br />
|000900*<br />
|001000 FILE-CONTROL.<br />
|001100 SELECT FILE-NAME ASSIGN TO DISK<br />
|001200 ORGANIZATION IS SEQUENTIAL<br />
|001300 ACCESS MODE IS SEQUENTIAL<br />
|001400 FILE STATUS IS DATA-NAME.<br />
|001500*<br />
|001600 DATA DIVISION.<br />
|001700 FILE SECTION.<br />
|001800 FD FILE-NAME<br />
|001900 LABEL RECORD IS STANDARD<br />
|002000 VALUE OF FILE-ID IS "input.seq".<br />
|002100 01 RECORD-NAME PIC X(20).<br />
|002200 WORKING-STORAGE SECTION.<br />
|002300 01 DATA-NAME PIC XX.<br />
|002400 PROCEDURE DIVISION.<br />
|002500 MAIN.<br />
|002600 OPEN INPUT FILE-NAME.<br />
|002700 DISPLAY "FILE STATUS: ", DATA-NAME.<br />
|002800 PERFORM READ-FILE UNTIL DATA-NAME NOT = ZERO.<br />
|002900 CLOSE FILE-NAME.<br />
|003000 STOP RUN.<br />
|003100 READ-FILE.<br />
|003200 READ FILE-NAME.