Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ******************************************************************
- * Author: Austin Benfield
- * Date: 10/16/19
- * Purpose:Read list of Football Stats and generate reports based
- * on the first 5 weeks of play with a focus on the QB position
- *
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID.
- CH1101.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT CUST-FILE
- ASSIGN TO "C:\Users\austi\Desktop\CH1101.DAT"
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT REPORT-OUT
- ASSIGN TO "C:\Users\austi\Desktop\CH1101.txt"
- ORGANIZATION IS LINE SEQUENTIAL.
- DATA DIVISION.
- FILE SECTION.
- FD CUST-FILE
- RECORD CONTAINS 39 CHARACTERS.
- 01 CUST-IN.
- 05 CUST-NO-IN PIC 9(3).
- 05 CUST-NAME-IN PIC X(27).
- 05 MAX-CREDIT-IN PIC 9(5).
- 05 CREDIT-RATING-IN PIC X(2).
- 05 TOTAL-BALANCE-DUE-IN PIC 9(5).
- FD REPORT-OUT
- RECORD CONTAINS 46 CHARACTERS.
- 01 ERROR-LISTING-OUT.
- 05 ERROR-TYPE-OUT PIC X(22).
- 05 ERROR-DESC-OUT PIC X(45).
- 05 ERROR-V-LABEL-OUT PIC X(6).
- 05 ERROR-VALUE-OUT PIC X(10).
- 05 ERROR-R-LABEL-OUT PIC X(9).
- 05 RECORD-COUNT-OUT PIC 9.
- 01 ERROR-REPORT-OUT.
- 05 TOTAL-LABEL-OUT PIC X(13) VALUE 'RECORD-TOTAL:'.
- 05 TOTAL-OUT PIC X(3).
- 05 FILLER PIC X VALUE ' '.
- 05 RANG-LABEL-OUT PIC X(14) VALUE 'RANGE-ERRORS:'.
- 05 RANGE-ERROR-OUT PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 N-LABEL-OUT PIC X(15) VALUE 'NAME ERRORS:'.
- 05 NAME-ERROR-OUT PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 B-LABEL-OUT PIC X(15) VALUE 'BALANCE ERRORS:'.
- 05 BALANCE-ERROR-OUT PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 RATING-LABEL-OUT PIC X(15) VALUE 'RATING ERRORS:'.
- 05 RATING-ERROR-OUT PIC 9.
- WORKING-STORAGE SECTION.
- 01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
- 01 ERROR-CODE PIC 9(3).
- 01 VALUE-GIVEN PIC X(20).
- 01 ERROR-LISTING.
- 05 ERROR-TYPE PIC X(22).
- 05 ERROR-DESC PIC X(45).
- 05 ERROR-V-LABEL PIC X(6) VALUE 'VALUE:'.
- 05 ERROR-VALUE PIC X(10).
- 05 ERROR-R-LABEL-OUT PIC X(9) VALUE 'RECORD: #'.
- 05 RECORD-COUNT PIC 9 VALUE 0.
- 01 ERROR-REPORT.
- 05 TOTAL-LABEL PIC X(13) VALUE 'RECORD-TOTAL:'.
- 05 TOTAL PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 RANG-LABEL PIC X(14) VALUE 'RANGE-ERRORS:'.
- 05 RANGE-ERROR PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 N-LABEL PIC X(15) VALUE 'NAME ERRORS:'.
- 05 NAME-ERROR PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 B-LABEL PIC X(15) VALUE 'BALANCE ERRORS:'.
- 05 BALANCE-ERROR PIC 9.
- 05 FILLER PIC X VALUE ' '.
- 05 RATING-LABEL PIC X(15) VALUE 'RATING ERRORS:'.
- 05 RATING-ERROR PIC 9.
- PROCEDURE DIVISION.
- 100-MAIN-MODULE.
- PERFORM 200-INIT.
- PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO'
- READ CUST-FILE
- AT END
- MOVE 'NO' TO ARE-THERE-MORE-RECORDS
- NOT AT END
- ADD 1 TO RECORD-COUNT
- PERFORM 300-CHECK-RANGE
- PERFORM 400-CHECK-NAME
- PERFORM 500-CHECK-BALANCE
- PERFORM 600-CHECK-RATING
- END-PERFORM.
- PERFORM 700-PRINT-REPORT
- PERFORM 800-END.
- 200-INIT.
- OPEN INPUT CUST-FILE
- OUTPUT REPORT-OUT.
- 300-CHECK-RANGE.
- EVALUATE CUST-NO-IN >= 101 AND <= 972
- WHEN TRUE CONTINUE
- WHEN FALSE
- ADD 1 TO RANGE-ERROR
- MOVE 100 TO ERROR-CODE
- PERFORM 750-PRINT-ERROR
- END-EVALUATE.
- 400-CHECK-NAME.
- EVALUATE CUST-NAME-IN = Spaces
- WHEN FALSE CONTINUE
- WHEN TRUE
- ADD 1 TO NAME-ERROR
- MOVE 200 TO ERROR-CODE
- PERFORM 750-PRINT-ERROR
- END-EVALUATE.
- 500-CHECK-BALANCE.
- EVALUATE TOTAL-BALANCE-DUE-IN <= MAX-CREDIT-IN
- WHEN TRUE CONTINUE
- WHEN FALSE
- ADD 1 TO BALANCE-ERROR
- MOVE 300 TO ERROR-CODE
- PERFORM 750-PRINT-ERROR
- END-EVALUATE.
- 600-CHECK-RATING.
- EVALUATE CREDIT-RATING-IN = 'EX' OR 'VG' OR 'G' OR 'A'
- WHEN TRUE CONTINUE
- WHEN FALSE
- ADD 1 to RATING-ERROR
- MOVE 400 TO ERROR-CODE
- PERFORM 750-PRINT-ERROR
- END-EVALUATE.
- 750-PRINT-ERROR.
- EVALUATE ERROR-CODE
- WHEN 100
- MOVE "Range Error" TO ERROR-TYPE
- MOVE "Values must be between 101-972" TO ERROR-DESC
- MOVE CUST-NO-IN TO ERROR-VALUE
- WHEN 200
- MOVE "Name Error" TO ERROR-TYPE
- MOVE "Name Value must not be blank" TO ERROR-DESC
- MOVE CUST-NAME-IN TO ERROR-VALUE
- WHEN 300
- MOVE "Balance Exceeded" TO ERROR-TYPE
- MOVE "Total Balance can't exceed max credit"
- TO ERROR-DESC
- MOVE TOTAL-BALANCE-DUE-IN TO ERROR-VALUE
- WHEN 400
- MOVE "Invalid Credit Error" TO ERROR-TYPE
- MOVE "Credit Rating must be EX,VG,G or A" TO ERROR-DESC
- MOVE CREDIT-RATING-IN TO ERROR-VALUE
- END-EVALUATE.
- MOVE RECORD-COUNT TO RECORD-COUNT-OUT
- WRITE ERROR-LISTING-OUT FROM ERROR-LISTING.
- 700-PRINT-REPORT.
- MOVE RECORD-COUNT TO TOTAL
- WRITE ERROR-REPORT-OUT FROM ERROR-REPORT.
- 800-END.
- CLOSE CUST-FILE
- REPORT-OUT
- STOP RUN.
- END PROGRAM CH1101.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement