Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID. STA0006B.
- AUTHOR. MAZZAROLO MATTEO.
- DATE-WRITTEN. 2010-12-21
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT FILEBON ASSIGN TO FILEBON.
- SELECT FILEREP ASSIGN TO FILEREP.
- SELECT FILESCA ASSIGN TO FILESCA.
- DATA DIVISION.
- FILE SECTION.
- FD FILEBON LABEL RECORD IS STANDARD.
- 01 W-REC-FILE-BON PIC X(200).
- FD FILEREP LABEL RECORD IS STANDARD.
- 01 W-REC-FILE-REP PIC X(200).
- FD FILESCA LABEL RECORD IS STANDARD.
- 01 W-REC-FILE-SCA PIC X(200).
- WORKING-STORAGE SECTION.
- 01 NOME-PGM PIC X(08) VALUE 'STA0006B'.
- * TRACCIATO FILEBON *
- 01 W-REC-FILE-BON.
- 03 W-ABI-BON PIC 9(05).
- 03 W-DESCR-ABI-BON PIC 9(60).
- 03 W-COD-NDG-BON PIC 9(16).
- 03 W-COD-FISC-BON PIC X(16).
- 03 W-NOME-BON PIC X(30).
- 03 W-COGNOME-BON PIC X(30).
- 03 W-DATA-BON PIC X(10).
- 03 W-IMPORTO-BON PIC S9(15)V99.
- * RECORD INTESTAZIONE PAGINA *
- 01 W-REC-INT-PAG
- 03 FILLER PIC X.
- 03 W-REC-INT-DATA PIC X(10).
- 03 FILLER PIC X(50).
- 03 W-REC-INT-PAGINA PIC 9(06).
- * RECORD INTESTAZIONE BANCA*
- 01 W-REC-INT-BAN
- 03 FILLER PIC X(06) VALUE 'ABI: '
- 03 W-REC-INT-ABI PIC 9(05).
- 03 FILLER PIC X(05) VALUE SPACES.
- 03 W-REC-INT-DES PIC X(60).
- * RECORD INTESTAZIONE DATI *
- 01 W-REC-INT-DATI
- 03 FILLER PIC X(03) VALUE 'NDG'.
- 03 FILLER PIC X(03) VALUE SPACES.
- 03 FILLER PIC X(16) VALUE 'CODICE FISCALE'.
- 03 FILLER PIC X(03) VALUE SPACES.
- 03 FILLER PIC X(13) VALUE 'DENOMINAZIONE'.
- 03 FILLER PIC X(51) VALUE SPACES.
- 03 FILLER PIC X(07) VALUE 'IMPORTO'.
- * RECORD DATI *
- 01 W-REC-DATI
- 03 W-REC-DATI-NDG PIC X(03).
- 03 FILLER PIC X(03) VALUE SPACES.
- 03 W-REC-DATI-COD PIC X(16).
- 03 FILLER PIC X(03) VALUE SPACES.
- 03 W-REC-DATI-DEN PIC X(61).
- 03 FILLER PIC X(03) VALUE SPACES.
- 03 W-REC-DATI-IMP PIC ZS9(15)V99.
- * RECORD IMPORTO TOTALE *
- 01 W-REC-TOT
- 03 FILLER PIC X(83) VALUE SPACES.
- 03 FILLER PIC X(16) VALUE 'IMPORTO TOTALE: '
- 03 W-REC-IMP-TOT PIC ZS9(15)V99.
- * TRACCIATO FILESCA *
- 01 W-REC-FILE-SCA.
- 03 W-ABI-SCA PIC 9(05).
- 03 W-DESCR-ABI-SCA PIC 9(60).
- 03 W-COD-NDG-SCA PIC 9(16).
- 03 W-COD-FISC-SCA PIC X(16).
- 03 W-NOME-SCA PIC X(30).
- 03 W-COGNOME-SCA PIC X(30).
- 03 W-DATA-SCA PIC X(10).
- 03 W-IMPORTO-SCA PIC S9(15)V99.
- * END-OF-FILE *
- 01 EOF-FILE-BON PIC 9(01) VALUE ZERO.
- * NOME TEMPORANEO *
- 01 NOME-TEMP PIC X(61).
- 01 FILLER REDIFINES NOME-TEMP.
- 03 NOME-ARRAY PIC X OCCURS 61 TIMES.
- 01 IND-CARATT PIC 9(02) VALUE ZERO.
- 01 IND-CARATT-COMODO PIC 9(02) VALUE ZERO.
- * VARIABILI AGGIUNTIVE *
- 01 CONT-RIGHE PIC 9(02) VALUE ZERO.
- 01 MAX-RIGHE PIC 9(02) VALUE ZERO.
- 01 ABI-ATTUALE PIC 9(05) VALUE ZERO.
- 01 SOMMA-TOTALE PIC ZS9(15)V99.
- 01 CONT-SPAZI PIC 9(02) VALUE ZERO.
- * SKEDA-PARAMETRO *
- 01 SKEDA-PARAMETRO.
- 03 SK-DATA-OGGI PIC X(10).
- PROCEDURE DIVISION.
- *-----*
- MAIN.
- *-----*
- PERFORM INIZIALIZZA
- PERFORM LETTURA-FILEBON
- PERFORM CONTROLLA-BANCA
- UNTIL EOF-FILE-BON = 1
- PERFORM STAMPA-TOTALE
- PERFORM FINE-PGM
- .
- *------------*
- INIZIALIZZA.
- *------------*
- DISPLAY 'INIZIO PGM ' NOME-PGM
- OPEN INPUT FILEBON
- OUTPUT FILEREP
- OUTPUT FILESCA
- MOVE 40 TO MAX-RIGHE
- MOVE 1 TO CONT-PAGINE
- ACCEPT SKEDA-PARAMETRO
- .
- *----------------*
- CONTROLLA-BANCA.
- *----------------*
- EVALUATE TRUE
- WHEN W-DATA-BON NOT = SK-DATA-OGGI
- PERFORM VALORIZZA-FILESCA
- PERFORM SCRITTURA-FILESCA
- PERFORM LETTURA-FILEBON
- WHEN W-ABI-BON > ABI-ATTUALE
- PERFORM STAMPA-TOTALE
- PERFORM VALORIZZA-INTESTAZIONI
- PERFORM STAMPA-INTESTAZIONI
- MOVE W-ABI-BON TO W-ABI-ATTUALE
- WHEN CONT-RIGHE >= MAX-RIGHE
- PERFORM VALORIZZA-INTESTAZIONI
- PERFORM STAMPA-INTESTAZIONI
- WHEN OTHER
- ADD W-IMPORTO-BON TO SOMMA-TOTALE
- ADD 1 TO CONT-RIGHE
- PERFORM VALORIZZA-DATI
- PERFORM STAMPA-DATI
- PERFORM LETTURA-FILEBON
- END-EVALUATE
- .
- *-----------------------*
- VALORIZZA-INTESTAZIONI.
- *-----------------------*
- MOVE SK-DATA-OGGI TO W-INT-DATA
- MOVE CONT-PAG TO W-INT-PAG
- MOVE W-ABI-BON TO W-INT-ABI
- MOVE W-DESCR-ABI-BON TO W-INT-DES
- .
- *--------------------*
- STAMPA-INTESTAZIONI.
- *--------------------*
- IF CONT-PAGINA = 1
- WRITE W-REC-FILE-REP FROM W-REC-INT-PAG
- ELSE
- WRITE W-REC-FILE-REP FROM W-REC-INT-PAG AFTER PAGE
- ADD 1 TO CONT-PAGINE
- INITIALIZE CONT-RIGHE
- END-IF
- IF W-ABI-BON NOT = ABI-ATTUALE
- WRITE W-REC-FILE-REP FROM W-REC-INT-BAN AFTER 2 LINES
- WRITE W-REC-FILE-REP FROM W-REC-INT-DATI AFTER 2 LINES
- ELSE
- WRITE W-REC-FILE-REP FROM W-REC-INT-DATI AFTER 5 LINES
- END-IF
- .
- *---------------*
- VALORIZZA-DATI.
- *---------------*
- MOVE W-COD-NDG-BON TO W-REC-DATI-NDG
- MOVE W-COD-NDG-COD TO W-REC-DATI-COD
- PERFORM VALORIZZA-DENOMINAZIONE
- MOVE W-IMPORTO-BON TO W-REC-DATI-IMP
- .
- *------------------------*
- VALORIZZA-DENOMINAZIONE.
- *------------------------*
- IF W-COD-FISC-BON IS NUMERIC
- ELSE
- MOVE W-NOME-BON INTO NOME-TEMP
- PERFORM ESCI-PARAGRAFO
- VARYING IND-CARATT FROM 1 BY 1
- UNTIL IND-CARATT > 30
- STRING W-NOME-BON DELIMITED BY SIZE INTO W-REC-DATI-DEN
- STRING " " W-CONGOME-BON DELIMITED BY SIZE INTO W-REC-DATI-DEN
- WITH POINTER IND-CARATT-COMODO
- END-IF
- .
- *---------------------*
- ESCI-PARAGRAFO.
- *---------------------*
- IF NOME-ARAY(IND-CARATT) = " " AND NOME-ARRAY(IND-CARATT + 1) = " "
- MOVE IND-CARATT INTO IND-CARATT-COMODO
- MOVE 31 TO IND-CARATT
- END-IF
- .
- *--------------*
- STAMPA-TOTALE.
- *--------------*
- IF CONT-PAGINE > 1 OR SOMMA-TOTALE > 0
- WRITE W-REC-FILE-REP FROM W-REC-TOT
- INITIALIZE SOMMA-TOTALE
- END-IF
- .
- *------------------*
- VALORIZZA-FILESCA.
- *------------------*
- MOVE W-REC-FILE-BON IN W-REC-FILE-SCA
- .
- *------------------*
- SCRITTURA-FILESCA.
- *------------------*
- WRITE W-REC-FILE-REP FROM W-REC-FILE-SCA
- .
- *----------------*
- LETTURA-FILEBON.
- *----------------*
- READ FILEBON INTO W-REC-FILE-BON
- AT END MOVE 1 TO EOF-FILE-SAVE
- .
- *---------*
- FINE-PGM.
- *---------*
- CLOSE FILEBON
- FILEREP
- FILESCA
- DISPLAY 'FINE PGM' NOME-PGM
- GOBACK
- .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement