Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 7.91 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(18)     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 OCCURS 900.
  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-PAG-COMODO            PIC 9(03)  VALUE ZERO.
  69.  
  70.        01  REC-PAG-TEMP.
  71.            03 COD-NDG-PAG-TEMP             PIC 9(16).
  72.            03 SEGNO-PAG-TEMP               PIC X.
  73.            03 IMPORTO-PAG-TEMP             PIC 9(15).
  74.  
  75.        PROCEDURE DIVISION.
  76.  
  77.       *-----*
  78.        MAIN.
  79.       *-----*
  80.            PERFORM INIZIALIZZA
  81.            PERFORM LETTURA-FILENDG
  82.            PERFORM LETTURA-FILEPAG
  83.            PERFORM INSERIMENTO-IN-ARRAY-PAG UNTIL EOF-FILE-PAG = 1 VARYING IND-ARRAY-PAG FROM 1 BY 1
  84.            PERFORM VALORIZZAZIONI-PER-ORDINAMENTO
  85.            PERFORM ORDINAMENTO-ARRAY-PAG UNTIL GRANDEZZA-ARRAY-PAG = 1
  86.            PERFORM CONTROLLO-NDG UNTIL
  87.            PERFORM FINE-PGM
  88.            .
  89.  
  90.       *-------------*
  91.        INIZIALIZZA.
  92.       *-------------*
  93.            DISPLAY 'INIZIO PGM ' NOME-PGM
  94.            OPEN INPUT  FILENDG
  95.                 INPUT  FILEPAG
  96.                 OUTPUT FILEBLO
  97.  
  98.            ACCEPT SKEDA-PARAMETRO
  99.            .
  100.  
  101.       *------------------------*
  102.        INSERIMENTO-IN-ARRAY-PAG.
  103.       *------------------------*
  104.            MOVE W-COD-NDG-PAG INTO ARRAY-COD-NDG-PAG(IND-ARRAY-PAG)
  105.            MOVE W-SEGNO-PAG   INTO ARRAY-SEGNO-PAG(IND-ARRAY-PAG)
  106.            MOVE W-IMPORTO-PAG INTO ARRAY-IMPORTO-PAG(IND-ARRAY-PAG)
  107.  
  108.            MOVE IND-ARRAY-PAG INTO GRANDEZZA-ARRAY-PAG
  109.  
  110.            PERFORM LETTURA-FILE-PAG
  111.            .
  112.       *------------------------------*
  113.        VALORIZZAZIONI-PER-ORDINAMENTO
  114.       *------------------------------*
  115.            MOVE IND-ARRAY-PAG       INTO GRANDEZZA-ARRAY-PAG
  116.            MOVE GRANDEZZA-ARRAY-PAG INTO CONT-ELEMENTI-DISORDINATI
  117.            INITIALIZE IND-ARRAY-PAG
  118.            .
  119.  
  120.       *----------------------*
  121.        ORDINAMENTO-ARRAY-PAG.
  122.       *----------------------*
  123.            PERFORM CONTROLLO-SCAMBIO-ELEMENTI UNTIL IND-ARRAY-PAG = CONT-ELEMENTI-DISORDINATI
  124.                    UNTIL IND-ARRAY-PAG = CONT-ELEMENTI-DISORDINATI
  125.                    VARYING IND-ARRAY-PAG FROM 1 BY 1
  126.            COMPUTE CONT-ELEMENTI-DISORDINATI = CONT-ELEMENTI-DISORDINATI - 1
  127.            .
  128.  
  129.       *---------------------------*
  130.        CONTROLLO-SCAMBIO-ELEMENTI.
  131.       *---------------------------*
  132.             IF ARRAY-COD-NDG-PAG(IND-ARRAY-PAG) > ARRAY-COD-NDG-PAG(IND-ARRAY-PAG -1)
  133.                 PERFORM SCAMBIO-ELEMENTI
  134.             END-IF
  135.             .
  136.       *-----------------*
  137.        SCAMBIO-ELEMENTI.
  138.       *-----------------*
  139.             MOVE ARRAY-COD-NDG-PAG(IND-ARRAY-PAG)        INTO COD-NDG-PAG-TEMP
  140.             MOVE ARRAY-SEGNO-PAG(IND-ARRAY-PAG)          INTO SEGNO-PAG-TEMP
  141.             MOVE ARRAY-IMPORTO-PAG(IND-ARRAY-PAG)        INTO IMPORTO-PAG-TEMP
  142.  
  143.             MOVE ARRAY-COD-NDG-PAG(IND-ARRAY-PAG - 1)    INTO ARRAY-COD-NDG-PAG(IND-ARRAY-PAG)
  144.             MOVE ARRAY-SEGNO-PAG(IND-ARRAY-PAG - 1)      INTO ARRAY-SEGNO-PAG(IND-ARRAY-PAG)
  145.             MOVE ARRAY-IMPORTO-PAG(IND-ARRAY-PAG - 1)    INTO ARRAY-IMPORTO-PAG(IND-ARRAY-PAG)
  146.  
  147.             MOVE COND-NDG-PAG-TEMP                       INTO ARRAY-COD-NDG-PAG(IND-ARRAY-PAG - 1)
  148.             MOVE SEGNO-PAG-TEMP                          INTO ARRAY-SEGNO-PAG(IND-ARRAY-PAG - 1)
  149.             MOVE IMPORTO-PAG-TEMP                        INTO ARRAY-IMPORTO-PAG(IND-ARRAY-PAG - 1)
  150.             .
  151.  
  152.       *---------------------*
  153.        CONFRONTA-CODICI-NDG.
  154.       *---------------------*
  155.            EVALUATE TRUE
  156.            WHEN W-COD-NDG-PAG = W-COD-NDG-NDG
  157.                PERFORM CALCOLA-SOMMA-IMPORTI
  158.                PERFORM LETTURA-FILEPAG
  159.            WHEN W-COD-NDG-PAG > W-COD-NDG-NDG
  160.                PERFORM CONTROLLA-SCOPERTO
  161.                PERFORM LETTURA-FILENDG
  162.            WHEN W-COD-NDG-PAG < W-COD-NDG-NDG
  163.                DISPLAY 'NON E'' STATO TROVATO IL CODICE 'W-COD-NDG-PAG
  164.                PERFORM LETTURA-FILEPAG
  165.            END-EVALUATE
  166.            .
  167.  
  168.       *----------------------*
  169.        CALCOLA-SOMMA-IMPORTI.
  170.       *----------------------*
  171.            IF W-SEGNO-PAG = '+'
  172.               ADD W-IMPORTO-NDG TO SOMMA-IMPORTI
  173.            ELSE
  174.               SUBTRACT W-IMPORTO-NDG FROM SOMMA-IMPORTI
  175.            END-IF
  176.            .
  177.  
  178.       *--------------------*
  179.        CONTROLLA-SCOPERTO.
  180.       *--------------------*
  181.            COMPUTE LIMITE-RELATIVO = W-LIMITE-NDG * 100
  182.            IF SOMMA-IMPORTI > LIMITE-RELATIVO
  183.                PERFORM VALORIZZA-W-REC-FILE-BLO
  184.                PERFORM SCRITTURA-FILEBLO
  185.            END-IF
  186.            INITIALIZE SOMMA-IMPORTI
  187.            INITIALIZE LIMITE-RELATIVO
  188.            .
  189.  
  190.       *-------------------------*
  191.        VALORIZZA-W-REC-FILE-BLO.
  192.       *-------------------------*
  193.            MOVE SK-DATA-OGGI  TO W-DATA-BLO
  194.            MOVE W-COD-NDG-NDG TO W-COD-NDG-BLO
  195.            COMPUTE W-SCOPERTO-BLO = SOMMA-IMPORTI - LIMITE-RELATIVO
  196.            .
  197.  
  198.  
  199.       *-----------------*
  200.        LETTURA-FILENDG.
  201.       *-----------------*
  202.            READ FILENDG INTO W-REC-FILE-NDG
  203.                AT END MOVE 1 TO EOF-FILE-NDG
  204.            .
  205.  
  206.       *----------------*
  207.        LETTURA-FILEPAG.
  208.       *----------------*
  209.            READ FILEPAG INTO W-REC-FILE-PAG
  210.                AT END MOVE 1 TO EOF-FILE-PAG
  211.            .
  212.  
  213.       *-------------------*
  214.        SCRITTURA-FILEBLO.
  215.       *-------------------*
  216.            WRITE FILEBLO FROM W-REC-FILE-BLO
  217.            .
  218.  
  219.       *---------*
  220.        FINE-PGM.
  221.       *---------*
  222.            CLOSE FILENDG
  223.                  FILEPAG
  224.                  FILEBLO.
  225.            DISPLAY 'FINE PGM' NOME-PGM
  226.            GOBACK.
  227.            .
  228.  
  229. 
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement