000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. BATCH. 000030 AUTHOR. DAVID VOORHEES. 000040* 000050*This program will read an Employee file. 000060*Each employee record is output to a report, and the 000070*salary amounts are accumulated. 000080*After processing all employees, the total salary is 000090*output to the same report. 000100* 000110 ENVIRONMENT DIVISION. 000120 INPUT-OUTPUT SECTION. 000130 FILE-CONTROL. 000140 SELECT EMPLOYEE-FILE 000150 ASSIGN TO "EMPLOYEE.DAT" 000160 ORGANIZATION IS LINE SEQUENTIAL. 000170 SELECT EMPLOYEE-REPORT 000180 ASSIGN TO "EMPL-RPT.DAT" 000190 ORGANIZATION IS SEQUENTIAL. 000200 000210 DATA DIVISION. 000220 FILE SECTION. 000230 FD EMPLOYEE-FILE. 000240 01 EMPLOYEE-RECORD. 000250 05 EMPL-COUNTRY PIC X(10). 000260 05 EMPL-DIVISION PIC X(2). 000270 05 EMPL-DEPARTMENT PIC X(3). 000280 05 EMPL-NAME PIC X(20). 000290 05 EMPL-SALARY PIC 9(6). 000300 05 EMPL-HIRE-DATE. 000310 10 EMPL-HIRE-YEAR PIC 9(4). 000320 10 EMPL-HIRE-MONTH PIC 99. 000330 10 EMPL-HIRE-DAY PIC 99. 000340 000350 FD EMPLOYEE-REPORT. 000360 01 EMPLOYEE-REPORT-LINE PIC X(120). 000370 000380 WORKING-STORAGE SECTION. 000390 01 MORE-EMPLOYEES PIC X. 000400 01 EMPL-HEADER-1. 000410 05 PIC X(20) VALUE SPACES. 000420 05 PIC X(13) VALUE "Employee List". 000430 01 EMPL-DETAIL-LINE. 000440 05 PIC X(4) VALUE SPACES. 000450 05 DL-COUNTRY PIC X(10). 000460 05 PIC X(2) VALUE SPACES. 000470 05 DL-DIVISION PIC X(2). 000480 05 PIC X(2) VALUE SPACES. 000490 05 DL-DEPARTMENT PIC X(3). 000500 05 PIC X(2) VALUE SPACES. 000510 05 DL-NAME PIC X(20). 000520 05 PIC X(2) VALUE SPACES. 000530 05 DL-SALARY PIC 9(6). 000540 05 PIC X(2) VALUE SPACES. 000550 05 DL-HIRE-DATE PIC X(8). 000560 01 EMPL-TOTAL-LINE. 000570 05 PIC X(44) VALUE SPACES. 000580 05 TL-SALARY PIC 9(9). 000590 000600 PROCEDURE DIVISION. 000610 000620 0000-MAIN-MODULE. 000630 000640 PERFORM 1000-INITIALIZE. 000650 PERFORM 0500-PROCESS-EMPLOYEE-FILE 000660 UNTIL MORE-EMPLOYEES = "N". 000670 PERFORM 1100-TERMINATE. 000680 STOP RUN. 000690 000700 0500-PROCESS-EMPLOYEE-FILE. 000710 000720* Copy the employee data to the report detail line 000730 MOVE EMPL-COUNTRY TO DL-COUNTRY. 000740 MOVE EMPL-DIVISION TO DL-DIVISION. 000750 MOVE EMPL-DEPARTMENT TO DL-DEPARTMENT. 000760 MOVE EMPL-NAME TO DL-NAME. 000770 MOVE EMPL-SALARY TO DL-SALARY. 000780 MOVE EMPL-HIRE-DATE TO DL-HIRE-DATE. 000790 000800* Write a report detail line 000810 WRITE EMPLOYEE-REPORT-LINE 000820 FROM EMPL-DETAIL-LINE 000830 AFTER ADVANCING 2 LINES. 000840 000850* Accumulate the employee salaries 000860 ADD EMPL-SALARY TO TL-SALARY. 000870 000880* Read the next employee record 000890 PERFORM 1010-READ-EMPLOYEE. 000900 000910 1000-INITIALIZE. 000920 000930 OPEN INPUT EMPLOYEE-FILE 000940 OUTPUT EMPLOYEE-REPORT. 000950 000960* Initialize the total salary amount 000970 MOVE ZEROS TO TL-SALARY. 000980 000990* Indicate that there are more employee records 001000 MOVE "Y" TO MORE-EMPLOYEES. 001010 001020* Write the report header line 001030 WRITE EMPLOYEE-REPORT-LINE 001040 FROM EMPL-HEADER-1 001050 AFTER ADVANCING PAGE. 001060 001070* Read the first employee record 001080 PERFORM 1010-READ-EMPLOYEE. 001090 001100 1010-READ-EMPLOYEE. 001110 001120* Read an employee record. 001130 READ EMPLOYEE-FILE 001140 AT END 001150 MOVE "N" TO MORE-EMPLOYEES 001160 END-READ. 001170 001180 1100-TERMINATE. 001190 001200* Write the report total line 001210 WRITE EMPLOYEE-REPORT-LINE 001220 FROM EMPL-TOTAL-LINE 001230 AFTER ADVANCING 2 LINES. 001240 001250* Close both files 001260 CLOSE EMPLOYEE-FILE 001270 EMPLOYEE-REPORT.