Advertisement
Guest User

Untitled

a guest
Jul 8th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 13.82 KB | None | 0 0
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. STADB08B.
  3.        AUTHOR. MAZZAROLO MATTEO.
  4.        DATE-WRITTEN. 2010-12-28.
  5.  
  6.        ENVIRONMENT DIVISION.
  7.  
  8.        INPUT-OUTPUT SECTION.
  9.  
  10.        FILE-CONTROL.
  11.        SELECT FILEANA    ASSIGN TO FILEANA.
  12.        SELECT FILESCA    ASSIGN TO FILESCA.
  13.  
  14.        DATA DIVISION.
  15.  
  16.        FILE SECTION.
  17.  
  18.        FD FILEANA LABEL RECORD IS STANDARD.
  19.        01 REC-FILEANA                      PIC X(200).
  20.        FD FILESCA LABEL RECORD IS STANDARD.
  21.        01 REC-FILESCA                      PIC X(200).
  22.  
  23.        WORKING-STORAGE SECTION.
  24.  
  25.       * INFO PROGRAMMA
  26.         01 NOME-PGM                        PIC X(08) VALUE 'STADB08B'.
  27.  
  28.       * TRACCIATO FILEANA
  29.        01 W-REC-ANAGRAFICA.
  30.          03 FISCALE-ANA                    PIC X(16).
  31.          03 NOME-ANA                       PIC X(30).
  32.          03 COGNOME-ANA                    PIC X(30).
  33.          03 LUOGO-ANA                      PIC X(30).
  34.          03 STATO-ANA                      PIC X(01).
  35.  
  36.       * TRACCIATO FILESCA
  37.        01 W-REC-SCARTI
  38.          03 FISCALE-ANA-SCARTI             PIC X(16).
  39.          03 DATA-RICHIESTA-SCARTI          PIC X(10).
  40.          03 DATA-PRIMO-ARRIVO-SCARTI       PIC X(10).
  41.  
  42.       * COMODI
  43.        01 COMODI.
  44.          02 Z-SQL                          PIC -(4) VALUE ZERO.
  45.  
  46.       * PER ABEND
  47.        01 DAMP                             PIC X VALUE SPACE.
  48.        01 DUMP REDIFINES DAMP              PIC S9.
  49.  
  50.       * DATI SKEDA-PARAMETRO
  51.        01 SKEDA-PARAMETRO.
  52.          03 SK-DATA-OGGI                   PIC X(10).
  53.  
  54.       * DATA ATTUALE
  55.        01 DATA-ATTUALE                     PIC X(10).
  56.        01 DATA-OGGI REDIFINES DATA-ATTUALE
  57.          03 DATA-OGGI-ANNO                 PIC X(04).
  58.          03 FILLER                         PIC X(01).
  59.          03 DATA-OGGI-MESE                 PIC X(02).
  60.          03 FILLER                         PIC X(01).
  61.          03 DATA-OGGI-GIORNO               PIC X(02).
  62.  
  63.       * DATA DI 60 GIORNI FA
  64.        01 DATA-60-GIORNI-FA
  65.        01 DATA-COMODO REDIFINES DATA-60-GIORNI-FA
  66.          03 DATA-COMODO-ANNO               PIC 9(04).
  67.          03 FILLER                         PIC X(01).
  68.          03 DATA-COMODO-MESE               PIC 9(02).
  69.          03 FILLER                         PIC X(01).
  70.          03 DATA-COMODO-GIORNO             PIC 9(02).
  71.  
  72.       * END OF FILE
  73.        01 EOF-FILEANA                      PIC X(01).
  74.  
  75.       * INCLUDE TABELLE DB2
  76.        01 EXEC SQL INCLUDE SQLCA           END-EXEC.
  77.        01 EXEC SQL INCLUDE VC00TA01        END-EXEC.
  78.        01 EXEC SQL INCLUDE VC00TA02        END-EXEC.
  79.  
  80.       * CONTATORI TABELLE DB2
  81.        01 CONT-NOMINATIVO-VC0ULTINFO       PIC S9(09) COMP-3 VALUE ZERO.
  82.  
  83.       * CURS-DATA-RICHIESTA
  84.          EXEC SQL
  85.            SELECT *
  86.            INTO :VC00TAB01
  87.            FROM VC0INFO
  88.            WHERE FISCALE_INFO = FISCALE-INFO
  89.            ORDER BY DATA_RICHIESTA DESC
  90.            FOR FETCH ONLY
  91.          END-EXEC.
  92.  
  93.       * ALTRE VARIABILI
  94.        01 STRINGA-AGRATE-BRIANZA           PIC X(15) VALUE 'AGRATE BRIANZA'.
  95.        01 STRINGA-STATO-ANA-R              PIC X(01) VALUE 'R'.
  96.        01 SW-ERRORE-SK-PARAMETRO           PIC 9(06) VALUE ZERO.
  97.        01 CONT-RIGHE-SCARTI                PIC 9(06) VALUE ZERO.
  98.        01 CONT-PROV-NASC                   PIC 9(06) VALUE ZERO.
  99.        01 CONT-NOMINATIVI-ELIMINATI        PIC 9(06) VALUE ZERO.
  100.  
  101.        PROCEDURE DIVISION.
  102.  
  103.       *------
  104.        MAIN.
  105.       *------
  106.          PERFORM INIZIALIZZA
  107.  
  108.          PERFORM LEGGI-FILEANA
  109.          PERFORM CONTROLLA-ANAGRAFICA
  110.            UNTIL EOF-FILEANA = 1
  111.  
  112.          PERFORM REPORT-FIME-PGM
  113.  
  114.          PERFORM FINE-PGM
  115.          .
  116.  
  117.       *-------------
  118.        INIZIALIZZA.
  119.       *-------------
  120.          DISPLAY 'INIZIO PGM ' NOME-PGM
  121.  
  122.          OPEN INPUT  FILEANA
  123.               OUTPUT FILESCA
  124.  
  125.          ACCEPT SKEDA-PARAMETRO
  126.          MOVE SK-DATA-OGGI TO DATA-ATTUALE
  127.  
  128.          IF DATA-OGGI-ANNO   NOT NUMERIC
  129.          OR DATA-OGGI-MESE   NOT NUMERIC
  130.          OR DATA-OGGI-GIORNO NOT NUMERIC
  131.            MOVE 1 TO SW-ERRORE-SKEDA-PARAMETRO
  132.          ELSE
  133.            MOVE DATA-ATTUALE TO DATA-DUE-MESI-FA
  134.            PERFORM VALORIZZA-DATA-COMODO
  135.          END-IF
  136.          .
  137.  
  138.       *-----------------------
  139.        VALORIZZA-DATA-COMODO.
  140.       *-----------------------
  141.          EVALUATE DATA-COMODO-MESE
  142.            WHEN 05
  143.            WHEN 07
  144.            WHEN 10
  145.            WHEN 12
  146.            WHEN 11
  147.            WHEN 06
  148.              IF DATA-COMODO-GIORNO > 30
  149.                MOVE 01        TO DATA-COMODO-GIORNO
  150.                SUBTRACT 01  FROM DATA-COMODO-MESE
  151.              ELSE
  152.                ADD  01        TO DATA-COMODO-GIORNO
  153.                SUBTRACT 02   FROM DATA-COMODO-MESE
  154.              END-IF
  155.            WHEN 01
  156.              IF DATA-COMODO-GIORNO = 30
  157.                MOVE 01        TO DATA-COMODO-GIORNO
  158.                MOVE 12        TO DATA-COMODO-MESE
  159.              END-IF
  160.              IF DATA-COMODO-GIORNO = 31
  161.                MOVE 02        TO DATA-COMODO-GIORNO
  162.                MOVE 12        TO DATA-COMODO-MESE
  163.              END-IF
  164.              IF DATA-COMODO-GIORNO < 31
  165.                ADD 01         TO DATA-COMODO-GIORNO
  166.                MOVE 11        TO DATA-COMODO-MESE
  167.              END-IF
  168.              SUBTRACT 01    FROM DATA-COMODO-ANNO
  169.            WHEN 02
  170.              ADD 02           TO DATA-COMODO-GIORNO
  171.              MOVE 12          TO DATA-COMODO-MESE
  172.              SUBTRACT 01    FROM DATA-COMODO-ANNO
  173.            WHEN 03
  174.              IF DATA-COMODO-GIORNO = 01
  175.                MOVE 31        TO DATA-COMODO-GIORNO
  176.                MOVE 12        TO DATA-COMODO-MESE
  177.                SUBTRACT 01  FROM DATA-COMODO-ANNO
  178.              ELSE
  179.                SUBTRACT 1   FROM DATA-COMODO-GIORNO
  180.                MOVE 01        TO DATA-COMODO-MESE
  181.            WHEN  04
  182.              IF DATA-COMODO-GIORNO = 01
  183.                MOVE 31        TO DATA-OGGI-GIORNO
  184.                MOVE 01        TO DATA-OGGI-MESE
  185.              END-IF
  186.              IF DATA-COMODO-GIORNO = 30
  187.                MOVE 01        TO DATA-OGGI-GIORNO
  188.                MOVE 03        TO DATA-OGGI-MESE
  189.              END-IF
  190.              IF DATA-COMODO-GIORNO > 01 AND DATA-OGGI-GIORNO < 30
  191.                SUBTRACT 01  FROM DATA-OGGI-GIORNO
  192.                MOVE 02        TO DATA-OGGI-MESE
  193.              END-IF
  194.            WHEN 08
  195.              IF DATA-COMODO-GIORNO = 30
  196.                MOVE 01        TO DATA-COMODO-GIORNO
  197.                MOVE 07        TO DATA-COMODO-MESE
  198.              END-IF
  199.              IF DATA-COMODO-GIORNO = 31
  200.                MOVE 02        TO DATA-COMODO-GIORNO
  201.                MOVE 07        TO DATA-COMODO-MESE
  202.              END-IF
  203.              IF DATA-COMODO-GIORNO < 31
  204.                ADD 01         TO DATA-COMODO-GIORNO
  205.                MOVE 06        TO DATA-COMODO-MESE
  206.              END-IF
  207.            WHEN 09
  208.              IF DATA-COMODO-GIORNO > 29
  209.                MOVE 01        TO DATA-COMODO-GIORNO
  210.                MOVE 08        TO DATA-COMODO-MESE
  211.              ELSE
  212.                ADD 02         TO DATA-COMODO-GIORNO
  213.                MOVE 07      FROM DATA-COMODO-MESE
  214.              END-IF
  215.            WHEN OTHER
  216.              MOVE 1 TO SW-ERRORE-SK-PARAMETRO
  217.          END-EVALUATE
  218.          .
  219.  
  220.       *----------------------
  221.        CONTROLLA-ANAGRAFICA.
  222.       *----------------------
  223.          IF LUOGO-ANA = STRINGA-AGRATE-BRIANZA
  224.            PERFORM UPDATE-VC0INFO-LUOGO-ANA
  225.            ADD 1 TO CONT-NASC-PROV
  226.          END-IF
  227.          IF STATO-ANA = STRINGA-STATO-ANA-R AND SW-ERRORE-SK-PARAMETRO = 0
  228.            PERFORM CONTROLLA-NOMINATIVO
  229.          END-IF
  230.          PERFORM LETTURA-FILEANA
  231.          .
  232.  
  233.       *--------------------------
  234.        UPDATE-VC0INFO-LUOGO-ANA.
  235.       *--------------------------
  236.          INITIALIZE VC0INFO
  237.  
  238.          MOVE 'MB'        TO PROV-NASCITA-INFO
  239.          MOVE FISCALE-ANA TO FISCALE-INFO
  240.          MOVE LUOGO-ANA   TO LUOGO-INFO
  241.  
  242.          EXEC SQL
  243.            UPDATE VC0INFO
  244.              SET PROV_NASCITA_INFO = :PROV-NASCITA-INFO
  245.              WHERE FISCALE_INFO    = :FISCALE-INFO
  246.              AND   LUOGO_INFO      = :LUOGO-INFO
  247.          END-EXEC
  248.  
  249.          IF SQLCODE NOT = 100 AND NOT = 0
  250.            MOVE SQLCODE TO Z-SQL
  251.            DISPLAY 'ERRORE IN UPDATE IN TABELLA VC0INFO PER IL CAMBIO DI PROV_NASCITA_INFO'
  252.            DISPLAY 'SQLCODE: ' Z-SQL
  253.            DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  254.            DISPLAY 'LUOGO_INFO: ' LUOGO-INFO
  255.            ADD 1 TO DUMP
  256.          END-IF
  257.          .
  258.  
  259.       *----------------------
  260.        CONTROLLA-NOMINATIVO.
  261.       *----------------------
  262.          PERFORM APRI-CURS-DATA-RICHIESTA
  263.          PERFORM FETCH-CURS-DATA-RICHIESTA
  264.          IF SQLCODE = 0 AND DATA-RICHIESTA > DATA-COMODO
  265.            PERFORM SELECT-COUNT-NOMINATIVO-VC0ULTINFO
  266.            EVALUATE CONT-NOMINATIVO-VC0ULTINFO
  267.              WHEN 1
  268.                PERFORM DELETE-NOMINATIVO-VC0INFO
  269.                PERFORM DELETE-NOMINATIVO-VC0ULTINFO
  270.                ADD 1 TO CONT-NOMINATIVI-ELIMINATI
  271.              WHEN < 1
  272.                PERFORM SCRIVI-FILESCA
  273.                ADD 1 TO CONT-RIGHE-SCARTI
  274.              WHEN > 1
  275.                DISPLAY 'SONO STATE TROVATE 'CONT-NOMINATIVO-VC0ULTINFO' OCCORRENZE
  276.      -                'DEL CODICE FISCALE 'FISCALE-ULTINFO' NELLA TABELLA VC0ULTINFO;'
  277.           END-EVALUATE
  278.           INITIALIZE CONT-NOMINATIVO-VC0ULTINFO
  279.         END-IF
  280.         PERFORM CHIUDI-CURS-DATA-RICHIESTA
  281.         .
  282.  
  283.      *------------------------------------
  284.       SELECT-COUNT-NOMINATIVO-VC0ULTINFO.
  285.      *------------------------------------
  286.         INITIALIZE VC00TAB02
  287.  
  288.         MOVE FISCALE-INFO TO FISCALE-ULTINFO
  289.  
  290.         EXEC SQL
  291.           SELECT COUNT(*)
  292.           INTO :CONT-NOMINATIVO-VC0ULTINFO
  293.           FROM VC0ULTINFO
  294.           WHERE FISCALE_ULTINFO = :FISCALE-ULTINFO
  295.         END-EXEC
  296.  
  297.         IF SQLCODE NOT = ZERO
  298.           MOVE SQLCODE TO Z-SQL
  299.           DISPLAY 'ERRORE IN SELECT-COUNT IN TABELLA VC0ULTINFO'
  300.           DISPLAY 'SQLCODE: ' Z-SQL
  301.           DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  302.           ADD 1 TO DUMP
  303.         END-IF
  304.         .
  305.  
  306.      *---------------------------
  307.       DELETE-NOMINATIVO-VC0INFO.
  308.      *---------------------------
  309.         EXEC SQL
  310.           DELETE *
  311.           FROM VC0INFO
  312.           WHERE FISCALE_INFO = :FISCALE-INFO
  313.         END-EXEC
  314.  
  315.         IF SQLCODE NOT = 0
  316.           MOVE SQLCODE TO Z-SQL
  317.           DISPLAY 'ERRORE IN DELETE IN TABELLA VC0INFO'
  318.           DISPLAY 'SQLCODE: ' Z-SQL
  319.           DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  320.           ADD 1 TO DUMP
  321.         END-IF
  322.         .
  323.  
  324.      *------------------------------
  325.       DELETE-NOMINATIVO-VC0ULTINFO.
  326.      *------------------------------
  327.         EXEC SQL
  328.           DELETE *
  329.           FROM VC0ULTINFO
  330.           WHERE FISCALE_ULTINFO = :FISCALE-ULTINFO
  331.         END-EXEC
  332.  
  333.         IF SQLCODE NOT = 0
  334.           MOVE SQLCODE TO Z-SQL
  335.           DISPLAY 'ERRORE IN DELETE IN TABELLA VC0ULTINFO'
  336.           DISPLAY 'SQLCODE: ' Z-SQL
  337.           DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  338.           ADD 1 TO DUMP
  339.         END-IF
  340.         .
  341.  
  342.      *----------------
  343.       SCRIVI-FILESCA.
  344.      *----------------
  345.         MOVE FISCALE-ANA       TO FISCALE-ANA-SCARTI
  346.         MOVE DATA-RICHIESTA    TO DATA-RICHIESTA-SCARTI
  347.         MOVE DATA-PRIMO-ARRIVO TO DATA-PRIMO-ARRIVO-SCARTI
  348.  
  349.         WRITE REC-FILESCA FROM W-REC-SCARTI
  350.         .
  351.  
  352.      *--------------------------
  353.       APRI-CURS-DATA-RICHIESTA.
  354.      *--------------------------
  355.         EXEC SQL
  356.           OPEN CURS-DATA-RICHIESTA
  357.         END-EXEC
  358.  
  359.         IF SQLCODE NOT = 0
  360.           MOVE SQLCODE TO Z-SQL
  361.           DISPLAY 'ERRORE DURANTE L''APERTURA DEL CURSORE'
  362.           DISPLAY 'SQLCODE: ' Z-SQL
  363.           DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  364.           ADD 1 TO DUMP
  365.         END-IF
  366.         .
  367.  
  368.      *---------------------------
  369.       FETCH-CURS-DATA-RICHIESTA.
  370.      *---------------------------
  371.         EXEC SQL
  372.           FETCH CURS-DATA-RICHIESTA
  373.           INTO :VC00TAB01
  374.         END-EXEC
  375.  
  376.         IF SQLCODE NOT = 0 AND NOT = 100
  377.           MOVE SQLCODE TO Z-SQL
  378.           DISPLAY 'ERRORE DURANTE IL FETCH DEL CURSORE'
  379.           DISPLAY 'SQLCODE: ' Z-SQL
  380.           DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  381.           ADD 1 TO DUMP
  382.         END-IF
  383.         .
  384.  
  385.      *----------------------------
  386.       CHIUDI-CURS-DATA-RICHIESTA.
  387.      *----------------------------
  388.         EXEC SQL
  389.           CLOSE CURS-DATA-RICHIESTA
  390.         END-EXEC
  391.  
  392.         IF SQLCODE NOT = 0
  393.           MOVE SQLCODE TO Z-SQL
  394.           DISPLAY 'ERRORE INCHIUSURA DEL CURSORE'
  395.           DISPLAY 'SQLCODE: ' Z-SQL
  396.           DISPLAY 'FISCALE_INFO: ' FISCALE-INFO
  397.           ADD 1 TO DUMP
  398.         END-IF
  399.         .
  400.  
  401.      *---------------
  402.       LEGGI-FILEANA.
  403.      *---------------
  404.         READ FILEANA INTO W-REC-ANAGRAFICA
  405.           AT END MOVE 1 TO EOF-FILEANA
  406.         .
  407.  
  408.      *-----------------
  409.       REPORT-FINE-PGM.
  410.      *-----------------
  411.         IF SW-ERRORE-SK-PARAMETRO = 0
  412.           DISPLAY 'SONO STATE AGGIUNTE 'CONT-RIGHE-SCARTI' RIGHE AL FILE SCARTI;'
  413.           DISPLAY 'SONO STATE ELIMINATI 'CONT-NOMINATIVI-ELIMINATI' NOMINATIVI'
  414.      -            'DALLE TABELLE VC0INFO E VC0ULTINFO;'
  415.           DISPLAY '
  416.          ELSE
  417.            DISPLAY 'E'' STATO TROVATO UN ERRORE NELLA SKEDA PARAMETRO IN SK-DATA-OGGI,'
  418.            DISPLAY 'NON E'' STATO POSSIBILE ESEGUIRE IL CONTROLLO PER I NOMINATIVI REVOCATI'
  419.          END-IF
  420.          DISPLAY 'SONO STATI AGGIORNATE LE PROVINCIA DI NASCITA IN ''MB'' '
  421.       -         'DI 'CONT-PROV-NASC' CODICI FISCALI NELLA TABELLA VC0INFO'
  422.          .
  423.  
  424.       *----------
  425.        FINE-PGM.
  426.       *----------
  427.          CLOSE FILEANA
  428.                FILESCA
  429.  
  430.          DISPLAY 'FINE PGM' NOME-PGM
  431.          GOBACK
  432.          .
  433. 
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement