* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *                                                             *
      * Lettura di un archivio LINE SEQUENTIAL                      *
      *                                                             *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROG-1.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           CONSOLE IS CRT
           DECIMAL-POINT IS COMMA.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
      *
      * al nome interno ANAGRAFICA-MAG associo l'identificatore FILE-1
      * a cui sarà assegnato il nome del file su disco
      *
           SELECT ANAGRAFICA-MAG ASSIGN TO FILE-1
                  ORGANIZATION IS LINE SEQUENTIAL
                  ACCESS IS SEQUENTIAL
                  LOCK MODE IS AUTOMATIC
                  STATUS MAG-STAT.

       DATA DIVISION.
       FILE SECTION.
      *
      * descrizione della struttura dei records di ANAGRAFICA-MAG
      *
       FD  ANAGRAFICA-MAG.
       01  REC-MAG.
           02 ARTICOLO         PIC X(16).
           02 ARTICOLO-FORNIT  PIC X(16).
           02 DESCRIZIONE      PIC X(30).
           02 UNITA-MISURA     PIC XX.
           02 GRUPPO-MERC      PIC S9(3)    COMP-3.
           02 CODICE-IVA       PIC 99.
           02 SCORTA-MIN       PIC S9(7)    COMP-3.
           02 COSTO-ULTIMO     PIC S9(6)V99 COMP-3.
           02 COSTO-MEDIO      PIC S9(6)V99 COMP-3.
           02 PREZZO-VEND      PIC S9(6)V99 COMP-3 OCCURS 4.
           02 ESISTENZA        PIC S9(7)V99 COMP-3.
           02 ORDINATO         PIC S9(7)V99 COMP-3.
           02 IMPEGNATO        PIC S9(7)V99 COMP-3.
           02 CONFEZIONE       PIC 99.
           02 CODICE-FORNIT    PIC 9999.
           02 PROG-CARICO      PIC S9(7)V99 COMP-3 OCCURS 4.
           02 PROG-SCARICO     PIC S9(7)V99 COMP-3 OCCURS 4.
           02 COSTO-VENDUTO    PIC S9(7)V99 COMP-3.
           02 FATTUR-NETTO     PIC S9(7)V99 COMP-3.
           02 ULTIMO-CARICO    PIC 9(8)     COMP-3.
           02 ULTIMO-SCARICO   PIC 9(8)     COMP-3.
           02 CARICO-ANNUO     PIC S9(7)V99 COMP-3.
           02 ESIST-INIZ       PIC S9(7)V99 COMP-3.
           02 ESIST-FINALE     PIC S9(7)V99 COMP-3.
           02 FILLER           PIC X(22).
      *
       WORKING-STORAGE SECTION.
      *
      * campi per la gestione FILE-STATUS
      *
       01  MAG-STAT       PIC XX.
       01  VIDEO-1.
           02  VIDEO-2    PIC X(12).
       01  INDICE         PIC 99.
       01  FILE-STAT.
           02  S1         PIC X.
           02  S2         PIC X.
       01  STAT-BIN       REDEFINES FILE-STAT PIC 9(4) COMP.
       01  DISPLAY-STAT.
           02  S1-VID     PIC X.
           02  FILLER     PIC X(3).
           02  S2-VID     PIC 9(4).
      *
      * campi contenenti i nomi dei file correnti
      * la tabella viene ridefinita per indicizzare
      * la posizione del nome-file
      *
       01  TAB-FILE.
           02 FILE-01 PIC X(12) VALUE "MAGAZZ.LSQ  ".
           02 FILE-02 PIC X(12) VALUE "            ".
           02 FILE-03 PIC X(12) VALUE "            ".
           02 FILE-04 PIC X(12) VALUE "            ".
           02 FILE-05 PIC X(12) VALUE "            ".
       01  TAB-FIL REDEFINES TAB-FILE.
           02 FIL     PIC X(12)  OCCURS 5.
      *
       01  IN-KEY     PIC X.


       PROCEDURE DIVISION.

       INIZIO.
           MOVE FILE-01 TO FILE-1.
           PERFORM SET-COLOR THRU TITOLO.

       APERTURA-FILE.
           OPEN INPUT ANAGRAFICA-MAG.
           MOVE MAG-STAT TO FILE-STAT.
           IF S1 NOT = ZERO
              MOVE 1 TO INDICE
              PERFORM STATUS-TEST THRU EX-STATUS-TEST.

       CICLO-LETTURA.
           READ ANAGRAFICA-MAG AT END GO TO CHIUSURA-FILE.
      *
      * qui vanno messe le istruzioni per le operazioni
      * da eseguire (ricerca/stampa/ecc.)
      *
           GO TO CICLO-LETTURA.

       CHIUSURA-FILE.
           CLOSE ANAGRAFICA-MAG.

       FINE-PROG.
           DISPLAY SPACE.
           STOP RUN.

      *                   * * * Routines * * *


      * pulisce il video e setta il colore del testo e del fondo
      *
       SET-COLOR.
           DISPLAY SPACE WITH BACKGROUND-COLOR 7
                              FOREGROUND-COLOR 8.

       TITOLO.
           DISPLAY " L E T T U R A   D I   U N   F I L E   L I N E   S E
      -    " Q U E N T I A L " AT 0108 WITH FOREGROUND-COLOR 9
                                            BACKGROUND-COLOR 7
                                            REVERSE-VIDEO.

      *
      *            * * *  inizio  STATUS-TEST  * * *
      *
       STATUS-TEST.
           MOVE FIL(INDICE) TO VIDEO-1.
           DISPLAY "Errore sul File" AT 2303 WITH FOREGROUND-COLOR 4.
           DISPLAY VIDEO-2 AT 2319 WITH FOREGROUND-COLOR 2.
           IF S1 = 1
              DISPLAY "Fine File"
              AT 2334 WITH FOREGROUND-COLOR 4
              GO TO EX-STAT.
           IF S1 = 2
              DISPLAY "Chiave del record non valida"
              AT 2334 WITH FOREGROUND-COLOR 4
              GO TO EX-STAT.
           IF S1 = 9
              PERFORM TROVA-ERRORE THRU FINE-ERRORE.
           MOVE S1 TO S1-VID.
           MOVE LOW-VALUES TO S1.
           MOVE STAT-BIN TO S2-VID.
           DISPLAY "Tipo" AT 2403 WITH FOREGROUND-COLOR 4.
           DISPLAY S2-VID AT 2408 WITH FOREGROUND-COLOR 4.
       EX-STAT.
           DISPLAY "Premi un tasto per continuare " AT 2436.
           ACCEPT IN-KEY WITH AUTO-SKIP.
           STOP RUN.
       EX-STATUS-TEST.
           EXIT.
      *
      *            * * *  fine STATUS-TEST  * * *
      *
       TROVA-ERRORE.
           MOVE LOW-VALUES TO S1.
           MOVE STAT-BIN TO S2-VID.
           IF S2-VID = 13
              DISPLAY "File inesistente"
              AT 2413 WITH FOREGROUND-COLOR 4.
           IF S2-VID = 65
              DISPLAY "File non disponibile"
              AT 2413 WITH FOREGROUND-COLOR 4.
           IF S2-VID = 68
              DISPLAY "Record non disponibile"
              AT 2413 WITH FOREGROUND-COLOR 4.
       FINE-ERRORE.
           EXIT.
      *************************************************************
        

Top