Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- PROGRAM-ID. STADB08B.
- AUTHOR. MAZZAROLO MATTEO.
- DATE-WRITTEN. 2010-12-28.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT FILEANA ASSIGN TO FILEANA.
- SELECT FILESCA ASSIGN TO FILESCA.
- DATA DIVISION.
- FILE SECTION.
- FD FILEANA LABEL RECORD IS STANDARD.
- 01 REC-FILEANA PIC X(200).
- FD FILESCA LABEL RECORD IS STANDARD.
- 01 REC-FILESCA PIC X(200).
- WORKING-STORAGE SECTION.
- * INFO PROGRAMMA
- 01 NOME-PGM PIC X(08) VALUE 'STADB08B'.
- * TRACCIATO FILEANA
- 01 W-REC-ANAGRAFICA.
- 03 FISCALE-ANA PIC X(16).
- 03 NOME-ANA PIC X(30).
- 03 COGNOME-ANA PIC X(30).
- 03 LUOGO-ANA PIC X(30).
- 03 STATO-ANA PIC X(01).
- * TRACCIATO FILESCA
- 01 W-REC-SCARTI
- 03 FISCALE-ANA-SCARTI PIC X(16).
- 03 DATA-RICHIESTA-SCARTI PIC X(10).
- 03 DATA-PRIMO-ARRIVO-SCARTI PIC X(10).
- * COMODI
- 01 COMODI.
- 02 Z-SQL PIC -(4) VALUE ZERO.
- * PER ABEND
- 01 DAMP PIC X VALUE SPACE.
- 01 DUMP REDIFINES DAMP PIC S9.
- * DATI SKEDA-PARAMETRO
- 01 SKEDA-PARAMETRO.
- 03 SK-DATA-OGGI PIC X(10).
- * DATA ATTUALE
- 01 DATA-ATTUALE PIC X(10).
- 01 DATA-OGGI REDIFINES DATA-ATTUALE
- 03 DATA-OGGI-ANNO PIC X(04).
- 03 FILLER PIC X(01).
- 03 DATA-OGGI-MESE PIC X(02).
- 03 FILLER PIC X(01).
- 03 DATA-OGGI-GIORNO PIC X(02).
- * DATA DI 60 GIORNI FA
- 01 DATA-60-GIORNI-FA
- 01 DATA-COMODO REDIFINES DATA-60-GIORNI-FA
- 03 DATA-COMODO-ANNO PIC 9(04).
- 03 FILLER PIC X(01).
- 03 DATA-COMODO-MESE PIC 9(02).
- 03 FILLER PIC X(01).
- 03 DATA-COMODO-GIORNO PIC 9(02).
- * END OF FILE
- 01 EOF-FILEANA PIC X(01).
- * INCLUDE TABELLE DB2
- 01 EXEC SQL INCLUDE SQLCA END-EXEC.
- 01 EXEC SQL INCLUDE VC00TA01 END-EXEC.
- 01 EXEC SQL INCLUDE VC00TA02 END-EXEC.
- * CONTATORI TABELLE DB2
- 01 CONT-NOMINATIVO-VC0ULTINFO PIC S9(09) COMP-3 VALUE ZERO.
- * CURS-DATA-RICHIESTA
- EXEC SQL
- SELECT *
- INTO :VC00TAB01
- FROM VC0INFO
- WHERE FISCALE_INFO = FISCALE-INFO
- ORDER BY DATA_RICHIESTA DESC
- FOR FETCH ONLY
- END-EXEC.
- * ALTRE VARIABILI
- 01 STRINGA-AGRATE-BRIANZA PIC X(15) VALUE 'AGRATE BRIANZA'.
- 01 STRINGA-STATO-ANA-R PIC X(01) VALUE 'R'.
- 01 SW-ERRORE-SK-PARAMETRO PIC 9(06) VALUE ZERO.
- 01 CONT-RIGHE-SCARTI PIC 9(06) VALUE ZERO.
- 01 CONT-PROV-NASC PIC 9(06) VALUE ZERO.
- 01 CONT-NOMINATIVI-ELIMINATI PIC 9(06) VALUE ZERO.
- PROCEDURE DIVISION.
- *------
- MAIN.
- *------
- PERFORM INIZIALIZZA
- PERFORM LEGGI-FILEANA
- PERFORM CONTROLLA-ANAGRAFICA
- UNTIL EOF-FILEANA = 1
- PERFORM REPORT-FIME-PGM
- PERFORM FINE-PGM
- .
- *-------------
- INIZIALIZZA.
- *-------------
- DISPLAY 'INIZIO PGM ' NOME-PGM
- OPEN INPUT FILEANA
- OUTPUT FILESCA
- ACCEPT SKEDA-PARAMETRO
- MOVE SK-DATA-OGGI TO DATA-ATTUALE
- IF DATA-OGGI-ANNO NOT NUMERIC
- OR DATA-OGGI-MESE NOT NUMERIC
- OR DATA-OGGI-GIORNO NOT NUMERIC
- MOVE 1 TO SW-ERRORE-SKEDA-PARAMETRO
- ELSE
- MOVE DATA-ATTUALE TO DATA-DUE-MESI-FA
- PERFORM VALORIZZA-DATA-COMODO
- END-IF
- .
- *-----------------------
- VALORIZZA-DATA-COMODO.
- *-----------------------
- EVALUATE DATA-COMODO-MESE
- WHEN 05
- WHEN 07
- WHEN 10
- WHEN 12
- WHEN 11
- WHEN 06
- IF DATA-COMODO-GIORNO > 30
- MOVE 01 TO DATA-COMODO-GIORNO
- SUBTRACT 01 FROM DATA-COMODO-MESE
- ELSE
- ADD 01 TO DATA-COMODO-GIORNO
- SUBTRACT 02 FROM DATA-COMODO-MESE
- END-IF
- WHEN 01
- IF DATA-COMODO-GIORNO = 30
- MOVE 01 TO DATA-COMODO-GIORNO
- MOVE 12 TO DATA-COMODO-MESE
- END-IF
- IF DATA-COMODO-GIORNO = 31
- MOVE 02 TO DATA-COMODO-GIORNO
- MOVE 12 TO DATA-COMODO-MESE
- END-IF
- IF DATA-COMODO-GIORNO < 31
- ADD 01 TO DATA-COMODO-GIORNO
- MOVE 11 TO DATA-COMODO-MESE
- END-IF
- SUBTRACT 01 FROM DATA-COMODO-ANNO
- WHEN 02
- ADD 02 TO DATA-COMODO-GIORNO
- MOVE 12 TO DATA-COMODO-MESE
- SUBTRACT 01 FROM DATA-COMODO-ANNO
- WHEN 03
- IF DATA-COMODO-GIORNO = 01
- MOVE 31 TO DATA-COMODO-GIORNO
- MOVE 12 TO DATA-COMODO-MESE
- SUBTRACT 01 FROM DATA-COMODO-ANNO
- ELSE
- SUBTRACT 1 FROM DATA-COMODO-GIORNO
- MOVE 01 TO DATA-COMODO-MESE
- WHEN 04
- IF DATA-COMODO-GIORNO = 01
- MOVE 31 TO DATA-OGGI-GIORNO
- MOVE 01 TO DATA-OGGI-MESE
- END-IF
- IF DATA-COMODO-GIORNO = 30
- MOVE 01 TO DATA-OGGI-GIORNO
- MOVE 03 TO DATA-OGGI-MESE
- END-IF
- IF DATA-COMODO-GIORNO > 01 AND DATA-OGGI-GIORNO < 30
- SUBTRACT 01 FROM DATA-OGGI-GIORNO
- MOVE 02 TO DATA-OGGI-MESE
- END-IF
- WHEN 08
- IF DATA-COMODO-GIORNO = 30
- MOVE 01 TO DATA-COMODO-GIORNO
- MOVE 07 TO DATA-COMODO-MESE
- END-IF
- IF DATA-COMODO-GIORNO = 31
- MOVE 02 TO DATA-COMODO-GIORNO
- MOVE 07 TO DATA-COMODO-MESE
- END-IF
- IF DATA-COMODO-GIORNO < 31
- ADD 01 TO DATA-COMODO-GIORNO
- MOVE 06 TO DATA-COMODO-MESE
- END-IF
- WHEN 09
- IF DATA-COMODO-GIORNO > 29
- MOVE 01 TO DATA-COMODO-GIORNO
- MOVE 08 TO DATA-COMODO-MESE
- ELSE
- ADD 02 TO DATA-COMODO-GIORNO
- MOVE 07 FROM DATA-COMODO-MESE
- END-IF
- WHEN OTHER
- MOVE 1 TO SW-ERRORE-SK-PARAMETRO
- END-EVALUATE
- .
- *----------------------
- CONTROLLA-ANAGRAFICA.
- *----------------------
- IF LUOGO-ANA = STRINGA-AGRATE-BRIANZA
- PERFORM UPDATE-VC0INFO-LUOGO-ANA
- ADD 1 TO CONT-NASC-PROV
- END-IF
- IF STATO-ANA = STRINGA-STATO-ANA-R AND SW-ERRORE-SK-PARAMETRO = 0
- PERFORM CONTROLLA-NOMINATIVO
- END-IF
- PERFORM LETTURA-FILEANA
- .
- *--------------------------
- UPDATE-VC0INFO-LUOGO-ANA.
- *--------------------------
- INITIALIZE VC0INFO
- MOVE 'MB' TO PROV-NASCITA-INFO
- MOVE FISCALE-ANA TO FISCALE-INFO
- MOVE LUOGO-ANA TO LUOGO-INFO
- EXEC SQL
- UPDATE VC0INFO
- SET PROV_NASCITA_INFO = :PROV-NASCITA-INFO
- WHERE FISCALE_INFO = :FISCALE-INFO
- AND LUOGO_INFO = :LUOGO-INFO
- END-EXEC
- IF SQLCODE NOT = 100 AND NOT = 0
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE IN UPDATE IN TABELLA VC0INFO PER IL CAMBIO DI PROV_NASCITA_INFO'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- DISPLAY 'LUOGO_INFO: ' LUOGO-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *----------------------
- CONTROLLA-NOMINATIVO.
- *----------------------
- PERFORM APRI-CURS-DATA-RICHIESTA
- PERFORM FETCH-CURS-DATA-RICHIESTA
- IF SQLCODE = 0 AND DATA-RICHIESTA > DATA-COMODO
- PERFORM SELECT-COUNT-NOMINATIVO-VC0ULTINFO
- EVALUATE CONT-NOMINATIVO-VC0ULTINFO
- WHEN 1
- PERFORM DELETE-NOMINATIVO-VC0INFO
- PERFORM DELETE-NOMINATIVO-VC0ULTINFO
- ADD 1 TO CONT-NOMINATIVI-ELIMINATI
- WHEN < 1
- PERFORM SCRIVI-FILESCA
- ADD 1 TO CONT-RIGHE-SCARTI
- WHEN > 1
- DISPLAY 'SONO STATE TROVATE 'CONT-NOMINATIVO-VC0ULTINFO' OCCORRENZE
- - 'DEL CODICE FISCALE 'FISCALE-ULTINFO' NELLA TABELLA VC0ULTINFO;'
- END-EVALUATE
- INITIALIZE CONT-NOMINATIVO-VC0ULTINFO
- END-IF
- PERFORM CHIUDI-CURS-DATA-RICHIESTA
- .
- *------------------------------------
- SELECT-COUNT-NOMINATIVO-VC0ULTINFO.
- *------------------------------------
- INITIALIZE VC00TAB02
- MOVE FISCALE-INFO TO FISCALE-ULTINFO
- EXEC SQL
- SELECT COUNT(*)
- INTO :CONT-NOMINATIVO-VC0ULTINFO
- FROM VC0ULTINFO
- WHERE FISCALE_ULTINFO = :FISCALE-ULTINFO
- END-EXEC
- IF SQLCODE NOT = ZERO
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE IN SELECT-COUNT IN TABELLA VC0ULTINFO'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *---------------------------
- DELETE-NOMINATIVO-VC0INFO.
- *---------------------------
- EXEC SQL
- DELETE *
- FROM VC0INFO
- WHERE FISCALE_INFO = :FISCALE-INFO
- END-EXEC
- IF SQLCODE NOT = 0
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE IN DELETE IN TABELLA VC0INFO'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *------------------------------
- DELETE-NOMINATIVO-VC0ULTINFO.
- *------------------------------
- EXEC SQL
- DELETE *
- FROM VC0ULTINFO
- WHERE FISCALE_ULTINFO = :FISCALE-ULTINFO
- END-EXEC
- IF SQLCODE NOT = 0
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE IN DELETE IN TABELLA VC0ULTINFO'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *----------------
- SCRIVI-FILESCA.
- *----------------
- MOVE FISCALE-ANA TO FISCALE-ANA-SCARTI
- MOVE DATA-RICHIESTA TO DATA-RICHIESTA-SCARTI
- MOVE DATA-PRIMO-ARRIVO TO DATA-PRIMO-ARRIVO-SCARTI
- WRITE REC-FILESCA FROM W-REC-SCARTI
- .
- *--------------------------
- APRI-CURS-DATA-RICHIESTA.
- *--------------------------
- EXEC SQL
- OPEN CURS-DATA-RICHIESTA
- END-EXEC
- IF SQLCODE NOT = 0
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE DURANTE L''APERTURA DEL CURSORE'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *---------------------------
- FETCH-CURS-DATA-RICHIESTA.
- *---------------------------
- EXEC SQL
- FETCH CURS-DATA-RICHIESTA
- INTO :VC00TAB01
- END-EXEC
- IF SQLCODE NOT = 0 AND NOT = 100
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE DURANTE IL FETCH DEL CURSORE'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *----------------------------
- CHIUDI-CURS-DATA-RICHIESTA.
- *----------------------------
- EXEC SQL
- CLOSE CURS-DATA-RICHIESTA
- END-EXEC
- IF SQLCODE NOT = 0
- MOVE SQLCODE TO Z-SQL
- DISPLAY 'ERRORE INCHIUSURA DEL CURSORE'
- DISPLAY 'SQLCODE: ' Z-SQL
- DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
- ADD 1 TO DUMP
- END-IF
- .
- *---------------
- LEGGI-FILEANA.
- *---------------
- READ FILEANA INTO W-REC-ANAGRAFICA
- AT END MOVE 1 TO EOF-FILEANA
- .
- *-----------------
- REPORT-FINE-PGM.
- *-----------------
- IF SW-ERRORE-SK-PARAMETRO = 0
- DISPLAY 'SONO STATE AGGIUNTE 'CONT-RIGHE-SCARTI' RIGHE AL FILE SCARTI;'
- DISPLAY 'SONO STATE ELIMINATI 'CONT-NOMINATIVI-ELIMINATI' NOMINATIVI'
- - 'DALLE TABELLE VC0INFO E VC0ULTINFO;'
- DISPLAY '
- ELSE
- DISPLAY 'E'' STATO TROVATO UN ERRORE NELLA SKEDA PARAMETRO IN SK-DATA-OGGI,'
- DISPLAY 'NON E'' STATO POSSIBILE ESEGUIRE IL CONTROLLO PER I NOMINATIVI REVOCATI'
- END-IF
- DISPLAY 'SONO STATI AGGIORNATE LE PROVINCIA DI NASCITA IN ''MB'' '
- - 'DI 'CONT-PROV-NASC' CODICI FISCALI NELLA TABELLA VC0INFO'
- .
- *----------
- FINE-PGM.
- *----------
- CLOSE FILEANA
- FILESCA
- DISPLAY 'FINE PGM' NOME-PGM
- GOBACK
- .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement