Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID STA0007B.
- AUTHOR. BORDIN ALEX.
- *-----------------------------------------------
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT FILEPAN ASSIGN TO FILEPAN.
- SELECT FILEPAL ASSIGN TO FILEPAL.
- SELECT FILEDES ASSIGN TO FILEDES.
- SELECT FILEREP ASSIGN TO FILEREP.
- *
- DATA DIVISION.
- *
- FILE SECTION.
- FD FILEPAN
- LABEL RECORD IS STANDARD.
- 01 REC-FILE-PAN PIC X(200).
- *
- FD FILEPAL
- LABEL RECORD IS STANDARD.
- 01 REC-FILE-PAL PIC X(100).
- *
- FD FILEBLO
- LABEL RECORD IS STANDARD.
- 01 REC-FILE-DES PIC X(100).
- *
- FD FILESTA
- LABEL RECORD IS STANDARD.
- 01 REC-FILE-STA PIC X(100).
- *
- WORKING-STORAGE SECTION.
- *
- 01 NOME-PGM PIC X(08) VALUE 'STA0007B'.
- *TRACCIATO FILE-PAN
- 01 W-REC-FILE-PAN.
- 03 W-COD-DIP-PAN PIC 9(05).
- 03 W-NUM-PLI-PAN PIC 9(12).
- 03 W-COSTO-PAN PIC 9(07)V99.
- *TRACCIATO FILE-PAL
- 01 W-REC-FILE-PAL.
- 03 W-COD-DIP-PAL PIC 9(05).
- 03 W-NUM-PLI-PAL PIC 9(12).
- *TRACCIATO FILE-DES
- 01 W-REC-FILE-BLO.
- 03 W-COD-DIP-DES PIC 9(05).
- 03 W-DESCR-DES PIC X(30).
- *VARIABILI DI STAMPA
- 01 W-REC-DATA-PAG-ST.
- 03 FILLER PIC X.
- 03 FILLER PIC X(06) VALUE 'DATA: '.
- 03 W-REC-DATA-ST PIC X(10).
- 03 FILLER PIC X(52) VALUE SPACES.
- 03 FILLER PIC X(05) VALUE 'PAG: '.
- 03 W-REC-PAG-ST PIC 9(06) VALUE ZERO.
- 01 W-REC-DIPENDENZA-ST.
- 03 FILLER PIC X.
- 03 FILLER PIC X(12) VALUE 'DIPENDENZA: '.
- 03 W-REC-DIPENDENZA PIC 9(05).
- 01 W-REC-DESCR-ST.
- 03 FILLER PIC X.
- 03 FILLER PIC X(13) VALUE 'DESCRIZIONE: '.
- 03 W-REC-DESCR PIC X(30).
- 01 W-REC-INT-COLONNE-ST.
- 03 FILLER PIC X.
- 03 FILLER PIC X(12) VALUE 'NUMERO PLICO'.
- 03 FILLER PIC X(25) VALUE SPACES.
- 03 FILLER PIC X(11) VALUE 'COSTO PLICO'.
- 01 W-REC-DATI-FILE-REP-ST.
- 03 FILLER PIC X.
- 03 W-REC-NUM-PLI PIC X(12).
- 03 FILLER PIC X(25) VALUE SPACES.
- 03 W-COSTO-PLI PIC Z(06)9,99.
- 01 W-REC-TOTALE-ST.
- 03 FILLER PIC X.
- 03 FILLER PIC X(29).
- 03 FILLER PIC X(8) VALUE 'TOTALE: '.
- 03 W-REC-COSTO-TOT-ST PIC Z(06)9,99.
- *ALTRE VARIABILI
- 01 EOF-FILE-PAN PIC 9 VALUE ZERO.
- 01 EOF-FILE-PAL PIC 9 VALUE ZERO.
- 01 EOF-FILE-DES PIC 9 VALUE ZERO.
- 01 CONT-RIGHE-ST PIC 9(06) VALUE ZERO.
- 01 SKEDA PARAMETRO
- 03 SK-DATA PIC X(10) VALUE ZERO.
- 01 W-DIP-PAN-COM PIC 9(05) VALUE ZERO.
- 01 W-DIP-PAL-COM PIC 9(05) VALUE ZERO.
- 01 SW-DIP-PRESENTE PIC 9 VALUE ZERO.
- 01 SW-DESCRIZIONI PIC 9 VALUE ZERO.
- *
- PROCEDURE DIVISION.
- *
- MAIN.
- PERFORM INIZIO-PGM
- PERFORM LEGGI-FILE-PAN
- PERFORM LEGGI-FILE-PAL
- PERFORM LEGGI-FILE-DES
- PERFORM BILANCIA-DIP-PLI UNTIL EOF-FILE-PAN = 1 OR EOF-FILE-PAL = 1
- PERFORM SCRIVI-TOTALE
- PERFORM FINE-PGM.
- .
- *----------------*
- INIZIO-PGM.
- *----------------*
- DISPLAY 'INIZIO PGM: 'NOME-PGM.
- OPEN INPUT FILEPAN
- INPUT FILEPAL
- INPUT FILEDES
- OUTPUT FILEREP.
- ACCEPT SKEDA-PARAMETRO.
- MOVE SK-DATA TO W-REC-DATA-ST
- .
- *----------------*
- BILANCIA-DIP-PLI.
- *----------------*
- PERFORM CONTROLLA-RIGHE
- EVALUATE TRUE
- WHEN W-COD-DIP-PAN = W-COD-DIP-PAL
- PERFORM CONTROLLA-PLICO
- WHEN W-COD-DIP-PAN > W-COD-DIP-PAL
- PERFORM LEGGI-FILE-PAL
- WHEN W-COD-DIP-PAN < W-COD-DIP-PAL
- PERFORM LEGGI-FILE-PAN
- END-EVALUATE
- .
- *----------------*
- CONTROLLA-PLICO.
- *----------------*
- EVALUATE TRUE
- WHEN W-NUM-PLI-PAN = W-NUM-PLI-PAL
- PERFORM BILANCIA-FILE-DESCRIZIONI
- UNTIL SW-DESCRIZIONI = 1 OR EOF-FILE-DES = 1
- PERFORM CONTROLLA-NUOVA-DIP
- MOVE W-COD-DIP-PAN TO W-DIP-PAN-COM
- MOVE W-COD-DIP-PAL TO W-DIP-PAL-COM
- PERFORM SCRIVI-DATI
- PERFORM CALCOLA-TOTALE
- ADD 1 TO CONT-RIGHE-ST
- MOVE 1 TO SW-DIP-PRESENTE
- PERFORM LEGGI-FILE-PAL
- PERFORM LEGGI-FILE-PAN
- WHEN W-NUM-PLI-PAN > W-NUM-PLI-PAL
- PERFORM LEGGI-FILE-PAL
- WHEN W-NUM-PLI-PAN < W-NUM-PLI-PAL
- PERFORM LEGGI-FILE-PAN
- END-EVALUATE
- .
- *----------------*
- CONTROLLA-NUOVA-DIP.
- *----------------*
- IF SW-DIP-PRESENTE = 1
- IF W-DIP-PAN-COM NOT = W-COD-DIP-PAN OR W-DIP-PAL-COM NOT = W-COD-DIP-PAL
- PERFORM SCRIVI-TOTALE
- PERFORM NUOVA-PAGINA
- PERFORM INTESTA-NUOVA-DIP
- MOVE 0 TO SW-DIP-PRESENTE
- MOVE 0 TO SW-DESCRIZIONE
- MOVE 0 TO CONT-RIGHE-REP
- END-IF
- END-IF
- .
- *----------------*
- NUOVA-PAGINA.
- *----------------*
- INITIALIZE CONT-RIGHE-ST
- ADD 1 TO W-PAG-ST
- IF W-PAG-ST = 1
- WRITE REC-FILE-STA FROM W-REC-DATA-PAG-ST
- ELSE
- WRITE REC-FILE-STA FROM W-REC-DATA-PAG-ST AFTER PAGE
- END-IF
- .
- *----------------*
- INTESTA-NUOVA-DIP.
- *----------------*
- WRITE REC-FILE-STA FROM W-REC-DIPENDENZA-ST AFTER 2 LINES
- WRITE REC-FILE-STA FROM W-REC-DESCR-ST
- PERFORM INTESTA-COLONNE
- .
- *----------------*
- INTESTA-COLONNE.
- *----------------*
- WRITE REC-FILE-REP FROM W-REC-INT-COLONNE-ST AFTER 2 LINES
- .
- *----------------*
- VALORIZZA-DATI-FILE-STA.
- *----------------*
- MOVE W-COSTO-PAN TO W-COSTO-PLI
- MOVE W-NUM-PLI-PAN TO W-REC-NUM-PLI
- .
- *----------------*
- CALCOLA-TOTALE.
- *----------------*
- ADD W-COSTO-PAN TO W-REC-COSTO-TOT-ST
- .
- *----------------*
- SCRIVI-DATI.
- *----------------*
- PERFORM VALORIZZA-DATI-FILE-STA
- WRITE REC-FILE-STA FROM W-REC-FILE-DATI-REP-ST
- .
- *----------------*
- SCRIVI-TOTALE.
- *----------------*
- WRITE REC-FILE-STA FROM W-REC-TOTALE-ST
- INITIALIZE W-REC-COSTO-TOT-ST
- .
- *----------------*
- BILANCIA-FILE-DESCRIZIONI.
- *----------------*
- EVALUATE TRUE
- WHEN W-COD-DIP-PAN = W-COD-DIP-DES
- PERFORM VALORIZZA-INTESTAZIONI
- WHEN W-COD-DIP-PAN < W-COD-DIP-DES
- MOVE W-COD-DIP-PAN TO W-REC-DIPENDENZA
- PERFORM DESCR-MANCANTE
- MOVE 1 TO SW-DESCRIZIONI
- END-EVALUATE
- PERFORM LEFFI-FILE-DES
- .
- *----------------*
- CONTROLLA-RIGHE.
- *----------------*
- IF CONT-RIGHE-REP > 55
- PERFORM NUOVA-PAGINA
- PERFORM INTESTA-COLONNE
- MOVE 0 TO CONT-RIGHE-ST
- END-IF
- .
- *----------------*
- VALORIZZA-INTESTAZIONE.
- *----------------*
- MOVE W-COD-DIP-PAN TO W-REC-DIPENDENZA
- MOVE W-DESCR-DES TO W-REC-DESCR
- .
- *----------------*
- LEGGI-FILE-PAN.
- *----------------*
- READ FILEPAN INTO W-REC-FILE-PAN
- AT END MOVE 1 TO EOF-FILE-PAN
- .
- *----------------*
- LEGGI-FILE-PAL.
- *----------------*
- READ FILEPAL INTO W-REC-FILE-PAL
- AT END MOVE 1 TO EOF-FILE-PAL
- .
- *----------------*
- LEGGI-FILE-DES.
- *----------------*
- READ FILEDES INTO W-REC-FILE-DES
- AT END MOVE 1 TO EOF-FILE-DES
- .
- *----------------*
- SCRIVI-FILE-STA.
- *----------------*
- PERFORM VALORIZZA-REC-FILE-REP
- WRITE REC-FILE-STA FROM W-REC-FILE-STA.
- .
- *----------------*
- DESCR-MANCANTE.
- *----------------*
- MOVE 'DESCRIZIONE MANCANTE' TO W-REC-DESCR
- .
- *----------------*
- FINE-PGM.
- *----------------*
- CLOSE FILEPAN
- FILEPAL
- FILEDES
- FILESTA.
- DISPLAY 'FINE PGM: 'NOME-PGM.
- GOBACK.
- .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement