Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID. STA0007B.
- AUTHOR. MAZZAROLO MATTEO.
- DATE-WRITTEN. 2010-12-20
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT FILEPLI ASSIGN TO FILEPLI.
- SELECT FILECON ASSIGN TO FILECON.
- SELECT FILEDES ASSIGN TO FILEDES.
- SELECT FILESTA ASSIGN TO FILESTA.
- DATA DIVISION.
- FILE SECTION.
- FD FILEPLI LABEL RECORD IS STANDARD.
- 01 REC-FILE-PLI-2001 PIC X(50).
- FD FILECON LABEL RECORD IS STANDARD.
- 01 REC-FILE-PLI-CONTIGUI PIC X(50).
- FD FILEFIL LABEL RECORD IS STANDARD.
- 01 REC-FILE-DIP-DESCR PIC X(50).
- FD FILEREP LABEL RECORD IS STANDARD.
- 01 REC-FILE-STAMPA PIC X(200).
- WORKING-STORAGE SECTION.
- 01 NOME-PGM PIC X(08) VALUE 'STA0007B'.
- * TRACCIATO FILE-2001 *
- 01 W-REC-FILE-PLI-2001.
- 03 W-DIP-2001 PIC 9(05).
- 03 W-NUM-PLI-2001 PIC 9(12).
- 03 W-COSTO-2001 PIC 9(7)V99.
- * TRACCIATO FILE-CONTIGUI *
- 01 W-REC-FILE-PLI-CONTIGUI.
- 03 W-DIP-PLI-CONTIGUI PIC 9(05).
- 03 W-NUM-PLI-CONTIGUI PIC 9(12).
- * TRACCIATO FILE-DESCR *
- 01 W-REC-FILE-DIP-DESCR.
- 03 W-NUM-DESCR PIC 9(05).
- 03 W-DESCR-DESCR PIC X(30).
- * RECORD INTESTAZIONE PAGINA *
- 01 W-REC-INT-PAG.
- 03 FILLER PIC X.
- 03 FILLER PIC X(06) VALUE 'DATA: '.
- 03 W-DATA-ST PIC X(10).
- 03 FILLER PIC X(93) VALUE SPACES.
- 03 FILLER PIC X(08) VALUE 'PAGINA: '.
- 03 W-PAGINA-ST PIC Z(06)9.
- * RECORD INTESTAZIONE CODICE DELLA DIPENDENZA *
- 01 W-REC-INT-DIPENDENZA.
- 03 FILLER PIC X.
- 03 FILLER PIC X(12) VALUE 'DIPENDENZA: '
- 03 W-COD-DIP-ST PIC Z(05)9.
- * RECORD DESCRIZIONE DELLA DIPENDENZA *
- 01 W-REC-INT-DESCRIZIONE.
- 03 FILLER PIC X.
- 03 FILLER PIC X(13) VALUE 'DESCRIZIONE: '
- 03 W-DESCR-ST PIC X(30).
- * RECORD L'INTESTAZIONE DEI PLICHI *
- 01 W-REC-INT-PLICHI.
- 03 FILLER PIC X.
- 03 FILLER PIC X(12) VALUE '*- NUM PLI -*'.
- 03 FILLER PIC X(01) VALUE SPACE.
- 03 FILLER PIC X(11) VALUE '*-- COSTO --*'.
- * RECORD I DATI DEI PLICHI *
- 01 W-REC-DATI.
- 03 FILLER PIC X.
- 03 W-DATI-NUM-ST PIC Z(12)9.
- 03 FILLER PIC X(01) VALUE SPACE.
- 03 W-DATI-COSTO-ST PIC Z(7)9,99.
- * RECORD PER IL COSTO TOTALE DEI PLICHI*
- 01 W-REC-COSTO-TOTALE.
- 03 FILLER PIC X.
- 03 FILLER PIC X(08) VALUE SPACES.
- 03 FILLER PIC X(05) VALUE 'TOT: '.
- 03 W-COSTO-TOTALE-ST PIC Z(15)9,99.
- * END-OF-FILE *
- 01 EOF-FILE-PLI-2001 PIC 9(01) VALUE ZERO.
- 01 EOF-FILE-PLI-CONTIGUI PIC 9(01) VALUE ZERO.
- 01 EOF-FILE-DIP-DESCR PIC 9(01) VALUE ZERO.
- * VARIABILI AGGIUNTIVE *
- 01 MAX-RIGHE PIC 9(06) VALUE 40.
- 01 CONT-RIGHE-DATI PIC 9(06) VALUE ZERO.
- 01 CONT-PAGINA PIC 9(06) VALUE ZERO.
- 01 COSTO-TOTALE PIC 9(15),99 VALUE ZERO.
- 01 DIP-ATTUALE PIC 9(06) VALUE ZERO.
- * SKEDA-PARAMETRO *
- 01 SKEDA-PARAMETRO.
- 03 SK-DATA-OGGI PIC X(10).
- PROCEDURE DIVISION.
- *-----*
- MAIN.
- *-----*
- PERFORM INIZIALIZZA
- PERFORM LETTURA-FILEPLI
- PERFORM LETTURA-FILECON
- PERFORM LETTURA-FILEDES
- PERFORM BILANCIAMENTO-DIPENDENZE
- UNTIL EOF-FILE-PLI-2001 = 1
- OR EOF-FILE-PLI-CONTIGUI = 1
- PERFORM STAMPA-COSTO-TOTALE
- PERFORM FINE-PGM
- .
- *------------*
- INIZIALIZZA.
- *------------*
- DISPLAY 'INIZIO PGM ' NOME-PGM
- OPEN INPUT FILEPLI
- FILECON
- FILEDES
- OUTPUT FILESTA
- ACCEPT SKEDA-PARAMETRO
- .
- *-------------------------*
- BILANCIAMENTO-DIPENDENZE.
- *-------------------------*
- EVALUATE TRUE
- WHEN W-DIP-PLI-2001 = W-DIP-PLI-CONTIGUI
- PERFORM BILANCIAMENTO-PLICHI
- WHEN W-DIP-PLI-2001 < W-DIP-PLI-CONTIGUI
- PERFORM LETTURA-FILEPLI
- WHEN W-DIP-PLI-2001 > W-DIP-PLI-CONTIGUI
- PERFORM LETTURA-FILECON
- END-EVALUATE
- .
- *---------------------*
- BILANCIAMENTO-PLICHI.
- *---------------------*
- EVALUATE TRUE
- WHEN W-NUM-PLI-2001 = W-NUM-PLI-CONTIGUI
- PERFORM STAMPA-COSTO-TOTALE
- PERFORM STAMPA-INTESTAZIONI
- PERFORM STAMPA-DATI-PLICO
- PERFORM LEGGI-FILEPLI
- PERFORM LEGGI-FILECON
- MOVE W-DIP-PLI-2001 TO DIP-ATTUALE
- WHEN W-NUM-PLI-2001 < W-NUM-PLI-CONTIGUI
- PERFORM LEGGI-FILEPLI
- WHEN W-NUM-PLI-2001 > W-NUM-PLI-CONTIGUI
- PERFORM LEGGI-FILECON
- END-EVALUATE
- .
- *--------------------*
- STAMPA-INTESTAZIONI.
- *--------------------*
- IF W-DIP-PLI-2001 NOT = DIP-ATTUALE OR NUM-RIGHE-DATI > MAX-RIGHE
- PERFORM STAMPA-INTESTAZIONE-PAGINA
- PERFORM STAMPA-INTESTAZIONE-DIPENDENZA
- END-IF
- .
- *---------------------------*
- STAMPA-INTESTAZIONE-PAGINA.
- *---------------------------*
- ADD 1 TO CONT-PAGINA
- INITIALIZE CONT-RIGHE-DATI
- MOVE SK-DATA-OGGI TO W-DATA-ST
- MOVE CONT-PAGINA TO W-PAG-ST
- IF CONT-PAGINA = 1
- WRITE REC-FILE-STAMPA FROM W-REC-INT-PAGINA
- ELSE
- WRITE REC-FILE-STAMPA FROM W-REC-INT-PAGINA AFTER PAGE
- END-IF
- .
- *-------------------------------*
- STAMPA-INTESTAZIONE-DIPENDENZA.
- *-------------------------------*
- IF W-NUM-PLI-2001 NOT = DIP-ATTUALE
- MOVE W-DIP-PLI-2001 IN W-COD-DIP-ST
- MOVE 'DESCRIZIONE NON TROVATA' IN W-DESCR-ST
- PERFORM CERCA-DESCRIZIONE
- UNTIL W-DIP-DESCR > W-DIP-PLI-2001
- OR EOF-FILE-DES = 1
- WRITE REC-FILE-STAMPA FROM W-REC-INT-DIPENDENZA AFTER 2 LINES
- WRITE REC-FILE-STAMPA FROM W-REC-INT-DESCRIZIONE
- WRITE REC-FILE-STAMPA FROM W-REC-INT-DATI AFTER 2 LINES
- ELSE
- WRITE REC-FILE-STAMPA FROM W-REC-INT-DATI AFTER 5 LINES
- END-IF
- .
- *------------------*
- CERCA-DESCRIZIONE.
- *------------------*
- IF W-DIP-DESCR = W-DIP-PLI-2001
- MOVE W-DESCR-DESCR IN W-DESCR-ST
- END-IF
- PERFORM LETTURA-FILEDES
- .
- *-------------------*
- STAMPA-DATI-PLICO.
- *-------------------*
- MOVE W-NUM-PLI-2001 TO W-DATI-NUM-ST
- MOVE W-COSTO-PLI-2001 TO W-DATI-COSTO-ST
- ADD W-COSTO-PLI-2001 TO COSTO-TOTALE
- WRITE REC-FILE-STAMPA FROM W-REC-DATI-PLICHI
- .
- *-------------------*
- STAMPA-COSTO-TOTALE.
- *-------------------*
- IF W-DIP-PLI-01 NOT = DIP-ATTUALE OR NUM-RIGHE-DATI > MAX-RIGHE
- MOVE COSTO-TOTALE TO W-COSTO-TOT-ST
- WRITE REC-FILE-STAMPA FROM W-REC-TOTALE
- INITIALIZE COSTO-TOTALE
- END-IF
- .
- *----------------*
- LETTURA-FILEPLI.
- *----------------*
- READ FILEPLI INTO W-REC-FILE-PLI-2001
- AT END MOVE 1 TO EOF-FILE-PLI-2001
- .
- *----------------*
- LETTURA-FILECON.
- *----------------*
- READ FILECON INTO W-REC-FILE-PLI-CONTIGUI
- AT END MOVE 1 TO EOF-FILE-PLI-CONTIGUI
- .
- *----------------*
- LETTURA-FILEDES.
- *----------------*
- READ FILEFIL INTO W-REC-FILE-DESCR
- AT END MOVE 1 TO EOF-FILE-DESCR
- .
- *---------*
- FINE-PGM.
- *---------*
- CLOSE FILEPLI
- FILECON
- FILEDES
- FILESTA
- DISPLAY 'FINE PGM' NOME-PGM
- GOBACK
- .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement