Guest User

Untitled

a guest
Sep 14th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 35.98 KB | None | 0 0
  1.       ***********************************************************************
  2.       *       PROGRAM NAME:   CBLHO2JN                                     *
  3.       *                                                                    *
  4.       *       AUTHOR:         Jan Noel Calayag                             *
  5.       *                                                                    *
  6.       *       DATE:           7/25/2012                                    *
  7.       *                                                                    *
  8.       *       DESCRIPTION:    All records of a transaction file will be    *
  9.       *                       validated using the validation rules         *
  10.       *                       described in the processing outline. Valid   *
  11.       *                       records will be written to a valid           *
  12.       *                       transaction file. Results of the validation  *
  13.       *                       will be printed in a validation prooflist.   *                                                                                                  
  14.       ***********************************************************************
  15.       *       SUB PROGRAM LIST:                                            *
  16.       *                                                                    *
  17.       *            0XXX --- MAIN PROGRAM                                   *
  18.       *                  '--- 0000-MAIN-PROC                               *
  19.      *                                                                     *
  20.      *             1XXX --- CONSTRUCT                                      *
  21.      *                   '--- 1000-CONSTRUCT                               *
  22.       *                                                                    *
  23.       *            2XXX --- DECONSTRUCT                                    *
  24.       *                  '--- 2000-DECONSTRUCT                             *
  25.      *                                                                     *
  26.      *             3XXX --- PROCESS                                        *
  27.      *                   |--- 3000-PROCESS                                 *
  28.      *                   '--- 3100-RESET-VALUES                            *
  29.       *                                                                    *
  30.       *            4XXX --- VALIDATE HEADER                                *
  31.       *                  '--- 4000-VALIDATE-HDR                            *
  32.      *                                                                     *
  33.      *             5XXX --- VALIDATE RECORDS                               *
  34.      *                   |--- 5100-INITIAL-VALIDATION                      *
  35.      *                   | |--- 5110-INITIAL-VALIDATION-EMPNO              *
  36.      *                   | |--- 5120-INITIAL-VALIDATION-DATE               *
  37.      *                   | '--- 5130-INITIAL-VALIDATION-CODE               *
  38.       *                  |--- 5200-FILTER-BY-CODE                          *
  39.       *                  | |--- 5210-FILTER-BY-TC0                         *
  40.       *                  | |--- 5220-FILTER-BY-TC1                         *
  41.       *                  | '--- 5230-FILTER-BY-TC2                         *
  42.      *                   |--- 5300-SEQ-UNIQ-VALIDATION-EMPNO               *
  43.      *                   |--- 5400-SEQ-UNIQ-VALIDATION-CODE                *                                        
  44.      *                   |--- 5500-SEQ-UNIQ-VALIDATION-DATE                *
  45.      *                   '--- 5600-FINALIZE-VALIDATION                     *
  46.       *                    '--- 5610-STORE-LAST-VALID-REC                  *
  47.      *                                                                     *
  48.      *             8XXX --- PRINT VALID TRANSACTION FILE                   *
  49.      *                   '--- 8000-PRINT-VALID-TRANSFILE                   *
  50.       *                                                                    *
  51.       *            9XXX --- PRINT VALID TRANSACTION FILE                   *
  52.       *                  |--- 9000-PRINT-PROOFLIST-HDR                     *
  53.       *                  |--- 9100-PRINT-PROOFLIST-DTL                     *
  54.       *                  '--- 9200-PRINT-PROOFLIST-FTR                     *                                        
  55.      *                                                                     *
  56.      ***********************************************************************  
  57.      
  58.      ***********************************************************************
  59.      *-----I D E N T I F I C A T I O N   D I V I S I O N-------------------*
  60.      ***********************************************************************
  61.       IDENTIFICATION DIVISION.
  62.       PROGRAM-ID. CBLHO2JN.
  63.       AUTHOR. Jan Noel Calayag.
  64.  
  65.      ***********************************************************************
  66.      *-----E N V I R O M E N T   D I V I S I O N---------------------------*
  67.      ***********************************************************************
  68.       ENVIRONMENT DIVISION.
  69.       INPUT-OUTPUT SECTION.
  70.       FILE-CONTROL.
  71.  
  72.             SELECT TRANS-FILE ASSIGN TO INPUT01
  73.               ORGANIZATION IS SEQUENTIAL.
  74.             SELECT VALID-TRANS-FILE ASSIGN TO OUTPUT01
  75.               ORGANIZATION IS SEQUENTIAL.
  76.             SELECT VALID-PROOF-LIST ASSIGN TO OUTPUT02
  77.               ORGANIZATION IS SEQUENTIAL.
  78.  
  79.      ***********************************************************************
  80.      *-----D A T A   D I V I S I O N---------------------------------------*
  81.      ***********************************************************************
  82.       DATA DIVISION.
  83.      *  ********************************************************************
  84.      *  *                     F I L E   S E C T I O N                      *
  85.      *  *                                                                  *
  86.      *  *        INPUT FILE:   TRANS-FILE -> TRANS-REC                     *
  87.      *  *        OUTPUT FILE:  VALID-TRANS-FILE -> VALID-TRANS-REC         *
  88.      *  *                      VALID-PROOF-LIST -> VALID-PROOF-REC         *
  89.      *  ********************************************************************
  90.       FILE SECTION.
  91.       FD    TRANS-FILE
  92.             RECORD CONTAINS 80 CHARACTERS
  93.             LABEL RECORDS ARE STANDARD
  94.             DATA RECORD IS TRANS-REC.
  95.       01    TRANS-REC                      PIC X(80).
  96.  
  97.       FD    VALID-TRANS-FILE
  98.             RECORD CONTAINS 80 CHARACTERS
  99.             LABEL RECORDS ARE STANDARD
  100.             DATA RECORD IS VALID-TRANS-REC.
  101.       01    VALID-TRANS-REC                PIC X(80).
  102.  
  103.       FD    VALID-PROOF-LIST
  104.             RECORD CONTAINS 133 CHARACTERS
  105.             LABEL RECORDS ARE STANDARD
  106.             DATA RECORD IS VALID-PROOF-REC.
  107.       01    VALID-PROOF-REC                PIC X(133).
  108.  
  109.      *  ********************************************************************
  110.      *  *          W O R K I N G   S T O R A G E   S E C T I O N           *
  111.      *  *                                                                  *
  112.      *  *        SUB GROUPS:                                               *
  113.      *  *                      TRANSACTION FILE                            *
  114.      *  *                      VALIDATION PROOF LIST                       *
  115.      *  *                      TEMPORARY BUFFER                            *
  116.      *  *                      SWITCHES, FLAGS, COUNTERS                   *
  117.      *  ********************************************************************
  118.       WORKING-STORAGE SECTION.
  119.      *     *****************************************************************
  120.      *     *     TRANSACTION FILE                                          *
  121.      *     *****************************************************************
  122.       01 WS-TRANS-FILE                     PIC X(80)
  123.               VALUE SPACES.
  124.  
  125.       01 WS-TRANS-FILE-HDR REDEFINES WS-TRANS-FILE.
  126.          05 TRANS-FILE-HDR-DATE.
  127.             10 TRANS-FILE-HDR-CC           PIC 9(02).
  128.             10 TRANS-FILE-HDR-YY           PIC 9(02).
  129.             10 TRANS-FILE-HDR-MM           PIC 9(02).
  130.             10 TRANS-FILE-HDR-DD           PIC 9(02).
  131.          05 TRANS-FILE-HDR-CCYY REDEFINES TRANS-FILE-HDR-DATE
  132.                                            PIC 9(04).
  133.          05 TRANS-FILE-HDR-CCYYMM REDEFINES TRANS-FILE-HDR-DATE
  134.                                            PIC 9(06).
  135.          05 FILLER                         PIC X(72).
  136.  
  137.       01 WS-TRANS-FILE-REC REDEFINES WS-TRANS-FILE.
  138.          05 TRANS-FILE-REC-EMPNO           PIC 9(06).
  139.          05 TRANS-FILE-REC-FILLER          PIC X(67).
  140.          05 TRANS-FILE-REC-DATE.
  141.             10 TRANS-FILE-REC-CC           PIC 9(02).
  142.             10 TRANS-FILE-REC-YY           PIC 9(02).
  143.             10 TRANS-FILE-REC-MM           PIC 9(02).
  144.          05 TRANS-FILE-REC-CCYY REDEFINES TRANS-FILE-REC-DATE
  145.                                            PIC 9(04).
  146.          05 TRANS-FILE-REC-CODE            PIC 9(01).
  147.  
  148.       01 WS-TRANS-FILE-TC0 REDEFINES WS-TRANS-FILE.
  149.          05 FILLER                         PIC X(06).
  150.          05 TRANS-FILE-REC-EE-PRCNT        PIC X(05).
  151.          05 TRANS-FILE-REC-EE-PRCNT-9 REDEFINES TRANS-FILE-REC-EE-PRCNT
  152.                                            PIC 9(03)V99.
  153.          05 TRANS-FILE-REC-ER-PRCNT        PIC X(05).
  154.          05 TRANS-FILE-REC-ER-PRCNT-9 REDEFINES TRANS-FILE-REC-ER-PRCNT
  155.                                            PIC 9(03)V99.
  156.          05 FILLER                         PIC X(64).
  157.  
  158.       01 WS-TRANS-FILE-TC1 REDEFINES WS-TRANS-FILE.
  159.          05 FILLER                         PIC X(06).
  160.          05 TRANS-FILE-REC-EE-CONTR        PIC X(10).
  161.          05 TRANS-FILE-REC-EE-CONTR-9 REDEFINES TRANS-FILE-REC-EE-CONTR
  162.                                            PIC 9(08)V99.
  163.          05 TRANS-FILE-REC-ER-CONTR        PIC X(10).
  164.          05 TRANS-FILE-REC-ER-CONTR-9 REDEFINES TRANS-FILE-REC-ER-CONTR
  165.                                            PIC 9(08)V99.
  166.          05 FILLER                         PIC X(54).
  167.  
  168.       01 WS-TRANS-FILE-TC2 REDEFINES WS-TRANS-FILE.
  169.          05 FILLER                         PIC X(06).
  170.          05 TRANS-FILE-REC-EE-EARNG        PIC X(10).
  171.          05 TRANS-FILE-REC-EE-EARNG-9 REDEFINES TRANS-FILE-REC-EE-EARNG
  172.                                            PIC 9(08)V99.
  173.          05 TRANS-FILE-REC-ER-EARNG        PIC X(10).
  174.          05 TRANS-FILE-REC-ER-EARNG-9 REDEFINES TRANS-FILE-REC-ER-EARNG
  175.                                            PIC 9(08)V99.
  176.          05 FILLER                         PIC X(54).
  177.  
  178.      *     *****************************************************************
  179.      *     *     VALIDATION PROOF LIST                                     *
  180.      *     *****************************************************************
  181.       01 WS-PROOF-LIST-HDR1.
  182.          05 FILLER                         PIC X(12)
  183.             VALUE 'PROGRAM ID :'.
  184.          05 FILLER                         PIC X(01)
  185.             VALUE SPACES.
  186.          05 FILLER                         PIC X(08)
  187.             VALUE 'CBLHO2JN'.
  188.          05 FILLER                         PIC X(26)
  189.             VALUE SPACES.
  190.          05 FILLER                         PIC X(34)
  191.             VALUE 'POINTWEST TECHNOLOGIES CORPORATION'.
  192.  
  193.       01 WS-PROOF-LIST-HDR2.
  194.          05 FILLER                         PIC X(12)
  195.             VALUE 'RUN DATE   :'.
  196.          05 FILLER                         PIC X(01)
  197.             VALUE SPACES.
  198.          05 PROOF-LIST-HDR-MM               PIC 9(02)
  199.             VALUE ZERO.
  200.          05 FILLER                         PIC X(01)
  201.             VALUE '/'.
  202.          05 PROOF-LIST-HDR-DD               PIC 9(02)
  203.             VALUE ZERO.
  204.          05 FILLER                         PIC X(01)
  205.             VALUE '/'.
  206.          05 PROOF-LIST-HDR-CC            PIC 9(02)
  207.                VALUE 20.
  208.          05 PROOF-LIST-HDR-YY            PIC 9(02)
  209.             VALUE ZERO.
  210.          05 FILLER                         PIC X(23)
  211.             VALUE SPACES.
  212.          05 FILLER                         PIC X(35)
  213.             VALUE 'PROVIDENT FUND VALIDATION PROOFLIST'.
  214.  
  215.       01 WS-PROOF-LIST-HDR3.
  216.          05 FILLER                         PIC X(54)
  217.             VALUE SPACES.
  218.          05 FILLER                         PIC X(05)
  219.             VALUE 'AS OF'.
  220.          05 FILLER                         PIC X(01)
  221.             VALUE SPACES.
  222.          05 PROOF-LIST-HDR-MONTH            PIC X(09)
  223.             VALUE SPACES.
  224.             88 PROOF-LIST-HDR-MONTH01       VALUE '  JANUARY'.
  225.             88 PROOF-LIST-HDR-MONTH02       VALUE ' FEBRUARY'.
  226.             88 PROOF-LIST-HDR-MONTH03       VALUE '    MARCH'.
  227.             88 PROOF-LIST-HDR-MONTH04       VALUE '    APRIL'.
  228.             88 PROOF-LIST-HDR-MONTH05       VALUE '      MAY'.
  229.             88 PROOF-LIST-HDR-MONTH06       VALUE '     JUNE'.
  230.             88 PROOF-LIST-HDR-MONTH07       VALUE '     JULY'.
  231.             88 PROOF-LIST-HDR-MONTH08       VALUE '   AUGUST'.
  232.             88 PROOF-LIST-HDR-MONTH09       VALUE 'SEPTEMBER'.
  233.             88 PROOF-LIST-HDR-MONTH10       VALUE '  OCTOBER'.
  234.             88 PROOF-LIST-HDR-MONTH11       VALUE ' NOVEMBER'.
  235.             88 PROOF-LIST-HDR-MONTH12       VALUE ' DECEMBER'.
  236.          05 FILLER                         PIC X(01)
  237.             VALUE ','.
  238.          05 PROOF-LIST-HDR-YEAR          PIC 9(04)
  239.             VALUE ZERO.
  240.  
  241.       01 WS-PROOF-LIST-HDR4.
  242.          05 FILLER                         PIC X(04)
  243.             VALUE 'TRAN'.
  244.          05 FILLER                         PIC X(02)
  245.             VALUE SPACES.
  246.          05 FILLER                         PIC X(08)
  247.             VALUE 'EMPLOYEE'.
  248.          05 FILLER                         PIC X(09)
  249.             VALUE SPACES.
  250.          05 FILLER                         PIC X(08)
  251.             VALUE 'EMPLOYEE'.
  252.          05 FILLER                         PIC X(20)
  253.             VALUE SPACES.
  254.          05 FILLER                         PIC X(08)
  255.             VALUE 'EMPLOYER'.
  256.          05 FILLER                         PIC X(16)
  257.             VALUE SPACES.
  258.          05 FILLER                         PIC X(16)
  259.             VALUE 'TRANSACTION DATE'.
  260.          05 FILLER                         PIC X(14)
  261.             VALUE SPACES.
  262.          05 FILLER                         PIC X(07)
  263.             VALUE 'REMARKS'.
  264.  
  265.       01 WS-PROOF-LIST-HDR5.
  266.          05 FILLER                         PIC X(04)
  267.             VALUE 'CODE'.
  268.          05 FILLER                         PIC X(03)
  269.             VALUE SPACES.
  270.          05 FILLER                         PIC X(06)
  271.             VALUE 'NUMBER'.
  272.          05 FILLER                         PIC X(05)
  273.             VALUE SPACES.
  274.          05 FILLER                         PIC X(20)
  275.             VALUE '% CONT / CONT / EARN'.
  276.          05 FILLER                         PIC X(07)
  277.             VALUE SPACES.
  278.          05 FILLER                         PIC X(20)
  279.             VALUE '% CONT / CONT / EARN'.
  280.          05 FILLER                         PIC X(13)
  281.             VALUE SPACES.
  282.          05 FILLER                         PIC X(06)
  283.             VALUE 'CCYYMM'.
  284.  
  285.       01 WS-PROOF-LIST                 PIC X(133)
  286.               VALUE SPACES.
  287.  
  288.       01 WS-PROOF-LIST-DTL REDEFINES WS-PROOF-LIST.
  289.          05 FILLER                         PIC X(01).
  290.          05 PROOF-LIST-DTL-CODE            PIC X(01).
  291.          05 PROOF-LIST-DTL-CODE-STAT       PIC X(01).
  292.             88 PROOF-LIST-DTL-CODE-ERR
  293.             VALUE '*'.
  294.          05 FILLER                         PIC X(03).
  295.          05 PROOF-LIST-DTL-EMPNO            PIC X(06).
  296.          05 PROOF-LIST-DTL-EMPNO-STAT       PIC X(01).
  297.             88 PROOF-LIST-DTL-EMPNO-ERR
  298.             VALUE '*'.
  299.          05 FILLER                         PIC X(08).
  300.          05 PROOF-LIST-DTL-EE            PIC X(11).
  301.          05 PROOF-LIST-DTL-EE-9 REDEFINES PROOF-LIST-DTL-EE
  302.                                          PIC ZZZZZZZ9.99.
  303.          05 PROOF-LIST-DTL-EE-STAT       PIC X(01).
  304.             88 PROOF-LIST-DTL-EE-ERR
  305.             VALUE '*'.
  306.          05 FILLER                         PIC X(17).
  307.          05 PROOF-LIST-DTL-ER            PIC X(11).
  308.          05 PROOF-LIST-DTL-ER-9 REDEFINES PROOF-LIST-DTL-ER
  309.                                          PIC ZZZZZZZ9.99.
  310.          05 PROOF-LIST-DTL-ER-STAT       PIC X(01).
  311.             88 PROOF-LIST-DTL-ER-ERR
  312.             VALUE '*'.
  313.          05 FILLER                         PIC X(16).
  314.          05 PROOF-LIST-DTL-DATE            PIC X(06).
  315.          05 PROOF-LIST-DTL-DATE-STAT       PIC X(01).
  316.             88 PROOF-LIST-DTL-DATE-ERR
  317.             VALUE '*'.
  318.          05 FILLER                         PIC X(13).
  319.          05 PROOF-LIST-DTL-REMARKS         PIC X(29).
  320.             88 PROOF-LIST-DTL-REMARKS-VAL
  321.             VALUE 'VALID TRANSACTION'.
  322.             88 PROOF-LIST-DTL-REMARKS-INV
  323.             VALUE 'INVALID TRANSACTION'.
  324.  
  325.       01 WS-PROOF-LIST-FTR1.
  326.          05 FILLER                         PIC X(21)
  327.             VALUE SPACES.
  328.          05 FILLER                         PIC X(30)
  329.             VALUE 'TOTAL NUMBER OF RECORDS READ ='.
  330.          05 FILLER                         PIC X(01)
  331.             VALUE SPACES.
  332.          05 PROOF-LIST-FTR-REC-READ             PIC ZZ,ZZ9
  333.             VALUE ZERO.
  334.  
  335.       01 WS-PROOF-LIST-FTR2.
  336.          05 FILLER                         PIC X(21)
  337.             VALUE SPACES.
  338.          05 FILLER                         PIC X(30)
  339.             VALUE 'TOTAL INVALID RECORDS        ='.
  340.          05 FILLER                         PIC X(01)
  341.             VALUE SPACES.
  342.          05 PROOF-LIST-FTR-REC-INV              PIC ZZ,ZZ9
  343.             VALUE ZERO.
  344.  
  345.       01 WS-PROOF-LIST-FTR3.
  346.          05 FILLER                         PIC X(21)
  347.             VALUE SPACES.
  348.          05 FILLER                         PIC X(30)
  349.             VALUE 'TOTAL VALID RECORDS          ='.
  350.          05 FILLER                         PIC X(01)
  351.             VALUE SPACES.
  352.          05 PROOF-LIST-FTR-REC-VAL              PIC ZZ,ZZ9
  353.             VALUE ZERO.
  354.  
  355.      *     *****************************************************************
  356.      *     *     TEMPORARY BUFFER                                          *
  357.      *     *****************************************************************
  358.       01 WS-RUN-DATE.
  359.          05 RUN-DATE-YY             PIC 9(02)
  360.                VALUE ZERO.
  361.          05 RUN-DATE-MM               PIC 9(02)
  362.                VALUE ZERO.
  363.          05 RUN-DATE-DD               PIC 9(02)
  364.                VALUE ZERO.
  365.  
  366.       01 WS-HDR-CCYYMM                    PIC 9(06)
  367.             VALUE ZERO.
  368.  
  369.       01 WS-LAST-VALID-RECORD.
  370.          05 LAST-VALID-EMPNO                PIC 9(06)
  371.               VALUE ZERO.
  372.          05 LAST-VALID-DATE                 PIC 9(06)
  373.               VALUE ZERO.
  374.          05 LAST-VALID-CODE                 PIC 9(01)
  375.               VALUE ZERO.
  376.  
  377.  
  378.      *     *****************************************************************
  379.      *     *     SWITCHES, FLAGS, COUNTERS                                 *
  380.      *     *****************************************************************
  381.       01 WS-FILE-STATE                 PIC X(01)
  382.               VALUE 'B'.
  383.          88 WS-BOF               VALUE 'B'.
  384.          88 WS-NOT-EOF           VALUE 'N'.
  385.          88 WS-EOF               VALUE 'E'.
  386.  
  387.       01 WS-VALIDITY-FLAGS.
  388.          05 WS-STATE-EMPNO             PIC X(01)
  389.               VALUE 'Y'.
  390.             88 WS-VAL-EMPNO               VALUE 'Y'.
  391.             88 WS-INV-EMPNO               VALUE 'N'.
  392.  
  393.          05 WS-STATE-DATE             PIC X(01)
  394.               VALUE 'Y'.
  395.             88 WS-VAL-DATE               VALUE 'Y'.
  396.             88 WS-INV-DATE               VALUE 'N'.
  397.  
  398.          05 WS-STATE-CODE             PIC X(01)
  399.               VALUE 'Y'.
  400.             88 WS-VAL-CODE               VALUE 'Y'.
  401.             88 WS-INV-CODE               VALUE 'N'.
  402.  
  403.          05 WS-STATE-EE             PIC X(01)
  404.               VALUE 'Y'.
  405.             88 WS-VAL-EE               VALUE 'Y'.
  406.             88 WS-INV-EE               VALUE 'N'.
  407.             88 WS-NOTNUM-EE            VALUE 'X'.
  408.  
  409.          05 WS-STATE-ER             PIC X(01)
  410.               VALUE 'Y'.
  411.             88 WS-VAL-ER               VALUE 'Y'.
  412.             88 WS-INV-ER               VALUE 'N'.
  413.             88 WS-NOTNUM-ER            VALUE 'X'.
  414.  
  415.       77 WS-CTR-REC-READ               PIC 9(05)
  416.               VALUE ZERO.
  417.  
  418.       77 WS-CTR-REC-VAL                PIC 9(05)
  419.               VALUE ZERO.
  420.  
  421.       77 WS-CTR-REC-INV                PIC 9(05)
  422.               VALUE ZERO.
  423.  
  424.      ***********************************************************************
  425.      *-----P R O C E D U R E   D I V I S I O N-----------------------------*
  426.      ***********************************************************************
  427.       PROCEDURE DIVISION.
  428.      *  ********************************************************************
  429.      *  *        0XXX - MAIN PROGRAM                                       *
  430.      *  ********************************************************************
  431.       0000-MAIN-PROC.
  432.            PERFORM 1000-CONSTRUCT
  433.               THRU 1000-EXIT.
  434.            PERFORM 3000-PROCESS
  435.               THRU 3000-EXIT
  436.               UNTIL WS-EOF.
  437.            PERFORM 2000-DECONSTRUCT
  438.               THRU 2000-EXIT.
  439.       0000-EXIT.
  440.            EXIT.
  441.  
  442.      *  ********************************************************************
  443.      *  *        1XXX - CONSTRUCT                                          *
  444.      *  ********************************************************************
  445.       1000-CONSTRUCT.
  446.            OPEN INPUT  TRANS-FILE.
  447.            OPEN OUTPUT VALID-TRANS-FILE.
  448.            OPEN OUTPUT VALID-PROOF-LIST.
  449.       1000-EXIT.
  450.            EXIT.
  451.  
  452.      *  ********************************************************************
  453.      *  *        2XXX - DECONSTRUCT                                        *
  454.      *  ********************************************************************
  455.       2000-DECONSTRUCT.
  456.            CLOSE TRANS-FILE.
  457.            CLOSE VALID-TRANS-FILE.
  458.            CLOSE VALID-PROOF-LIST.
  459.            STOP RUN.
  460.       2000-EXIT.
  461.            EXIT.
  462.  
  463.      *  ********************************************************************
  464.      *  *        3XXX - PROCESS                                            *
  465.      *  ********************************************************************
  466.       3000-PROCESS.
  467.            READ TRANS-FILE
  468.               AT END
  469.                  IF NOT WS-BOF THEN
  470.                     PERFORM 9200-PRINT-PROOFLIST-FTR THRU 9200-EXIT
  471.                  END-IF
  472.                  SET WS-EOF TO TRUE
  473.               NOT AT END
  474.                   MOVE TRANS-REC TO WS-TRANS-FILE
  475.                   EVALUATE TRUE
  476.                       WHEN WS-BOF
  477.                         PERFORM 4000-VALIDATE-HDR THRU 4000-EXIT
  478.                         SET WS-NOT-EOF TO TRUE
  479.                       WHEN WS-NOT-EOF
  480.                         PERFORM 3100-RESET-VALUES THRU 3100-EXIT
  481.                         PERFORM 5000-VALIDATE-REC THRU 5000-EXIT
  482.                  END-EVALUATE
  483.            END-READ.
  484.       3000-EXIT.
  485.            EXIT.
  486.  
  487.       3100-RESET-VALUES.
  488.            INITIALIZE WS-PROOF-LIST.
  489.            INITIALIZE WS-VALIDITY-FLAGS.
  490.       3100-EXIT.
  491.            EXIT.
  492.  
  493.      *  ********************************************************************
  494.      *  *        4XXX - VALIDATE HEADER                                    *
  495.      *  ********************************************************************
  496.       4000-VALIDATE-HDR.
  497.            IF TRANS-FILE-HDR-MM >=  1 AND
  498.               TRANS-FILE-HDR-MM <= 12 AND
  499.               TRANS-FILE-HDR-DD =   1 AND
  500.               TRANS-FILE-HDR-CCYY >= 1950 AND
  501.               TRANS-FILE-HDR-CCYY <= 2100 THEN
  502.               PERFORM 8000-PRINT-VALID-TRANSFILE THRU 8000-EXIT
  503.               PERFORM 9000-PRINT-PROOFLIST-HDR THRU 9000-EXIT
  504.               MOVE TRANS-FILE-HDR-CCYYMM TO WS-HDR-CCYYMM
  505.            ELSE
  506.               DISPLAY 'INVALID DATE: CCYYMMDD'
  507.               PERFORM 2000-DECONSTRUCT THRU 2000-EXIT
  508.            END-IF.
  509.       4000-EXIT.
  510.  
  511.      *  ********************************************************************
  512.      *  *        5XXX - VALIDATE RECORDS                                   *
  513.      *  ********************************************************************
  514.       5000-VALIDATE-REC.
  515.            PERFORM 5100-INITIAL-VALIDATION THRU 5100-EXIT.
  516.            IF WS-VAL-CODE THEN
  517.               PERFORM 5200-FILTER-BY-CODE   THRU 5200-EXIT
  518.            ELSE
  519.               MOVE SPACES TO TRANS-FILE-REC-FILLER
  520.            END-IF.
  521.            PERFORM 5300-SEQ-UNIQ-VALIDATION-EMPNO THRU 5300-EXIT.
  522.            PERFORM 5600-FINALIZE-VALIDATION THRU 5600-EXIT.
  523.       5000-EXIT.
  524.            EXIT.
  525. *********************1ST VALIDATION
  526.       5100-INITIAL-VALIDATION.
  527.            PERFORM 5110-INITIAL-VALIDATION-EMPNO THRU 5110-EXIT.
  528.            PERFORM 5120-INITIAL-VALIDATION-DATE  THRU 5120-EXIT.
  529.            PERFORM 5130-INITIAL-VALIDATION-CODE  THRU 5130-EXIT.
  530.  
  531.       5100-EXIT.
  532.            EXIT.
  533.  
  534.       5110-INITIAL-VALIDATION-EMPNO.
  535.            IF TRANS-FILE-REC-EMPNO IS NUMERIC THEN
  536.               SET WS-VAL-EMPNO TO TRUE
  537.            ELSE
  538.               SET WS-INV-EMPNO TO TRUE
  539.            END-IF.
  540.       5110-EXIT.
  541.            EXIT.
  542.  
  543.       5120-INITIAL-VALIDATION-DATE.
  544.            IF TRANS-FILE-REC-DATE IS NUMERIC AND
  545.               TRANS-FILE-REC-DATE <  WS-HDR-CCYYMM AND
  546.               TRANS-FILE-REC-MM   >=  1   AND
  547.               TRANS-FILE-REC-MM   <= 12   AND
  548.               TRANS-FILE-REC-CCYY >= 1950 AND
  549.               TRANS-FILE-REC-CCYY <= 2100 THEN
  550.               SET WS-VAL-DATE TO TRUE
  551.            ELSE
  552.               SET WS-INV-DATE TO TRUE
  553.            END-IF.
  554.       5120-EXIT.
  555.            EXIT.
  556.  
  557.       5130-INITIAL-VALIDATION-CODE.
  558.            IF TRANS-FILE-REC-CODE IS NUMERIC AND
  559.               TRANS-FILE-REC-CODE >= 0 AND
  560.               TRANS-FILE-REC-CODE <= 2 THEN
  561.               SET WS-VAL-CODE TO TRUE
  562.            ELSE
  563.               SET WS-INV-CODE TO TRUE
  564.            END-IF.
  565.       5130-EXIT.
  566.            EXIT.
  567.  
  568. *********************2ND VALIDATION
  569.       5200-FILTER-BY-CODE.
  570.            EVALUATE TRANS-FILE-REC-CODE
  571.               WHEN 0 PERFORM 5210-FILTER-BY-TC0 THRU 5210-EXIT
  572.               WHEN 1 PERFORM 5220-FILTER-BY-TC1 THRU 5220-EXIT
  573.               WHEN 2 PERFORM 5230-FILTER-BY-TC2 THRU 5230-EXIT
  574.            END-EVALUATE.
  575.       5200-EXIT.
  576.            EXIT.
  577.  
  578.       5210-FILTER-BY-TC0.
  579.            IF TRANS-FILE-REC-EE-PRCNT IS NUMERIC THEN
  580.               IF TRANS-FILE-REC-EE-PRCNT-9 = 3 OR
  581.                  TRANS-FILE-REC-EE-PRCNT-9 = 6 THEN
  582.                  SET WS-VAL-EE TO TRUE
  583.               ELSE
  584.                  SET WS-INV-EE TO TRUE
  585.               END-IF
  586.            ELSE
  587.               SET WS-NOTNUM-EE TO TRUE
  588.            END-IF.
  589.  
  590.            IF TRANS-FILE-REC-ER-PRCNT IS NUMERIC THEN
  591.               IF TRANS-FILE-REC-ER-PRCNT-9 = 3 OR
  592.                  TRANS-FILE-REC-ER-PRCNT-9 = 6 THEN
  593.                  SET WS-VAL-ER TO TRUE
  594.               ELSE
  595.                  SET WS-INV-ER TO TRUE
  596.               END-IF
  597.            ELSE
  598.               SET WS-NOTNUM-ER TO TRUE
  599.            END-IF.
  600.       5210-EXIT.
  601.            EXIT.
  602.  
  603.       5220-FILTER-BY-TC1.
  604.            IF TRANS-FILE-REC-EE-CONTR IS NUMERIC THEN
  605.               SET WS-VAL-EE TO TRUE
  606.            ELSE
  607.               SET WS-NOTNUM-EE TO TRUE
  608.            END-IF.
  609.  
  610.            IF TRANS-FILE-REC-ER-CONTR IS NUMERIC THEN
  611.               SET WS-VAL-ER TO TRUE
  612.            ELSE
  613.               SET WS-NOTNUM-ER TO TRUE
  614.            END-IF.
  615.       5220-EXIT.
  616.            EXIT.
  617.  
  618.       5230-FILTER-BY-TC2.
  619.            IF TRANS-FILE-REC-EE-EARNG IS NUMERIC THEN
  620.               SET WS-VAL-EE TO TRUE
  621.            ELSE
  622.               SET WS-NOTNUM-EE TO TRUE
  623.            END-IF.
  624.  
  625.            IF TRANS-FILE-REC-ER-EARNG IS NUMERIC THEN
  626.               SET WS-VAL-ER TO TRUE
  627.            ELSE
  628.               SET WS-NOTNUM-ER TO TRUE
  629.            END-IF.
  630.       5230-EXIT.
  631.            EXIT.
  632.  
  633. ******************************3RD VALIDATION
  634.       5300-SEQ-UNIQ-VALIDATION-EMPNO.
  635.            IF WS-VAL-EMPNO THEN
  636.               EVALUATE TRUE
  637.                  WHEN TRANS-FILE-REC-EMPNO = LAST-VALID-EMPNO
  638.                     PERFORM 5400-SEQ-UNIQ-VALIDATION-CODE
  639.                     THRU 5400-EXIT
  640.                  WHEN TRANS-FILE-REC-EMPNO < LAST-VALID-EMPNO
  641.                     SET WS-INV-EMPNO TO TRUE
  642.               END-EVALUATE
  643.            END-IF.
  644.       5300-EXIT.
  645.            EXIT.
  646.  
  647.       5400-SEQ-UNIQ-VALIDATION-CODE.
  648.            IF WS-VAL-CODE THEN
  649.               IF TRANS-FILE-REC-CODE <= LAST-VALID-CODE THEN
  650.                  SET WS-INV-CODE TO TRUE
  651.               END-IF
  652.            END-IF.
  653.            PERFORM 5500-SEQ-UNIQ-VALIDATION-DATE THRU 5500-EXIT.
  654.       5400-EXIT.
  655.            EXIT.
  656.  
  657.       5500-SEQ-UNIQ-VALIDATION-DATE.
  658.            IF WS-VAL-DATE THEN
  659.               IF TRANS-FILE-REC-DATE < LAST-VALID-DATE THEN
  660.                  SET WS-INV-DATE TO TRUE
  661.               END-IF
  662.            END-IF.
  663.       5500-EXIT.
  664.            EXIT.
  665.  
  666. ************************************4TH
  667.  
  668.       5600-FINALIZE-VALIDATION.
  669.            IF WS-VAL-EMPNO AND
  670.               WS-VAL-DATE  AND
  671.               WS-VAL-CODE  AND
  672.               WS-VAL-EE    AND
  673.               WS-VAL-ER    THEN
  674.               PERFORM 5610-STORE-LAST-VALID-REC THRU 5610-EXIT
  675.               PERFORM 8000-PRINT-VALID-TRANSFILE THRU 8000-EXIT
  676.               ADD 1 TO WS-CTR-REC-VAL
  677.               SET PROOF-LIST-DTL-REMARKS-VAL TO TRUE
  678.            ELSE
  679.               ADD 1 TO WS-CTR-REC-INV
  680.               SET PROOF-LIST-DTL-REMARKS-INV TO TRUE
  681.            END-IF.
  682.            ADD 1 TO WS-CTR-REC-READ.
  683.            PERFORM 9100-PRINT-PROOFLIST-DTL THRU 9100-EXIT.
  684.       5600-EXIT.
  685.            EXIT.
  686.  
  687.       5610-STORE-LAST-VALID-REC.
  688.            MOVE TRANS-FILE-REC-EMPNO TO LAST-VALID-EMPNO.
  689.            MOVE TRANS-FILE-REC-DATE TO LAST-VALID-DATE.
  690.            MOVE TRANS-FILE-REC-CODE TO LAST-VALID-CODE.
  691.       5610-EXIT.
  692.            EXIT.
  693.  
  694.  
  695.  
  696.      *  ********************************************************************
  697.      *  *        8XXX - PRINT VALID TRANSACTION FILE                       *
  698.      *  ********************************************************************
  699.       8000-PRINT-VALID-TRANSFILE.
  700.            WRITE VALID-TRANS-REC FROM WS-TRANS-FILE.
  701.       8000-EXIT.
  702.            EXIT.
  703.      *  ********************************************************************
  704.      *  *        9XXX - PRINT VALIDATION PROOFLIST                         *
  705.      *  ********************************************************************
  706.       9000-PRINT-PROOFLIST-HDR.
  707.            ACCEPT WS-RUN-DATE FROM DATE.
  708.            MOVE RUN-DATE-MM TO PROOF-LIST-HDR-MM.
  709.            MOVE RUN-DATE-DD TO PROOF-LIST-HDR-DD.
  710.            MOVE RUN-DATE-YY TO PROOF-LIST-HDR-YY.
  711.            MOVE TRANS-FILE-HDR-CCYY TO PROOF-LIST-HDR-YEAR.
  712.  
  713.            EVALUATE TRANS-FILE-HDR-MM
  714.               WHEN 01 SET PROOF-LIST-HDR-MONTH01 TO TRUE
  715.               WHEN 02 SET PROOF-LIST-HDR-MONTH02 TO TRUE
  716.               WHEN 03 SET PROOF-LIST-HDR-MONTH03 TO TRUE
  717.               WHEN 04 SET PROOF-LIST-HDR-MONTH04 TO TRUE
  718.               WHEN 05 SET PROOF-LIST-HDR-MONTH05 TO TRUE
  719.               WHEN 06 SET PROOF-LIST-HDR-MONTH06 TO TRUE
  720.               WHEN 07 SET PROOF-LIST-HDR-MONTH07 TO TRUE
  721.               WHEN 08 SET PROOF-LIST-HDR-MONTH08 TO TRUE
  722.               WHEN 09 SET PROOF-LIST-HDR-MONTH09 TO TRUE
  723.               WHEN 10 SET PROOF-LIST-HDR-MONTH10 TO TRUE
  724.               WHEN 11 SET PROOF-LIST-HDR-MONTH11 TO TRUE
  725.               WHEN 12 SET PROOF-LIST-HDR-MONTH12 TO TRUE
  726.            END-EVALUATE.
  727.  
  728.            WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-HDR1.
  729.             WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-HDR2.
  730.             WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-HDR3.
  731.  
  732.            MOVE SPACES TO VALID-PROOF-REC.
  733.            WRITE VALID-PROOF-REC.
  734.            MOVE SPACES TO VALID-PROOF-REC.
  735.            WRITE VALID-PROOF-REC.
  736.  
  737.             WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-HDR4.
  738.             WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-HDR5.
  739.  
  740.            MOVE SPACES TO VALID-PROOF-REC.
  741.            WRITE VALID-PROOF-REC.
  742.  
  743.       9000-EXIT.
  744.            EXIT.
  745.  
  746.       9100-PRINT-PROOFLIST-DTL.
  747.            MOVE TRANS-FILE-REC-CODE  TO PROOF-LIST-DTL-CODE.
  748.            MOVE TRANS-FILE-REC-EMPNO TO PROOF-LIST-DTL-EMPNO.
  749.            MOVE TRANS-FILE-REC-DATE  TO PROOF-LIST-DTL-DATE.
  750.  
  751.            IF WS-INV-EMPNO THEN
  752.               SET PROOF-LIST-DTL-EMPNO-ERR TO TRUE
  753.            END-IF.
  754.  
  755.            IF WS-INV-DATE  THEN
  756.               SET PROOF-LIST-DTL-DATE-ERR TO TRUE
  757.            END-IF.
  758.  
  759.            IF WS-INV-CODE  THEN
  760.               SET PROOF-LIST-DTL-CODE-ERR TO TRUE
  761.            END-IF.
  762.  
  763.            IF WS-INV-EE OR
  764.               WS-NOTNUM-EE THEN
  765.               SET PROOF-LIST-DTL-EE-ERR TO TRUE
  766.            END-IF.
  767.  
  768.            IF WS-INV-ER    OR
  769.               WS-NOTNUM-ER THEN
  770.               SET PROOF-LIST-DTL-ER-ERR TO TRUE
  771.            END-IF.
  772.  
  773.            IF WS-NOTNUM-EE THEN
  774.               EVALUATE TRANS-FILE-REC-CODE
  775.                  WHEN 0
  776.                     MOVE TRANS-FILE-REC-EE-PRCNT
  777.                     TO PROOF-LIST-DTL-EE
  778.                  WHEN 1
  779.                     MOVE TRANS-FILE-REC-EE-CONTR
  780.                     TO PROOF-LIST-DTL-EE
  781.                  WHEN 2
  782.                     MOVE TRANS-FILE-REC-EE-EARNG
  783.                     TO PROOF-LIST-DTL-EE
  784.               END-EVALUATE
  785.            ELSE
  786.               EVALUATE TRANS-FILE-REC-CODE
  787.                  WHEN 0
  788.                     MOVE TRANS-FILE-REC-EE-PRCNT-9
  789.                     TO PROOF-LIST-DTL-EE-9
  790.                  WHEN 1
  791.                     MOVE TRANS-FILE-REC-EE-CONTR-9
  792.                     TO PROOF-LIST-DTL-EE-9
  793.                  WHEN 2
  794.                     MOVE TRANS-FILE-REC-EE-EARNG-9
  795.                     TO PROOF-LIST-DTL-EE-9
  796.               END-EVALUATE
  797.            END-IF.
  798.  
  799.            IF WS-NOTNUM-ER THEN
  800.               EVALUATE TRANS-FILE-REC-CODE
  801.                  WHEN 0
  802.                     MOVE TRANS-FILE-REC-ER-PRCNT
  803.                     TO PROOF-LIST-DTL-ER
  804.                  WHEN 1
  805.                     MOVE TRANS-FILE-REC-ER-CONTR
  806.                     TO PROOF-LIST-DTL-ER
  807.                  WHEN 2
  808.                     MOVE TRANS-FILE-REC-ER-EARNG
  809.                     TO PROOF-LIST-DTL-ER
  810.               END-EVALUATE
  811.            ELSE
  812.               EVALUATE TRANS-FILE-REC-CODE
  813.                  WHEN 0
  814.                     MOVE TRANS-FILE-REC-ER-PRCNT-9
  815.                     TO PROOF-LIST-DTL-ER-9
  816.                  WHEN 1
  817.                     MOVE TRANS-FILE-REC-ER-CONTR-9
  818.                     TO PROOF-LIST-DTL-ER-9
  819.                  WHEN 2
  820.                     MOVE TRANS-FILE-REC-ER-EARNG-9
  821.                     TO PROOF-LIST-DTL-ER-9
  822.               END-EVALUATE
  823.            END-IF.
  824.  
  825.             WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-DTL.
  826.       9100-EXIT.
  827.            EXIT.
  828.  
  829.       9200-PRINT-PROOFLIST-FTR.
  830.            MOVE WS-CTR-REC-READ TO PROOF-LIST-FTR-REC-READ.
  831.            MOVE WS-CTR-REC-VAL  TO PROOF-LIST-FTR-REC-VAL.
  832.            MOVE WS-CTR-REC-INV  TO PROOF-LIST-FTR-REC-INV.
  833.  
  834.            MOVE SPACES TO VALID-PROOF-REC.
  835.            WRITE VALID-PROOF-REC.
  836.            MOVE SPACES TO VALID-PROOF-REC.
  837.            WRITE VALID-PROOF-REC.
  838.  
  839.            WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-FTR1.
  840.            WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-FTR2.
  841.            WRITE VALID-PROOF-REC FROM WS-PROOF-LIST-FTR3.
  842.       9200-EXIT.
  843.            EXIT.
Add Comment
Please, Sign In to add comment