000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. TAKEHOME. 000030 AUTHOR. DAVID VOORHEES. 000040 000050 ENVIRONMENT DIVISION. 000060 INPUT-OUTPUT SECTION. 000070 FILE-CONTROL. 000080 SELECT TAX-FILE ASSIGN TO "TAXDATA.DAT" 000090 ORGANIZATION IS LINE SEQUENTIAL. 000100 SELECT TAX-REPORT ASSIGN TO TAX-RPT.RPT". 000110 000120 DATA DIVISION. 000130FILE SECTION. 000140 FD TAX-FILE. 000150 01 TAX-RECORD. 000160 05 TAX-LAST-NAME PIC X(15). 000170 05 TAX-FIRST-NAME PIC X(15). 000180 05 TAX-NUMBER-DEPENDENTS PIC 999. 000190 05 TAX-ADJ-GROSS-INCOME PIC 9(9)V99. 000200 000210 FD TAX-REPORT. 000220 01 TAX-REPORT-LINE PIC X(120). 000230 000240 WORKING-STORAGE SECTION. 000250 01 WS-FIELDS. 000260 05 TAX-EOF PIC X VALUE "N". 000270 88 NO-MORE-TAX-RECORDS VALUE "Y". 000280 05 WS-LAST-NAME-DEPENDENTS PIC 9(5) VALUE ZEROS. 000290 05 WS-LAST-NAME-INCOME PIC 9(12)V99 VALUE ZEROS. 000300 05 WS-TOTAL-DEPENDENTS PIC 9(5) VALUE ZEROS. 000310 05 WS-TOTAL-INCOME PIC 9(12)V99 VALUE ZEROS. 000320 05 LINE-SPACING PIC 9 VALUE 2. 000330 000340 01 WS-TAX-RPT-HDG-1. 000350 05 PIC X(12) VALUE SPACES. 000360 05 PIC X(15) VALUE "Tax Information". 000370* 000380 01 WS-TAX-RPT-HDG-2. 000390 05 PIC XX VALUE SPACES. 000400 05 PIC X(33) VALUE SPACES. 000410 05 PIC X(4) VALUE "# of". 000420 05 PIC X(6) VALUE SPACES. 000430 05 PIC X(15) VALUE " Adj Gross". 000440* 000450 01 WS-TAX-RPT-HDG-3. 000460 05 PIC XX VALUE SPACES. 000470 05 PIC X(17) VALUE "Last Name". 000480 05 PIC X(13) VALUE "First Name". 000490 05 PIC X(7) VALUE "Depends". 000500 05 PIC X(6) VALUE SPACES. 000510 05 PIC X(13) VALUE " Income". 000520* 000530 01 WS-TAX-RPT-DETAIL-LINE. 000540 05 PIC XX VALUE SPACES. 000550 05 TAX-DL-LAST-NAME PIC X(15). 000560 05 PIC XX VALUE SPACES. 000570 05 TAX-DL-FIRST-NAME PIC X(15). 000580 05 PIC XX VALUE SPACES. 000590 05 TAX-DL-DEPENDENTS PIC ZZ9. 000600 05 PIC X(6) VALUE SPACES. 000610 05 TAX-DL-ADJ-GROSS-INCOME PIC $$$$,$$$,$$9.99. 000620* 000630 01 WS-TAX-RPT-TOTAL-LINE. 000640 05 PIC XX VALUE SPACES. 000650 05 PIC X(31) VALUE SPACES. 000660 05 TAX-TOTAL-DEPENDENTS PIC ZZ,ZZ9. 000670 05 PIC XX VALUE SPACES. 000680 05 TAX-TOTAL-INCOME PIC $$$$,$$$,$$$,$$9.99. 000690* 000700 01 WS-TAX-RPT-LAST-NAME-TOTAL. 000710 05 PIC XX VALUE SPACES. 000720 05 TAX-TL-LAST-NAME PIC X(15). 000730 05 PIC X(16) VALUE SPACES. 000740 05 LAST-NAME-TOTAL-DEPENDENTS PIC ZZ,ZZ9. 000750 05 PIC XX VALUE SPACES. 000760 05 LAST-NAME-TOTAL-INCOME PIC $$$$,$$$,$$$,$$9.99. 000770 000780 PROCEDURE DIVISION. 000790 100-MAIN-MODULE. 000800 000810 PERFORM 700-INITIALIZE. 000820 PERFORM 200-PROCESS-TAX-FILE 000830 UNTIL NO-MORE-TAX-RECORDS. 000840 PERFORM 250-PROCESS-LAST-NAME-CHANGE. 000850 PERFORM 800-TERMINATE. 000860 STOP RUN. 000870 000880 200-PROCESS-TAX-FILE. 000890 000900 IF TAX-LAST-NAME NOT = TAX-DL-LAST-NAME 000910 PERFORM 250-PROCESS-LAST-NAME-CHANGE 000920 END-IF. 000930 000940 MOVE TAX-LAST-NAME TO TAX-DL-LAST-NAME. 000950 MOVE TAX-FIRST-NAME TO TAX-DL-FIRST-NAME. 000960 MOVE TAX-NUMBER-DEPENDENTS TO TAX-DL-DEPENDENTS. 000970 MOVE TAX-ADJ-GROSS-INCOME TO TAX-DL-ADJ-GROSS-INCOME. 000980 WRITE TAX-REPORT-LINE 000990 FROM WS-TAX-RPT-DETAIL-LINE 001000 AFTER ADVANCING LINE-SPACING LINES. 001010 001020 MOVE 1 TO LINE-SPACING. 001030 ADD TAX-NUMBER-DEPENDENTS TO WS-LAST-NAME-DEPENDENTS. 001040 ADD TAX-ADJ-GROSS-INCOME TO WS-LAST-NAME-INCOME. 001050 001060 PERFORM 720-READ-TAX-RCD. 001070 001080 250-PROCESS-LAST-NAME-CHANGE. 001090 001100 MOVE TAX-DL-LAST-NAME TO TAX-TL-LAST-NAME. 001110 MOVE WS-LAST-NAME-DEPENDENTS TO LAST-NAME-TOTAL-DEPENDENTS. 001120 MOVE WS-LAST-NAME-INCOME TO LAST-NAME-TOTAL-INCOME. 001130 MOVE 2 TO LINE-SPACING. 001140 001150 WRITE TAX-REPORT-LINE 001160 FROM WS-TAX-RPT-LAST-NAME-TOTAL 001170 AFTER ADVANCING LINE-SPACING LINES. 001180 001190 ADD WS-LAST-NAME-DEPENDENTS TO WS-TOTAL-DEPENDENTS. 001200 ADD WS-LAST-NAME-INCOME TO WS-TOTAL-INCOME. 001210 MOVE ZEROS TO WS-LAST-NAME-DEPENDENTS. 001220 MOVE ZEROS TO WS-LAST-NAME-INCOME. 001230 001240 700-INITIALIZE. 001250 001260 OPEN INPUT TAX-FILE 001270 OUTPUT TAX-REPORT. 001280 PERFORM 710-WRITE-TAX-REPORT-HEADINGS. 001290 PERFORM 720-READ-TAX-RECORD. 001300 MOVE TAX-LAST-NAME TO TAX-DL-LAST-NAME. 001310 001320 710-WRITE-TAX-REPORT-HEADINGS. 001330 001340 WRITE TAX-REPORT-LINE 001350 FROM WS-TAX-RPT-HDG-1 001360 AFTER ADVANCING PAGE. 001370 WRITE TAX-REPORT-LINE 001380 FROM WS-TAX-RPT-HDG-2 001390 AFTER ADVANCING 2 LINES. 001400 WRITE TAX-REPORT-LINE 001410 FROM WS-TAX-RPT-HDG-3 001420 AFTER ADVANCING 1 LINE. 001430 001440 720-READ-TAX-RECORD. 001450 001460 READ TAX-FILE. 001470 AT END 001480 SET NO-MORE-TAX-RECORDS TO TRUE 001490 END-READ. 001500 001510 800-TERMINATE. 001520 001530 PERFORM 810-WRITE-TAX-REPORT-TOTALS. 001540 CLOSE TAX-FILE 001550 TAX-REPORT. 001560 001570 810-WRITE-TAX-REPORT-TOTALS. 001580 001590 MOVE WS-TOTAL-DEPENDENTS TO TAX-TOTAL-DEPENDENTS. 001600 MOVE WS-TOTAL-INCOME TO TAX-TOTAL-INCOME. 001610 WRITE TAX-REPORT-LINE 001620 FROM WS-TAX-RPT-TOTAL-LINE 001630 AFTER ADVANCING 2 LINES.