Vai a pag. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Esempio di programma di gestione di un File INDEXED

    *     Visualizzazione Dati Dipendenti associati a determinati Codici
...
INPUT-OUTPUT SECTION.
FILE-CONTROL.
     SELECT DIPENDENTI ASSIGN TO DISK "DIPEN.DAT"
            ORGANIZATION INDEXED
            ACCESS MODE  RANDOM
            RECORD KEY   CODICE.

DATA DIVISION.
FILE SECTION.
FD  DIPENDENTI LABEL RECORD STANDARD.
01  R-DIPENDENTI.
     02 CODICE    PIC X(2).
     02 NOME      PIC X(15).
      02 COGNOME   PIC X(15).
     02 QUALIFICA PIC X(20).

WORKING-STORAGE SECTION.
01  COD-CERCA    PIC X(2).

    *    Controllo se ci sono ancora dipendenti da elaborare (Codice <> Space)
    *    e se Trovato dipendente con il codice specificato

01  CONTR-FINE     PIC 9.
     88 FINE-ELAB   VALUE 1.
     88 NOFINE-ELAB VALUE 0.
01  CONTR-DIP      PIC 9.
     88 TROVATO     VALUE 1.
     88 NON-TROVATO VALUE 0.

PROCEDURE DIVISION.
MAIN SECTION.
IN-MAIN.
     PERFORM INIZIO.
     PERFORM ELABORA UNTIL FINE-ELAB.
     PERFORM FINE.
FI-MAIN.  STOP RUN.

INIZIO SECTION.
IN-INIZIO.
     OPEN INPUT DIPENDENTI.

     SET NOFINE-ELAB TO TRUE.
     PERFORM RICEVI-COD.
FI-INIZIO.  EXIT.

ELABORA SECTION.
IN-ELABORA.
     SET TROVATO TO TRUE.
     PERFORM CERCA-DIP.
     IF TROVATO
       DISPLAY R-DIPENDENTE
     END-IF.
     PERFORM RICEVI-COD.
FI-ELABORA.  EXIT.

FINE SECTION.
IN-FINE.
     CLOSE DIPENDENTI.
FI-FINE.  EXIT.


RICEVI-COD SECTION.
IN-RCOD.
     ACCEPT COD-CERCA.

     IF COD-CERCA = SPACE
       SET FINE-ELAB TO TRUE
     END-IF.

FI-RCOD.  EXIT.

CERCA-DIP SECTION.
IN-CERDIP.
*    Inizializza Chiave

     MOVE COD-CERCA TO CODICE.

*    Cerca Dipendente con
*    quella chiave

     READ DIPENDENTI
       INVALID KEY
         SET NON-TROVATO TO TRUE
     END-READ.
       
FI-CERDIP.  EXIT.

N.Brugaletta

COBOL 32