Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.00 KB | None | 0 0
  1. ******************************************************************
  2. * Author: Austin Benfield
  3. * Date: 10/16/19
  4. * Purpose:Read list of Football Stats and generate reports based
  5. * on the first 5 weeks of play with a focus on the QB position
  6. *
  7. ******************************************************************
  8. IDENTIFICATION DIVISION.
  9. PROGRAM-ID.
  10. CH1101.
  11. ENVIRONMENT DIVISION.
  12. INPUT-OUTPUT SECTION.
  13. FILE-CONTROL.
  14. SELECT CUST-FILE
  15. ASSIGN TO "C:\Users\austi\Desktop\CH1101.DAT"
  16. ORGANIZATION IS LINE SEQUENTIAL.
  17. SELECT REPORT-OUT
  18. ASSIGN TO "C:\Users\austi\Desktop\CH1101.txt"
  19. ORGANIZATION IS LINE SEQUENTIAL.
  20. DATA DIVISION.
  21. FILE SECTION.
  22. FD CUST-FILE
  23. RECORD CONTAINS 39 CHARACTERS.
  24. 01 CUST-IN.
  25. 05 CUST-NO-IN PIC 9(3).
  26. 05 CUST-NAME-IN PIC X(27).
  27. 05 MAX-CREDIT-IN PIC 9(5).
  28. 05 CREDIT-RATING-IN PIC X(2).
  29. 05 TOTAL-BALANCE-DUE-IN PIC 9(5).
  30. FD REPORT-OUT
  31. RECORD CONTAINS 46 CHARACTERS.
  32. 01 ERROR-LISTING-OUT.
  33. 05 ERROR-TYPE-OUT PIC X(22).
  34. 05 ERROR-DESC-OUT PIC X(45).
  35. 05 ERROR-V-LABEL-OUT PIC X(6).
  36. 05 ERROR-VALUE-OUT PIC X(10).
  37. 05 ERROR-R-LABEL-OUT PIC X(9).
  38. 05 RECORD-COUNT-OUT PIC 9.
  39. 01 ERROR-REPORT-OUT.
  40. 05 TOTAL-LABEL-OUT PIC X(13) VALUE 'RECORD-TOTAL:'.
  41. 05 TOTAL-OUT PIC X(3).
  42. 05 FILLER PIC X VALUE ' '.
  43. 05 RANG-LABEL-OUT PIC X(14) VALUE 'RANGE-ERRORS:'.
  44. 05 RANGE-ERROR-OUT PIC 9.
  45. 05 FILLER PIC X VALUE ' '.
  46. 05 N-LABEL-OUT PIC X(15) VALUE 'NAME ERRORS:'.
  47. 05 NAME-ERROR-OUT PIC 9.
  48. 05 FILLER PIC X VALUE ' '.
  49. 05 B-LABEL-OUT PIC X(15) VALUE 'BALANCE ERRORS:'.
  50. 05 BALANCE-ERROR-OUT PIC 9.
  51. 05 FILLER PIC X VALUE ' '.
  52. 05 RATING-LABEL-OUT PIC X(15) VALUE 'RATING ERRORS:'.
  53. 05 RATING-ERROR-OUT PIC 9.
  54. WORKING-STORAGE SECTION.
  55. 01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
  56. 01 ERROR-CODE PIC 9(3).
  57. 01 VALUE-GIVEN PIC X(20).
  58. 01 ERROR-LISTING.
  59. 05 ERROR-TYPE PIC X(22).
  60. 05 ERROR-DESC PIC X(45).
  61. 05 ERROR-V-LABEL PIC X(6) VALUE 'VALUE:'.
  62. 05 ERROR-VALUE PIC X(10).
  63. 05 ERROR-R-LABEL-OUT PIC X(9) VALUE 'RECORD: #'.
  64. 05 RECORD-COUNT PIC 9 VALUE 0.
  65. 01 ERROR-REPORT.
  66. 05 TOTAL-LABEL PIC X(13) VALUE 'RECORD-TOTAL:'.
  67. 05 TOTAL PIC 9.
  68. 05 FILLER PIC X VALUE ' '.
  69. 05 RANG-LABEL PIC X(14) VALUE 'RANGE-ERRORS:'.
  70. 05 RANGE-ERROR PIC 9.
  71. 05 FILLER PIC X VALUE ' '.
  72. 05 N-LABEL PIC X(15) VALUE 'NAME ERRORS:'.
  73. 05 NAME-ERROR PIC 9.
  74. 05 FILLER PIC X VALUE ' '.
  75. 05 B-LABEL PIC X(15) VALUE 'BALANCE ERRORS:'.
  76. 05 BALANCE-ERROR PIC 9.
  77. 05 FILLER PIC X VALUE ' '.
  78. 05 RATING-LABEL PIC X(15) VALUE 'RATING ERRORS:'.
  79. 05 RATING-ERROR PIC 9.
  80. PROCEDURE DIVISION.
  81. 100-MAIN-MODULE.
  82. PERFORM 200-INIT.
  83. PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO'
  84. READ CUST-FILE
  85. AT END
  86. MOVE 'NO' TO ARE-THERE-MORE-RECORDS
  87. NOT AT END
  88. ADD 1 TO RECORD-COUNT
  89. PERFORM 300-CHECK-RANGE
  90. PERFORM 400-CHECK-NAME
  91. PERFORM 500-CHECK-BALANCE
  92. PERFORM 600-CHECK-RATING
  93. END-PERFORM.
  94. PERFORM 700-PRINT-REPORT
  95. PERFORM 800-END.
  96. 200-INIT.
  97. OPEN INPUT CUST-FILE
  98. OUTPUT REPORT-OUT.
  99. 300-CHECK-RANGE.
  100. EVALUATE CUST-NO-IN >= 101 AND <= 972
  101. WHEN TRUE CONTINUE
  102. WHEN FALSE
  103. ADD 1 TO RANGE-ERROR
  104. MOVE 100 TO ERROR-CODE
  105. PERFORM 750-PRINT-ERROR
  106. END-EVALUATE.
  107. 400-CHECK-NAME.
  108. EVALUATE CUST-NAME-IN = Spaces
  109. WHEN FALSE CONTINUE
  110. WHEN TRUE
  111. ADD 1 TO NAME-ERROR
  112. MOVE 200 TO ERROR-CODE
  113. PERFORM 750-PRINT-ERROR
  114. END-EVALUATE.
  115. 500-CHECK-BALANCE.
  116. EVALUATE TOTAL-BALANCE-DUE-IN <= MAX-CREDIT-IN
  117. WHEN TRUE CONTINUE
  118. WHEN FALSE
  119. ADD 1 TO BALANCE-ERROR
  120. MOVE 300 TO ERROR-CODE
  121. PERFORM 750-PRINT-ERROR
  122. END-EVALUATE.
  123. 600-CHECK-RATING.
  124. EVALUATE CREDIT-RATING-IN = 'EX' OR 'VG' OR 'G' OR 'A'
  125. WHEN TRUE CONTINUE
  126. WHEN FALSE
  127. ADD 1 to RATING-ERROR
  128. MOVE 400 TO ERROR-CODE
  129. PERFORM 750-PRINT-ERROR
  130. END-EVALUATE.
  131. 750-PRINT-ERROR.
  132. EVALUATE ERROR-CODE
  133. WHEN 100
  134. MOVE "Range Error" TO ERROR-TYPE
  135. MOVE "Values must be between 101-972" TO ERROR-DESC
  136. MOVE CUST-NO-IN TO ERROR-VALUE
  137. WHEN 200
  138. MOVE "Name Error" TO ERROR-TYPE
  139. MOVE "Name Value must not be blank" TO ERROR-DESC
  140. MOVE CUST-NAME-IN TO ERROR-VALUE
  141. WHEN 300
  142. MOVE "Balance Exceeded" TO ERROR-TYPE
  143. MOVE "Total Balance can't exceed max credit"
  144. TO ERROR-DESC
  145. MOVE TOTAL-BALANCE-DUE-IN TO ERROR-VALUE
  146. WHEN 400
  147. MOVE "Invalid Credit Error" TO ERROR-TYPE
  148. MOVE "Credit Rating must be EX,VG,G or A" TO ERROR-DESC
  149. MOVE CREDIT-RATING-IN TO ERROR-VALUE
  150. END-EVALUATE.
  151. MOVE RECORD-COUNT TO RECORD-COUNT-OUT
  152. WRITE ERROR-LISTING-OUT FROM ERROR-LISTING.
  153. 700-PRINT-REPORT.
  154. MOVE RECORD-COUNT TO TOTAL
  155. WRITE ERROR-REPORT-OUT FROM ERROR-REPORT.
  156.  
  157.  
  158. 800-END.
  159. CLOSE CUST-FILE
  160. REPORT-OUT
  161. STOP RUN.
  162. END PROGRAM CH1101.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement