Lezioni del modulo (1/2)
Definizione File e File-Control
In COBOL, la gestione dei file esterni (come archivi di testo o record binari su disco) è una delle funzionalità più importanti per le applicazioni aziendali di tipo batch. Poiché COBOL è stato progettato molto prima dei database moderni, i file su disco fungono da storage primario.
Il collegamento tra i file fisici memorizzati sul sistema operativo e le variabili interne del programma avviene in due fasi:
- Associazione logico-fisica nell'
ENVIRONMENT DIVISION. - Definizione del record dei dati nella
DATA DIVISION.
1. Associazione: FILE-CONTROL e SELECT ASSIGN
Nel capitolo dedicato alla struttura del programma abbiamo visto l'ENVIRONMENT DIVISION. Al suo interno si trova l'INPUT-OUTPUT SECTION, all'interno della quale la sezione FILE-CONTROL dichiara i file esterni usati dal programma.
Per associare un file logico del programma (es. SALES-FILE) a un file fisico reale sul disco (es. sales.dat), si usa l'istruzione SELECT ... ASSIGN TO ...:
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SALES-FILE ASSIGN TO "sales.dat"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT SALES-FILE: Definisce il nome logico che il programma userà per riferirsi al file.ASSIGN TO "sales.dat": Specifica il nome del file fisico (o il percorso) sul disco.ORGANIZATION IS LINE SEQUENTIAL(opzionale): Indica che il file è un normale file di testo in cui ogni riga rappresenta un record (separato da un carattere di ritorno a capo).
2. Dichiarazione: FILE SECTION e FD
Dopo aver associato il file nell'ENVIRONMENT DIVISION, dobbiamo definirne la struttura dei record nella DATA DIVISION. Per farlo, utilizziamo una sezione dedicata chiamata FILE-SECTION (che precede la WORKING-STORAGE SECTION).
Ogni file selezionato deve avere una voce FD (File Description) che dichiara la struttura del record:
DATA DIVISION.
FILE SECTION.
FD SALES-FILE.
01 SALES-RECORD.
05 EMP-ID PIC 9(5).
05 EMP-NAME PIC X(20).
05 EMP-SALARY PIC 9(6)V99.
FD SALES-FILE.: Identifica la descrizione del file per il nome logicoSALES-FILE. Nota che termina con un punto.01 SALES-RECORD.: Specifica la struttura di gruppo (record) associata al file. Ogni operazione di lettura/scrittura scambierà i dati usando questa struttura in memoria.
Prova tu
Completa l'ENVIRONMENT DIVISION per dichiarare l'INPUT-OUTPUT SECTION e il paragrafo FILE-CONTROL, associando il file logico SALES-FILE al file fisico 'sales.dat' tramite l'istruzione SELECT ASSIGN.
Mostra suggerimento
Scrivi ENVIRONMENT DIVISION. e INPUT-OUTPUT SECTION. a colonna 8 (7 spazi), poi FILE-CONTROL. a colonna 8 e infine SELECT SALES-FILE ASSIGN TO 'sales.dat'. a colonna 12 (11 spazi).
Soluzione disponibile dopo 3 tentativi
Dichiara la DATA DIVISION e la FILE SECTION per il programma. Definisci il File Descriptor (FD) per il file SALES-FILE associandovi un record di livello 01 chiamato SALES-RECORD contenente due campi subordinati: SALES-ID (numerico di 4 cifre) e SALES-AMOUNT (numerico di 5 cifre con 2 decimali impliciti).
Mostra suggerimento
Usa DATA DIVISION. e FILE SECTION. a colonna 8, FD SALES-FILE. a colonna 8, seguito a capo da 01 SALES-RECORD. a colonna 8 e dai campi 05 SALES-ID PIC 9(4). e 05 SALES-AMOUNT PIC 9(5)V99. a colonna 12.
Soluzione disponibile dopo 3 tentativi