Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 9.46 KB | None | 0 0
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. STA0004B.
  3.        AUTHOR. MAZZAROLO MATTEO.
  4.        DATE-WRITTEN. 2010-12-17
  5.  
  6.        ENVIRONMENT DIVISION.
  7.  
  8.        INPUT-OUTPUT SECTION.
  9.  
  10.        FILE-CONTROL.
  11.            SELECT FILENDG       ASSIGN TO FILENDG.
  12.            SELECT FILEPAG       ASSIGN TO FILEPAG.
  13.            SELECT FILEBLO       ASSIGN TO FILEBLO.
  14.        DATA DIVISION.
  15.  
  16.        FILE SECTION.
  17.  
  18.        FD  FILENDG LABEL RECORD IS STANDARD.
  19.        01  W-REC-FILE-NDG          PIC X(200).
  20.  
  21.        FD  FILEPAG LABEL RECORD IS STANDARD.
  22.        01  W-REC-FILE-PAG          PIC X(100).
  23.  
  24.        FD  FILEBLO LABEL RECORD IS STANDARD.
  25.        01  W-REC-FILE-BLO          PIC X(100).
  26.  
  27.        WORKING-STORAGE SECTION.
  28.  
  29.        01  NOME-PGM                PIC X(08) VALUE 'STA0004B'.
  30.  
  31.       * TRACCIATO FILE-NDG *
  32.        01  W-REC-FILE-NDG.
  33.            03 W-COD-NDG-NDG                PIC 9(16).
  34.            03 W-INTESTA-NDG                PIC X(60).
  35.            03 W-LIMITE-NDG                 PIC 9(15).
  36.  
  37.       * TRACCIATO FILE-PAGAMENTI *
  38.        01  W-REC-FILE-PAG.
  39.            03 W-COD-NDG-PAG                PIC 9(16).
  40.            03 W-SEGNO-PAG                  PIC X.
  41.            03 W-IMPORTO-PAG                PIC 9(15).
  42.  
  43.       * TRACCIATO FILE-BLOCCHI *
  44.        01  W-REC-FILE-BLO.
  45.            03 W-DATA-BLO                   PIC X(10).
  46.            03 W-COD-NDG-BLO                PIC 9(16).
  47.            03 W-SCOPERTO-BLO               PIC 9(15).
  48.  
  49.        01  EOF-FILE-NDG                    PIC 9(01)  VALUE ZERO.
  50.        01  EOF-FILE-PAG                    PIC 9(01)  VALUE ZERO.
  51.        01  SOMMA-IMPORTI                   PIC S9(18) VALUE ZERO.
  52.        01  LIMITE-RELATIVO                 PIC 9(17)  VALUE ZERO.
  53.  
  54.        01  SKEDA-PARAMETRO.
  55.            03 SK-DATA-OGGI                 PIC X(10).
  56.  
  57.        01  ARRAY-PAG.
  58.            03 ARRAY-COD-NDG-PAG            PIC 9(16)   OCCURS 900 TIMES.
  59.            03 ARRAY-SEGNO-PAG              PIC X       OCCURS 900 TIMES.
  60.            03 ARRAY-IMPORTO-PAG            PIC 9(15)   OCCURS 900 TIMES.
  61.        01  IND-ARRAY-PAG                   PIC 9(03)   VALUE ZERO.
  62.        01  GRANDEZZA-ARRAY-PAG             PIC 9(03)   VALUE ZERO.
  63.        01  CONT-ELEMENTI-DISORDINATI       PIC 9(03)   VALUE ZERO.
  64.  
  65.        01  ARRAY-PAG-COMODO.
  66.            03 ARRAY-COD-NDG-COMODO         PIC 9(16)   OCCURS 900 TIMES.
  67.            03 ARRAY-IMPORTO-TOT-COMODO     PIC 9(18)   OCCURS 900 TIMES.
  68.        01  IND-ARRAY-COMODO                PIC 9(03)   VALUE ZERO.
  69.        01  GRANDEZZA-ARRAY-COMODO          PIC 9(03)   VALUE ZERO.
  70.  
  71.        01  REC-ELEMENTO-TEMP.
  72.            03 COD-NDG-TEMP                 PIC 9(16).
  73.            03 SEGNO-TEMP                   PIC 9(X).
  74.            03 IMPORTO-TEMP                 PIC 9(15).
  75.  
  76.        PROCEDURE DIVISION.
  77.  
  78.       *-----*
  79.        MAIN.
  80.       *-----*
  81.            PERFORM INIZIALIZZA
  82.            PERFORM LETTURA-FILENDG
  83.            PERFORM LETTURA-FILEPAG
  84.            PERFORM INSERIMENTO-IN-ARRAY-PAG
  85.                    UNTIL EOF-FILE-PAG = 1
  86.                    VARYING IND-ARRAY PAG FROM 1 BY 1
  87.            PERFORM VALORIZZAZIONE-PER-ORDINAMENTO
  88.            PERFORM ORDINAMENTO-ARRAY-PAG
  89.                    UNTIL CONT-ELEMENTI-DISORDINATI = 1
  90.            MOVE 1 TO IND-ARRAY-PAG
  91.            PERFORM CONTROLLO-SOMMA-IMPORTI
  92.                    UNTIL IND-ARRAY-PAG > GRANDEZZA-ARRAY-PAG
  93.                    VARYING IND-ARRAY-PAG FROM 1 BY 1
  94.            PERFORM CONFRONTA-CODICI-NDG
  95.                    UNTIL IND-ARRAY-COMODO = GRANDEZZA-ARRAY-COMODO
  96.                    OR EOF-FILE-NDG = 1
  97.            PERFORM FINE-PGM
  98.            .
  99.  
  100.       *-------------*
  101.        INIZIALIZZA.
  102.       *-------------*
  103.            DISPLAY 'INIZIO PGM ' NOME-PGM
  104.            OPEN INPUT  FILENDG
  105.                 INPUT  FILEPAG
  106.                 OUTPUT FILEBLO
  107.  
  108.            ACCEPT SKEDA-PARAMETRO
  109.            .
  110.  
  111.       *------------------------*
  112.        INSERIMENTO-IN-ARRAY-PAG.
  113.       *------------------------*
  114.            IF IND-ARRAY-PAG = 901
  115.                DISPLAY "IL FILE PAGAMENTI E'' TROPPO GRANDE"
  116.                GOBACK.
  117.            ELSE
  118.                MOVE W-COD-NDG-PAG INTO ARRAY-COD-NDG-PAG(IND-ARRAY-PAG)
  119.                MOVE W-SEGNO-PAG   INTO ARRAY-SEGNO-PAG(IND-ARRAY-PAG)
  120.                MOVE W-IMPORTO-PAG INTO ARRAY-IMPORTO-PAG(IND-ARRAY-PAG)
  121.                PERFORM LETTURA-FILE-PAG
  122.            END-IF
  123.            .
  124.  
  125.       *-------------------------------*
  126.        VALORIZZAZIONE-PER-ORDINAMENTO.
  127.       *-------------------------------*
  128.            MOVE IND-ARRAY-PAG INTO GRANDEZZA-ARRAY-PAG
  129.            MOVE IND-ARRAY-PAG INTO CONT-ELEMENTI-DISORDINATI
  130.            MOVE 1 TO IND-ARRAY-PAG
  131.            .
  132.  
  133.       *---------------------*
  134.        ORDINAMENTO-ARRAY-PAG.
  135.       *---------------------*
  136.            PERFORM CONTROLLO-SCAMBIO-ELEMENTI
  137.                UNTIL IND-ARRAY-PAG = CONT-ELEMENTI-DISORDINATI
  138.                VARYING IND-ARRAY-PAG FROM 1 BY 1
  139.            COMPUTE CONT-ELEMENTI-DISORDINATI - 1
  140.            .
  141.       *--------------------------*
  142.        CONTROLLO-SCAMBIO-ELEMENTI.
  143.       *--------------------------*
  144.            IF ARRAY-NDG-PAG(IND-ARRAY-PAG) > ARRAY-NDG-PAG(IND-ARRAY-PAG + 1)
  145.                PERFORM SCAMBIA-ELEMENTI
  146.            END-IF
  147.            .
  148.  
  149.       *-----------------*
  150.        SCAMBIA-ELEMENTI.
  151.       *-----------------*
  152.            MOVE ARRAY-COD-NDG-PAG(IND-ARRAY-PAG)     INTO COD-NDG-TEMP
  153.            MOVE ARRAY-SEGNO-PAG(IND-ARRAY-PAG)       INTO SEGNO-TEMP
  154.            MOVE ARRAY-IMPORTI-PAG(IND-ARRAY-PAG)     INTO IMPORTI-TEMP
  155.  
  156.            MOVE ARRAY-COD-NDG-PAG(IND-ARRAY-PAG + 1) INTO ARRAY-COD-NDG-PAG(IND-ARRAY-PAG)
  157.            MOVE ARRAY-SEGNO-PAG(IND-ARRAY-PAG + 1)   INTO ARRAY-SEGNO-PAG(IND-ARRAY-PAG)
  158.            MOVE ARRAY-IMPORTI-PAG(IND-ARRAY-PAG +1)  INTO ARRAY-IMPORTI-PAG(IND-ARRAY-PAG)
  159.  
  160.            MOVE COD-NDG-TEMP                         INTO ARRAY-COD-NDG-PAG(IND-ARRAY-PAG - 1)
  161.            MOVE SEGNO-TEMP                           INTO ARRAY-SEGNO-PAG(IND-ARRAY-PAG - 1)
  162.            MOVE IMPORTI-TEMP                         INTO ARRAY-IMPORTI-PAG(IND-ARRAY-PAG - 1)
  163.            .
  164.  
  165.       *------------------------*
  166.        CONTROLLO-SOMMA-IMPORTI.
  167.       *------------------------*
  168.            EVALUATE TRUE
  169.            WHEN IND-ARRAY-PAG = GRANDEZZA-ARRAY-PAG
  170.                 PERFORM CALCOLA-SOMMA-IMPORTI
  171.                 PERFORM INSERIMENTO-IN-ARRAY-COMODO
  172.                 COMPUTE GRANDEZZA-ARRAY-COMODO = GRANDEZZA-ARRAY-COMODO + 1
  173.            WHEN ARRAY-COD-NDG-PAG(IND-ARRAY-PAG) = ARRAY-COD-NDG(IND-ARRAY-PAG + 1)
  174.                 PERFORM CALCOLA-SOMMA-IMPORTI
  175.            WHEN OTHER
  176.                 PERFORM CALCOLA-SOMMA-IMPORTI
  177.                 PERFORM INSERIMENTO-IN-ARRAY-COMODO
  178.                 INITIALIZE SOMMA-IMPORTI
  179.                 COMPUTE GRANDEZZA-ARRAY-COMODO = GRANDEZZA-ARRAY-COMODO + 1
  180.            END-IF
  181.            .
  182.  
  183.       *----------------------*
  184.        CALCOLA-SOMMA-IMPORTI.
  185.       *----------------------*
  186.            IF ARRAY-SEGNO-PAG = '+'
  187.               ADD ARRAY-IMPORTI-PAG(IND-ARRAY-PAG) TO SOMMA-IMPORTI
  188.            ELSE
  189.               SUBTRACT ARRAY-IMPORTI-PAG(IND-ARRAY-PAG) FROM SOMMA-IMPORTI
  190.            END-IF
  191.            .
  192.  
  193.       *---------------------------*
  194.        INSERIMENTO-IN-ARRAY-COMODO.
  195.       *---------------------------*
  196.            MOVE ARRAY-COD-NDG-PAG(IND-ARRAY-PAG) INTO ARRAY-COD-NDG-COMODO(IND-ARRAY-PAG)
  197.            MOVE SOMMA-IMPORTI                    INTO ARRAY-IMPORTO-TOT(IND-ARRAY-PAG)
  198.            .
  199.  
  200.       *---------------------*
  201.        CONFRONTA-CODICI-NDG.
  202.       *---------------------*
  203.            EVALUATE TRUE
  204.            WHEN ARRAY-COD-NDG-COMODO = W-COD-NDG-NDG
  205.                PERFORM CONTROLLA-SCOPERTO
  206.                COMPUTE INDICE-ARRAY-COMODO = INDICE-ARRAY-COMODO + 1
  207.                PERFORM LETTURA-FILENDG
  208.            WHEN ARRAY-COD-NDG-COMODO > W-COD-NDG-NDG
  209.                PERFORM LETTURA-FILENDG
  210.            WHEN ARRAY-COD-NDG-COMODO < W-COD-NDG-NDG
  211.                DISPLAY 'NON SONO STATE TROVATE LE ANAGRAFICHE DEL CODICE' ARRAY-COD-NDG-COMODO
  212.                COMPUTE INDICE-ARRAY-COMODO = INDICE-ARRAY-COMODO + 1
  213.            END-EVALUATE
  214.            .
  215.  
  216.       *--------------------*
  217.        CONTROLLA-SCOPERTO.
  218.       *--------------------*
  219.            COMPUTE LIMITE-RELATIVO = W-LIMITE-NDG * 100
  220.            IF ARRAY-IMPORTO-TOTALE-COMODO > LIMITE-RELATIVO
  221.                PERFORM VALORIZZA-W-REC-FILE-BLO
  222.                PERFORM SCRITTURA-FILEBLO
  223.            END-IF
  224.            INITIALIZE LIMITE-RELATIVO
  225.            .
  226.  
  227.       *-------------------------*
  228.        VALORIZZA-W-REC-FILE-BLO.
  229.       *-------------------------*
  230.            MOVE SK-DATA-OGGI  TO W-DATA-BLO
  231.            MOVE W-COD-NDG-NDG TO W-COD-NDG-BLO
  232.            COMPUTE W-SCOPERTO-BLO = ARRAY-IMPORTO-TOT-COMODO - LIMITE-RELATIVO
  233.            .
  234.  
  235.       *-----------------*
  236.        LETTURA-FILENDG.
  237.       *-----------------*
  238.            READ FILENDG INTO W-REC-FILE-NDG
  239.                AT END MOVE 1 TO EOF-FILE-NDG
  240.            .
  241.  
  242.       *----------------*
  243.        LETTURA-FILEPAG.
  244.       *----------------*
  245.            READ FILEPAG INTO W-REC-FILE-PAG
  246.                AT END MOVE 1 TO EOF-FILE-PAG
  247.            .
  248.  
  249.       *-------------------*
  250.        SCRITTURA-FILEBLO.
  251.       *-------------------*
  252.            WRITE FILEBLO FROM W-REC-FILE-BLO
  253.            .
  254.  
  255.       *---------*
  256.        FINE-PGM.
  257.       *---------*
  258.            CLOSE FILENDG
  259.                  FILEPAG
  260.                  FILEBLO.
  261.            DISPLAY 'FINE PGM' NOME-PGM
  262.            GOBACK.
  263.            .
  264.  
  265. 
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement