Advertisement
Guest User

Untitled

a guest
Jul 6th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 8.66 KB | None | 0 0
  1.      IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. STA0006B.
  3.        AUTHOR. MAZZAROLO MATTEO.
  4.        DATE-WRITTEN. 2010-12-21
  5.  
  6.        ENVIRONMENT DIVISION.
  7.  
  8.        INPUT-OUTPUT SECTION.
  9.  
  10.        FILE-CONTROL.
  11.        SELECT FILEBON       ASSIGN TO FILEBON.
  12.        SELECT FILEREP       ASSIGN TO FILEREP.
  13.        SELECT FILESCA       ASSIGN TO FILESCA.
  14.  
  15.        DATA DIVISION.
  16.  
  17.        FILE SECTION.
  18.  
  19.        FD FILEBON    LABEL RECORD IS STANDARD.
  20.        01 W-REC-FILE-BON                 PIC X(200).
  21.  
  22.        FD FILEREP    LABEL RECORD IS STANDARD.
  23.        01 W-REC-FILE-REP                 PIC X(200).
  24.  
  25.        FD FILESCA    LABEL RECORD IS STANDARD.
  26.        01 W-REC-FILE-SCA                 PIC X(200).
  27.  
  28.        WORKING-STORAGE SECTION.
  29.  
  30.        01 NOME-PGM                       PIC X(08) VALUE 'STA0006B'.
  31.  
  32.       * TRACCIATO FILEBON *
  33.        01 W-REC-FILE-BON.
  34.          03 W-ABI-BON                     PIC 9(05).
  35.          03 W-DESCR-ABI-BON               PIC 9(60).
  36.          03 W-COD-NDG-BON                 PIC 9(16).
  37.          03 W-COD-FISC-BON                PIC X(16).
  38.          03 W-NOME-BON                    PIC X(30).
  39.          03 W-COGNOME-BON                 PIC X(30).
  40.          03 W-DATA-BON                    PIC X(10).
  41.          03 W-IMPORTO-BON                 PIC S9(15)V99.
  42.  
  43.       * RECORD INTESTAZIONE PAGINA *
  44.        01 W-REC-INT-PAG
  45.          03 FILLER                        PIC X.
  46.          03 W-REC-INT-DATA                PIC X(10).
  47.          03 FILLER                        PIC X(50).
  48.          03 W-REC-INT-PAGINA              PIC 9(06).
  49.  
  50.       * RECORD INTESTAZIONE BANCA*
  51.        01 W-REC-INT-BAN
  52.          03 FILLER                        PIC X(06) VALUE 'ABI: '
  53.          03 W-REC-INT-ABI                 PIC 9(05).
  54.          03 FILLER                        PIC X(05) VALUE SPACES.
  55.          03 W-REC-INT-DES                 PIC X(60).
  56.  
  57.       * RECORD INTESTAZIONE DATI *
  58.        01 W-REC-INT-DATI
  59.          03 FILLER                        PIC X(03) VALUE 'NDG'.
  60.          03 FILLER                        PIC X(03) VALUE SPACES.
  61.          03 FILLER                        PIC X(16) VALUE 'CODICE FISCALE'.
  62.          03 FILLER                        PIC X(03) VALUE SPACES.
  63.          03 FILLER                        PIC X(13) VALUE 'DENOMINAZIONE'.
  64.          03 FILLER                        PIC X(51) VALUE SPACES.
  65.          03 FILLER                        PIC X(07) VALUE 'IMPORTO'.
  66.  
  67.       * RECORD DATI *
  68.        01 W-REC-DATI
  69.          03 W-REC-DATI-NDG                PIC X(03).
  70.          03 FILLER                        PIC X(03) VALUE SPACES.
  71.          03 W-REC-DATI-COD                PIC X(16).
  72.          03 FILLER                        PIC X(03) VALUE SPACES.
  73.          03 W-REC-DATI-DEN                PIC X(61).
  74.          03 FILLER                        PIC X(03) VALUE SPACES.
  75.          03 W-REC-DATI-IMP                PIC ZS9(15)V99.
  76.  
  77.       * RECORD IMPORTO TOTALE *
  78.        01 W-REC-TOT
  79.          03 FILLER                        PIC X(83) VALUE SPACES.
  80.          03 FILLER                        PIC X(16) VALUE 'IMPORTO TOTALE: '
  81.          03 W-REC-IMP-TOT                 PIC ZS9(15)V99.
  82.  
  83.       * TRACCIATO FILESCA *
  84.        01 W-REC-FILE-SCA.
  85.          03 W-ABI-SCA                     PIC 9(05).
  86.          03 W-DESCR-ABI-SCA               PIC 9(60).
  87.          03 W-COD-NDG-SCA                 PIC 9(16).
  88.          03 W-COD-FISC-SCA                PIC X(16).
  89.          03 W-NOME-SCA                    PIC X(30).
  90.          03 W-COGNOME-SCA                 PIC X(30).
  91.          03 W-DATA-SCA                    PIC X(10).
  92.          03 W-IMPORTO-SCA                 PIC S9(15)V99.
  93.  
  94.       * END-OF-FILE *
  95.        01 EOF-FILE-BON                   PIC 9(01) VALUE ZERO.
  96.  
  97.       * NOME TEMPORANEO *
  98.        01 NOME-TEMP                      PIC X(61).
  99.        01 FILLER REDIFINES NOME-TEMP.
  100.          03 NOME-ARRAY                   PIC X OCCURS 61 TIMES.
  101.  
  102.        01 IND-CARATT                  PIC 9(02)  VALUE ZERO.
  103.        01 IND-CARATT-COMODO           PIC 9(02)  VALUE ZERO.
  104.  
  105.       * VARIABILI AGGIUNTIVE *
  106.        01 CONT-RIGHE                     PIC 9(02) VALUE ZERO.
  107.        01 MAX-RIGHE                      PIC 9(02) VALUE ZERO.
  108.        01 ABI-ATTUALE                    PIC 9(05) VALUE ZERO.
  109.        01 SOMMA-TOTALE                   PIC ZS9(15)V99.
  110.        01 CONT-SPAZI                     PIC 9(02) VALUE ZERO.
  111.  
  112.       * SKEDA-PARAMETRO *
  113.        01 SKEDA-PARAMETRO.
  114.          03 SK-DATA-OGGI                 PIC X(10).
  115.  
  116.        PROCEDURE DIVISION.
  117.  
  118.       *-----*
  119.        MAIN.
  120.       *-----*
  121.          PERFORM INIZIALIZZA
  122.  
  123.          PERFORM LETTURA-FILEBON
  124.          PERFORM CONTROLLA-BANCA
  125.            UNTIL EOF-FILE-BON = 1
  126.          PERFORM STAMPA-TOTALE
  127.  
  128.          PERFORM FINE-PGM
  129.          .
  130.  
  131.       *------------*
  132.        INIZIALIZZA.
  133.       *------------*
  134.          DISPLAY 'INIZIO PGM ' NOME-PGM
  135.          OPEN INPUT  FILEBON
  136.               OUTPUT FILEREP
  137.               OUTPUT FILESCA
  138.  
  139.          MOVE 40 TO MAX-RIGHE
  140.          MOVE 1 TO CONT-PAGINE
  141.  
  142.          ACCEPT SKEDA-PARAMETRO
  143.          .
  144.  
  145.       *----------------*
  146.        CONTROLLA-BANCA.
  147.       *----------------*
  148.          EVALUATE TRUE
  149.            WHEN W-DATA-BON NOT = SK-DATA-OGGI
  150.              PERFORM VALORIZZA-FILESCA
  151.              PERFORM SCRITTURA-FILESCA
  152.              PERFORM LETTURA-FILEBON
  153.            WHEN W-ABI-BON > ABI-ATTUALE
  154.              PERFORM STAMPA-TOTALE
  155.              PERFORM VALORIZZA-INTESTAZIONI
  156.              PERFORM STAMPA-INTESTAZIONI
  157.              MOVE W-ABI-BON TO W-ABI-ATTUALE
  158.            WHEN CONT-RIGHE >= MAX-RIGHE
  159.              PERFORM VALORIZZA-INTESTAZIONI
  160.              PERFORM STAMPA-INTESTAZIONI
  161.            WHEN OTHER
  162.              ADD W-IMPORTO-BON TO SOMMA-TOTALE
  163.              ADD 1 TO CONT-RIGHE
  164.              PERFORM VALORIZZA-DATI
  165.              PERFORM STAMPA-DATI
  166.              PERFORM LETTURA-FILEBON
  167.          END-EVALUATE
  168.          .
  169.  
  170.       *-----------------------*
  171.        VALORIZZA-INTESTAZIONI.
  172.       *-----------------------*
  173.         MOVE SK-DATA-OGGI     TO W-INT-DATA
  174.         MOVE CONT-PAG         TO W-INT-PAG
  175.         MOVE W-ABI-BON        TO W-INT-ABI
  176.         MOVE W-DESCR-ABI-BON  TO W-INT-DES
  177.         .
  178.  
  179.       *--------------------*
  180.        STAMPA-INTESTAZIONI.
  181.       *--------------------*
  182.         IF CONT-PAGINA = 1
  183.           WRITE W-REC-FILE-REP FROM W-REC-INT-PAG
  184.         ELSE
  185.           WRITE W-REC-FILE-REP FROM W-REC-INT-PAG AFTER PAGE
  186.           ADD 1 TO CONT-PAGINE
  187.           INITIALIZE CONT-RIGHE
  188.         END-IF
  189.         IF W-ABI-BON NOT = ABI-ATTUALE
  190.           WRITE W-REC-FILE-REP FROM W-REC-INT-BAN  AFTER 2 LINES
  191.           WRITE W-REC-FILE-REP FROM W-REC-INT-DATI AFTER 2 LINES
  192.         ELSE
  193.           WRITE W-REC-FILE-REP FROM W-REC-INT-DATI AFTER 5 LINES
  194.         END-IF
  195.         .
  196.  
  197.       *---------------*
  198.        VALORIZZA-DATI.
  199.       *---------------*
  200.          MOVE W-COD-NDG-BON TO W-REC-DATI-NDG
  201.          MOVE W-COD-NDG-COD TO W-REC-DATI-COD
  202.          PERFORM VALORIZZA-DENOMINAZIONE
  203.          MOVE W-IMPORTO-BON TO W-REC-DATI-IMP
  204.          .
  205.  
  206.       *------------------------*
  207.        VALORIZZA-DENOMINAZIONE.
  208.       *------------------------*
  209.          IF W-COD-FISC-BON IS NUMERIC
  210.          ELSE
  211.            MOVE W-NOME-BON INTO NOME-TEMP
  212.            PERFORM ESCI-PARAGRAFO
  213.              VARYING IND-CARATT FROM 1 BY 1
  214.              UNTIL   IND-CARATT > 30
  215.            STRING W-NOME-BON DELIMITED BY SIZE INTO W-REC-DATI-DEN
  216.            STRING " " W-CONGOME-BON DELIMITED BY SIZE INTO W-REC-DATI-DEN
  217.              WITH POINTER IND-CARATT-COMODO
  218.          END-IF
  219.          .
  220.  
  221.       *---------------------*
  222.        ESCI-PARAGRAFO.
  223.       *---------------------*
  224.          IF  NOME-ARAY(IND-CARATT) = " " AND NOME-ARRAY(IND-CARATT + 1) = " "
  225.            MOVE IND-CARATT INTO IND-CARATT-COMODO
  226.            MOVE 31 TO IND-CARATT
  227.          END-IF
  228.          .
  229.  
  230.       *--------------*
  231.        STAMPA-TOTALE.
  232.       *--------------*
  233.         IF CONT-PAGINE > 1 OR SOMMA-TOTALE > 0
  234.           WRITE W-REC-FILE-REP FROM W-REC-TOT
  235.           INITIALIZE SOMMA-TOTALE
  236.         END-IF
  237.         .
  238.  
  239.       *------------------*
  240.        VALORIZZA-FILESCA.
  241.       *------------------*
  242.          MOVE W-REC-FILE-BON IN W-REC-FILE-SCA
  243.          .
  244.  
  245.       *------------------*
  246.        SCRITTURA-FILESCA.
  247.       *------------------*
  248.          WRITE W-REC-FILE-REP FROM W-REC-FILE-SCA
  249.          .
  250.  
  251.       *----------------*
  252.        LETTURA-FILEBON.
  253.       *----------------*
  254.          READ FILEBON INTO W-REC-FILE-BON
  255.            AT END MOVE 1 TO EOF-FILE-SAVE
  256.          .
  257.  
  258.       *---------*
  259.        FINE-PGM.
  260.       *---------*
  261.          CLOSE FILEBON
  262.                FILEREP
  263.                FILESCA
  264.          DISPLAY 'FINE PGM' NOME-PGM
  265.          GOBACK
  266.          .
  267. 
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement