Advertisement
Guest User

Sheet 8

a guest
Oct 29th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 3.73 KB | None | 0 0
  1.        IDENTIFICATION DIVISION.
  2.        program-id. Program1 as "Sheet8.Program1".
  3.        ENVIRONMENT DIVISION.
  4.        INPUT-OUTPUT SECTION.
  5.        FILE-CONTROL.
  6.        SELECT EMPLOYEE_DATA ASSIGN TO
  7.            "C:\temp-cobol\EMPLOYEE_DATA.txt"
  8.            ORGANIZATION IS LINE SEQUENTIAL.
  9.        SELECT PRINT_DATA ASSIGN TO
  10.            "C:\temp-cobol\PRINTER.txt"
  11.            ORGANIZATION IS LINE SEQUENTIAL.
  12.        data division.
  13.        
  14.        FD EMPLOYEE_DATA.
  15.        01 EMPLOYEE-DATA.
  16.            05 SSNO PIC 9(9).
  17.            05 EMPLOYEE_NAME PIC X(21).
  18.            05 ANNUAL_SALARY PIC 9(3).
  19.            05 JOB_CLASS PIC 9(1).
  20.            
  21.        FD PRINT_DATA.
  22.        01 PRINTING-THIS-INFO pic X(132).
  23.        
  24.        working-storage section.
  25.        
  26.        01 OUTPUT-HEADER.
  27.            05 JOB_CLASS_H PIC X(9) VALUE 'JOB CLASS'.
  28.            05             PIC X(21) VALUE SPACES.
  29.            05 AVERAGE_SALARY_H PIC X(14) VALUE 'AVERAGE SALARY'.
  30.            05             PIC X(88) VALUE SPACES.
  31.            
  32.        01 ARE_THERE_MORE_RECORDS pic X(3) VALUE 'YES'.
  33.        
  34.        01 JOB_CLASS_COUNTING.
  35.                10 JOB_CLASS_ARRAY PIC 9(1) VALUE 0 OCCURS 9 TIMES.
  36.        
  37.        01 SALARY_ADDER.
  38.                10 SALARY_ADDER_ARRAY PIC 9(6) VALUE 0 OCCURS 9 TIMES.
  39.                
  40.        01 AVERAGE_SALARY.
  41.                10 AVERAGE_SALARY_ARRAY PIC 9(4) VALUE 0 OCCURS 9 TIMES.
  42.                
  43.        01 counting-the-loop pic 9(2) value 1.
  44.        
  45.        01 PRINTING-DATA.
  46.            05 PIC X(5) VALUE SPACES.
  47.            05 JOB_CLASS_P PIC 9(1) VALUE 0.
  48.            05 PIC X(32) VALUE SPACES.
  49.            05 AVERAGE_SALARY_P PIC $999.
  50.            05 PIC X(80) VALUE SPACES.
  51.        
  52.        procedure division.
  53.        100-MAIN-MODULE.
  54.            OPEN INPUT EMPLOYEE_DATA
  55.                 OUTPUT PRINT_DATA
  56.            perform 200_PRINT_HEADER
  57.            PERFORM UNTIL ARE_THERE_MORE_RECORDS = 'NO'
  58.                READ EMPLOYEE_DATA
  59.                    AT END
  60.                        MOVE 'NO' TO ARE_THERE_MORE_RECORDS
  61.                    NOT AT END
  62.                        perform 300_COUNT_JOB_CLASS
  63.                END-READ
  64.            END-PERFORM
  65.            move 1 to counting-the-loop
  66.            perform 400_MAKE_AVERAGE_CALCULATIONS
  67.            move 1 to counting-the-loop
  68.            perform 500_PRINT_DATA
  69.            close EMPLOYEE_DATA
  70.                  PRINT_DATA
  71.            STOP RUN.
  72.            
  73.        200_PRINT_HEADER.
  74.        MOVE OUTPUT-HEADER to PRINTING-THIS-INFO
  75.        write PRINTING-THIS-INFO.
  76.        
  77.        300_COUNT_JOB_CLASS.
  78.            perform until counting-the-loop = 10
  79.                if JOB_CLASS = counting-the-loop
  80.                      add 1 to JOB_CLASS_ARRAY(counting-the-loop)
  81.                      add ANNUAL_SALARY
  82.                        to SALARY_ADDER_ARRAY(COUNTING-THE-LOOP)
  83.                end-if
  84.                add 1 to counting-the-loop
  85.            end-perform
  86.            move 1 to counting-the-loop.
  87.        400_MAKE_AVERAGE_CALCULATIONS.
  88.            perform until counting-the-loop = 10
  89.                divide SALARY_ADDER_ARRAY(COUNTING-THE-LOOP)
  90.                    by JOB_CLASS_ARRAY(COUNTING-THE-LOOP)
  91.                         giving AVERAGE_SALARY_ARRAY(COUNTING-THE-LOOP)
  92.                add 1 to counting-the-loop
  93.            end-perform.
  94.        500_PRINT_DATA.
  95.            perform until counting-the-loop = 10
  96.                add 1 to JOB_CLASS_P
  97.                move AVERAGE_SALARY_ARRAY(COUNTING-THE-LOOP)
  98.                    to AVERAGE_SALARY_P
  99.                move PRINTING-DATA to PRINTING-THIS-INFO
  100.                write PRINTING-THIS-INFO
  101.                add 1 to counting-the-loop
  102.            END-PERFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement