Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IDENTIFICATION DIVISION.
- program-id. Program1 as "Sheet8.Program1".
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT EMPLOYEE_DATA ASSIGN TO
- "C:\temp-cobol\EMPLOYEE_DATA.txt"
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT PRINT_DATA ASSIGN TO
- "C:\temp-cobol\PRINTER.txt"
- ORGANIZATION IS LINE SEQUENTIAL.
- data division.
- FD EMPLOYEE_DATA.
- 01 EMPLOYEE-DATA.
- 05 SSNO PIC 9(9).
- 05 EMPLOYEE_NAME PIC X(21).
- 05 ANNUAL_SALARY PIC 9(3).
- 05 JOB_CLASS PIC 9(1).
- FD PRINT_DATA.
- 01 PRINTING-THIS-INFO pic X(132).
- working-storage section.
- 01 OUTPUT-HEADER.
- 05 JOB_CLASS_H PIC X(9) VALUE 'JOB CLASS'.
- 05 PIC X(21) VALUE SPACES.
- 05 AVERAGE_SALARY_H PIC X(14) VALUE 'AVERAGE SALARY'.
- 05 PIC X(88) VALUE SPACES.
- 01 ARE_THERE_MORE_RECORDS pic X(3) VALUE 'YES'.
- 01 JOB_CLASS_COUNTING.
- 10 JOB_CLASS_ARRAY PIC 9(1) VALUE 0 OCCURS 9 TIMES.
- 01 SALARY_ADDER.
- 10 SALARY_ADDER_ARRAY PIC 9(6) VALUE 0 OCCURS 9 TIMES.
- 01 AVERAGE_SALARY.
- 10 AVERAGE_SALARY_ARRAY PIC 9(4) VALUE 0 OCCURS 9 TIMES.
- 01 counting-the-loop pic 9(2) value 1.
- 01 PRINTING-DATA.
- 05 PIC X(5) VALUE SPACES.
- 05 JOB_CLASS_P PIC 9(1) VALUE 0.
- 05 PIC X(32) VALUE SPACES.
- 05 AVERAGE_SALARY_P PIC $999.
- 05 PIC X(80) VALUE SPACES.
- procedure division.
- 100-MAIN-MODULE.
- OPEN INPUT EMPLOYEE_DATA
- OUTPUT PRINT_DATA
- perform 200_PRINT_HEADER
- PERFORM UNTIL ARE_THERE_MORE_RECORDS = 'NO'
- READ EMPLOYEE_DATA
- AT END
- MOVE 'NO' TO ARE_THERE_MORE_RECORDS
- NOT AT END
- perform 300_COUNT_JOB_CLASS
- END-READ
- END-PERFORM
- move 1 to counting-the-loop
- perform 400_MAKE_AVERAGE_CALCULATIONS
- move 1 to counting-the-loop
- perform 500_PRINT_DATA
- close EMPLOYEE_DATA
- PRINT_DATA
- STOP RUN.
- 200_PRINT_HEADER.
- MOVE OUTPUT-HEADER to PRINTING-THIS-INFO
- write PRINTING-THIS-INFO.
- 300_COUNT_JOB_CLASS.
- perform until counting-the-loop = 10
- if JOB_CLASS = counting-the-loop
- add 1 to JOB_CLASS_ARRAY(counting-the-loop)
- add ANNUAL_SALARY
- to SALARY_ADDER_ARRAY(COUNTING-THE-LOOP)
- end-if
- add 1 to counting-the-loop
- end-perform
- move 1 to counting-the-loop.
- 400_MAKE_AVERAGE_CALCULATIONS.
- perform until counting-the-loop = 10
- divide SALARY_ADDER_ARRAY(COUNTING-THE-LOOP)
- by JOB_CLASS_ARRAY(COUNTING-THE-LOOP)
- giving AVERAGE_SALARY_ARRAY(COUNTING-THE-LOOP)
- add 1 to counting-the-loop
- end-perform.
- 500_PRINT_DATA.
- perform until counting-the-loop = 10
- add 1 to JOB_CLASS_P
- move AVERAGE_SALARY_ARRAY(COUNTING-THE-LOOP)
- to AVERAGE_SALARY_P
- move PRINTING-DATA to PRINTING-THIS-INFO
- write PRINTING-THIS-INFO
- add 1 to counting-the-loop
- END-PERFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement