Previous | Contents | Index |
Example 10-7 (EX1007) is a Report Writer program that uses the REPORT HEADING, PAGE HEADING, DETAIL, CONTROL FOOTING, and REPORT FOOTING report groups and produces a detail report---EX1007.LIS (shown in Figure 10-16). The output includes both subtotals and rolling-forward totals.
Example 10-7 Sample Program EX1007 |
---|
IDENTIFICATION DIVISION. PROGRAM-ID. EX1007. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO "MASTER.DAT". SELECT SORT-FILE ASSIGN TO "EX1007-SORTIN.TMP". SELECT SORTED-FILE ASSIGN TO "EX1007-SORTOUT.TMP". SELECT PRINTER-FILE ASSIGN TO "EX1007.LIS". DATA DIVISION. FILE SECTION. SD SORT-FILE. 01 SORTED-CUSTOMER-MASTER-FILE. 02 SORT-NAME PIC X(26). 02 PIC X(73). FD CUSTOMER-FILE. 01 CUSTOMER-MASTER-FILE PIC X(99). FD SORTED-FILE. 01 CUSTOMER-MASTER-FILE. 02 NAME. 03 LAST-NAME PIC X(15). 03 FIRST-NAME PIC X(10). 03 MIDDLE-INIT PIC X. 02 ADDRESS PIC X(20). 02 CITY PIC X(20). 02 STATE PIC XX. 02 ZIP PIC 99999. 02 SALESMAN-NUMBER PIC 99999. 02 INVOICE-DATA. 03 INVOICE-NUMBER PIC 999999. 03 INVOICE-SALES PIC S9(5)V99. 03 INVOICE-DATE. 04 INV-DAY PIC 99. 04 INV-MO PIC 99. 04 INV-YR PIC 9999. FD PRINTER-FILE REPORT IS MASTER-LIST. WORKING-STORAGE SECTION. 01 UNEDITED-DATE. 02 UE-YEAR PIC 9999. 02 UE-MONTH PIC 99. 02 UE-DAY PIC 99. 02 FILLER PIC X(6). 01 ONE-COUNT PIC 9 VALUE 1. REPORT SECTION. RD MASTER-LIST PAGE LIMIT IS 66 HEADING 1 FIRST DETAIL 13 LAST DETAIL 55 CONTROLS ARE FINAL NAME. 01 REPORT-HEADER TYPE IS REPORT HEADING NEXT GROUP NEXT PAGE. 02 LINE 24. 03 COLUMN 45 PIC X(31) VALUE ALL "*". 02 LINE 25. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 26. 03 COLUMN 45 PIC X(31) VALUE "* Customer Master File *". 02 LINE 27. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 28. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 55 PIC Z9 SOURCE UE-DAY. 03 COLUMN 57 PIC X VALUE "-". 03 COLUMN 58 PIC 99 SOURCE UE-MONTH. 03 COLUMN 60 PIC X VALUE "-". 03 COLUMN 61 PIC 9999 SOURCE UE-YEAR. 03 COLUMN 75 PIC X VALUE "*". 02 LINE 29. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 30. 03 COLUMN 45 PIC X(31) VALUE "* Report EX1007 *". 02 LINE 31. 03 COLUMN 45 PIC X(31) VALUE "* Detail Report *". 02 LINE 32. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 33. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 34. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 35. 03 COLUMN 45 PIC X(31) VALUE ALL "*". 01 TYPE IS PAGE HEADING. 02 LINE 5. 03 COLUMN 1 PIC X(27) VALUE "CUSTOMER MASTER FILE REPORT". 03 COLUMN 105 PIC X(4) VALUE "PAGE". 03 COLUMN 109 PIC ZZZ9 SOURCE PAGE-COUNTER. 02 LINE 7. 03 COLUMN 1 PIC X VALUE "+". 03 COLUMN 2 PIC X(110) VALUE ALL "-". 03 COLUMN 112 PIC X VALUE "+". 02 LINE 8. 03 COLUMN 1 PIC X VALUE "|". 03 COLUMN 10 PIC X(4) VALUE "NAME". 03 COLUMN 29 PIC X VALUE "|". 03 COLUMN 43 PIC X(7) VALUE "ADDRESS". 03 COLUMN 81 PIC X VALUE "|". 03 COLUMN 91 PIC X(7) VALUE "INVOICE". 03 COLUMN 112 PIC X VALUE "|". 02 LINE 9. 03 COLUMN 1 PIC X VALUE "|". 03 COLUMN 2 PIC X(110) VALUE ALL "-". 03 COLUMN 112 PIC X VALUE "|". 02 LINE 10. 03 COLUMN 1 PIC X(6) VALUE "| LAST". 03 COLUMN 16 PIC X(7) VALUE "| FIRST". 03 COLUMN 26 PIC X(4) VALUE "|MI|". 03 COLUMN 35 PIC X(6) VALUE "STREET". 03 COLUMN 48 PIC X VALUE "|". 03 COLUMN 52 PIC X(4) VALUE "CITY". 03 COLUMN 71 PIC X VALUE "|". 03 COLUMN 72 PIC X(2) VALUE "ST". 03 COLUMN 74 PIC X VALUE "|". 03 COLUMN 76 PIC X(3) VALUE "ZIP". 03 COLUMN 81 PIC X VALUE "|". 03 COLUMN 83 PIC X(4) VALUE "DATE". 03 COLUMN 90 PIC X VALUE "|". 03 COLUMN 92 PIC X(6) VALUE "NUMBER". 03 COLUMN 98 PIC X VALUE "|". 03 COLUMN 103 PIC X(6) VALUE "AMOUNT". 03 COLUMN 112 PIC X VALUE "|". 02 LINE 11. 03 COLUMN 1 PIC X VALUE "+". 03 COLUMN 2 PIC X(110) VALUE ALL "-". 03 COLUMN 112 PIC X VALUE "+". 01 DETAIL-LINE TYPE DETAIL LINE PLUS 2. 02 COLUMN 1 PIC X(15) SOURCE LAST-NAME. 02 COLUMN 17 PIC X(10) SOURCE FIRST-NAME. 02 COLUMN 28 PIC XX SOURCE MIDDLE-INIT. 02 COLUMN 30 PIC X(20) SOURCE ADDRESS. 02 COLUMN 51 PIC X(20) SOURCE CITY. 02 COLUMN 72 PIC XX SOURCE STATE. 02 COLUMN 75 PIC 99999 SOURCE ZIP. 02 COLUMN 81 PIC Z9 SOURCE INV-DAY. 02 COLUMN 83 PIC X VALUE "-". 02 COLUMN 84 PIC 99 SOURCE INV-MO. 02 COLUMN 86 PIC X VALUE "-". 02 COLUMN 87 PIC 9999 SOURCE INV-YR. 02 COLUMN 92 PIC 9(6) SOURCE INVOICE-NUMBER. 02 COLUMN 99 PIC $$$,$$$,$$$.99- SOURCE INVOICE-SALES. 02 DETAIL-COUNT PIC S9(10) SOURCE ONE-COUNT. 02 INV-AMOUNT PIC S9(9)V99 SOURCE INVOICE-SALES. 01 TYPE IS CONTROL FOOTING NAME NEXT GROUP IS PLUS 2. 02 LINE IS PLUS 2. 03 COLUMN 72 PIC X(41) VALUE ALL "*". 02 LINE IS PLUS 1. 03 COLUMN 20 PIC X(17) VALUE " TOTAL RECORDS: ". 03 IDC COLUMN 40 PIC ZZZ,ZZZ,ZZ9 SUM ONE-COUNT. 03 IIA COLUMN 99 PIC $$$,$$$,$$$.99- SUM INVOICE-SALES. 02 LINE IS PLUS 1. 03 COLUMN 72 PIC X(41) VALUE ALL "*". 01 FINAL-FOOTING TYPE IS CONTROL FOOTING FINAL NEXT GROUP NEXT PAGE. 02 LINE IS PLUS 2. 03 COLUMN 72 PIC X(41) VALUE ALL "*". 02 LINE IS PLUS 1. 03 COLUMN 14 PIC X(21) VALUE "GRAND TOTAL RECORDS: ". 03 FDC COLUMN 40 PIC ZZZ,ZZZ,ZZ9 SUM IDC. 03 COLUMN 72 PIC X(22) VALUE " GRAND TOTAL INVOICES:". 03 FIA COLUMN 95 PIC $,$$$,$$$,$$$.99- SUM IIA. 02 LINE IS PLUS 1. 03 COLUMN 72 PIC X(41) VALUE ALL "*". 01 REPORT-FOOTER TYPE IS REPORT FOOTING. 02 LINE 24 ON NEXT PAGE COLUMN 45 PIC X(31) VALUE ALL "*". 02 LINE 25. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 26. 03 COLUMN 45 PIC X(31) VALUE "* Customer Master File *". 02 LINE 27. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 28. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 55 PIC Z9 SOURCE UE-DAY. 03 COLUMN 57 PIC X VALUE "-". 03 COLUMN 58 PIC 99 SOURCE UE-MONTH. 03 COLUMN 60 PIC X VALUE "-". 03 COLUMN 61 PIC 9999 SOURCE UE-YEAR. 03 COLUMN 75 PIC X VALUE "*". 02 LINE 29. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 30. 03 COLUMN 45 PIC X(31) VALUE "* End of EX1007.LIS *". 02 LINE 31. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 32 COLUMN 45 PIC X(31) VALUE ALL "*". PROCEDURE DIVISION. DECLARATIVES. BOR SECTION. USE BEFORE REPORTING REPORT-HEADER. EOR SECTION. USE BEFORE REPORTING REPORT-FOOTER. EOR-A. DISPLAY "*** Created EX1007.LIS ***". END DECLARATIVES. MAIN SECTION. 000-DO-SORT. SORT SORT-FILE ON ASCENDING KEY SORT-NAME WITH DUPLICATES IN ORDER USING CUSTOMER-FILE GIVING SORTED-FILE. 000-START. DISPLAY "*** EX1007 ***". DISPLAY "Enter Current Date (YYYYMMDD) :". ACCEPT UNEDITED-DATE. OPEN INPUT SORTED-FILE. OPEN OUTPUT PRINTER-FILE. INITIATE MASTER-LIST. PERFORM 200-READ-MASTER UNTIL NAME = HIGH-VALUES. 100-END-OF-FILE. TERMINATE MASTER-LIST. CLOSE SORTED-FILE, PRINTER-FILE. STOP RUN. 200-READ-MASTER. READ SORTED-FILE AT END MOVE HIGH-VALUES TO NAME. IF NAME NOT = HIGH-VALUES GENERATE DETAIL-LINE. |
Figure 10-16 EX1007.LIS Listing
Example 10-8 (EX1008) is a Report Writer program that uses the REPORT HEADING, PAGE HEADING, DETAIL, CONTROL FOOTING, and REPORT FOOTING report groups and produces a detail report---EX1008.LIS (shown in Figure 10-17).
Example 10-8 Sample Program EX1008 |
---|
IDENTIFICATION DIVISION. PROGRAM-ID. EX1008. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO "MASTER.DAT". SELECT SORT-FILE ASSIGN TO "EX1008-SORTIN.TMP". SELECT SORTED-FILE ASSIGN TO "EX1008-SORTOUT.TMP". SELECT PRINTER-FILE ASSIGN TO "EX1008.LIS". DATA DIVISION. FILE SECTION. SD SORT-FILE. 01 SORTED-CUSTOMER-MASTER-FILE. 02 SORT-NAME PIC X(26). 02 PIC X(73). FD CUSTOMER-FILE. 01 CUSTOMER-MASTER-FILE PIC X(99). FD SORTED-FILE. 01 SORTED-RECORD. 02 SORTED-NAME PIC X(26). 02 S-ADDRESS PIC X(20). 02 S-CITY PIC X(20). 02 S-STATE PIC XX. 02 S-ZIP PIC 99999. 02 S-SALESMAN-NUMBER PIC 99999. 02 S-INVOICE-DATA. 03 S-INVOICE-NUMBER PIC 999999. 03 S-INVOICE-SALES PIC S9(5)V99. 03 S-INVOICE-DATE. 04 S-INV-DAY PIC 99. 04 S-INV-MO PIC 99. 04 S-INV-YR PIC 9999. FD PRINTER-FILE REPORT IS MASTER-LIST. WORKING-STORAGE SECTION. 01 UNEDITED-DATE. 02 UE-YEAR PIC 9999. 02 UE-MONTH PIC 99. 02 UE-DAY PIC 99. 02 FILLER PIC X(6). 01 ONE-COUNT PIC 9 VALUE 1. 01 EOF PIC X VALUE "N". 01 SAVE-INVOICE-SALES PIC S9(9)V99 VALUE 0. 01 CUSTOMER-MASTER-RECORD. 02 NAME. 03 LAST-NAME PIC X(15). 03 FIRST-NAME PIC X(10). 03 MIDDLE-INIT PIC X. 02 ADDRESS PIC X(20). 02 CITY PIC X(20). 02 STATE PIC XX. 02 ZIP PIC 99999. 02 SALESMAN-NUMBER PIC 99999. 02 INVOICE-DATA. 03 INVOICE-NUMBER PIC 999999. 03 INVOICE-SALES PIC S9(5)V99. 03 INVOICE-DATE. 04 INV-DAY PIC 99. 04 INV-MO PIC 99. 04 INV-YR PIC 9999. REPORT SECTION. RD MASTER-LIST PAGE LIMIT IS 66 HEADING 1 FIRST DETAIL 13 LAST DETAIL 55 CONTROLS ARE FINAL. 01 REPORT-HEADER TYPE IS REPORT HEADING NEXT GROUP NEXT PAGE. 02 LINE 24. 03 COLUMN 45 PIC X(31) VALUE ALL "*". 02 LINE 25. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 26. 03 COLUMN 45 PIC X(31) VALUE "* Customer Master File *". 02 LINE 27. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 28. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 55 PIC Z9 SOURCE UE-DAY. 03 COLUMN 57 PIC X VALUE "-". 03 COLUMN 58 PIC 99 SOURCE UE-MONTH. 03 COLUMN 60 PIC X VALUE "-". 03 COLUMN 61 PIC 9999 SOURCE UE-YEAR. 03 COLUMN 75 PIC X VALUE "*". 02 LINE 29. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 30. 03 COLUMN 45 PIC X(31) VALUE "* Report EX1008 *". 02 LINE 31. 03 COLUMN 45 PIC X(31) VALUE "* Detail Report *". 02 LINE 32. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 33. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 34. 03 COLUMN 45 PIC X(31) VALUE ALL "*". 01 TYPE IS PAGE HEADING. 02 LINE 5. 03 COLUMN 1 PIC X(27) VALUE "CUSTOMER MASTER FILE REPORT". 03 COLUMN 105 PIC X(4) VALUE "PAGE". 03 COLUMN 109 PIC ZZZ9 SOURCE PAGE-COUNTER. 02 LINE 7. 03 COLUMN 1 PIC X VALUE "+". 03 COLUMN 2 PIC X(110) VALUE ALL "-". 03 COLUMN 112 PIC X VALUE "+". 02 LINE 8. 03 COLUMN 1 PIC X VALUE "|". 03 COLUMN 10 PIC X(4) VALUE "NAME". 03 COLUMN 29 PIC X VALUE "|". 03 COLUMN 43 PIC X(7) VALUE "ADDRESS". 03 COLUMN 81 PIC X VALUE "|". 03 COLUMN 91 PIC X(7) VALUE "INVOICE". 03 COLUMN 112 PIC X VALUE "|". 02 LINE 9. 03 COLUMN 1 PIC X VALUE "|". 03 COLUMN 2 PIC X(110) VALUE ALL "-". 03 COLUMN 112 PIC X VALUE "|". 02 LINE 10. 03 COLUMN 1 PIC X(6) VALUE "| LAST". 03 COLUMN 16 PIC X(7) VALUE "| FIRST". 03 COLUMN 26 PIC X(4) VALUE "|MI|". 03 COLUMN 35 PIC X(6) VALUE "STREET". 03 COLUMN 48 PIC X VALUE "|". 03 COLUMN 52 PIC X(4) VALUE "CITY". 03 COLUMN 71 PIC X VALUE "|". 03 COLUMN 72 PIC X(2) VALUE "ST". 03 COLUMN 74 PIC X VALUE "|". 03 COLUMN 76 PIC X(3) VALUE "ZIP". 03 COLUMN 81 PIC X VALUE "|". 03 COLUMN 83 PIC X(4) VALUE "DATE". 03 COLUMN 90 PIC X VALUE "|". 03 COLUMN 92 PIC X(6) VALUE "NUMBER". 03 COLUMN 98 PIC X VALUE "|". 03 COLUMN 103 PIC X(6) VALUE "AMOUNT". 03 COLUMN 112 PIC X VALUE "|". 02 LINE 11. 03 COLUMN 1 PIC X VALUE "+". 03 COLUMN 2 PIC X(110) VALUE ALL "-". 03 COLUMN 112 PIC X VALUE "+". 01 DETAIL-LINE TYPE DETAIL LINE IS PLUS 1. 02 COLUMN 1 PIC X(15) SOURCE LAST-NAME. 02 COLUMN 17 PIC X(10) SOURCE FIRST-NAME. 02 COLUMN 28 PIC XX SOURCE MIDDLE-INIT. 02 COLUMN 30 PIC X(20) SOURCE ADDRESS. 02 COLUMN 51 PIC X(20) SOURCE CITY. 02 COLUMN 72 PIC XX SOURCE STATE. 02 COLUMN 75 PIC 99999 SOURCE ZIP. 02 COLUMN 81 PIC Z9 SOURCE INV-DAY. 02 COLUMN 83 PIC X VALUE "-". 02 COLUMN 84 PIC 99 SOURCE INV-MO. 02 COLUMN 86 PIC X VALUE "-". 02 COLUMN 87 PIC 9999 SOURCE INV-YR. 02 COLUMN 92 PIC 9(6) SOURCE INVOICE-NUMBER. 02 COLUMN 99 PIC $$$,$$$,$$$.99- SOURCE SAVE-INVOICE-SALES. 01 FINAL-FOOTING TYPE IS CONTROL FOOTING FINAL NEXT GROUP NEXT PAGE. 02 LINE IS PLUS 2. 03 COLUMN 70 PIC X(43) VALUE ALL "*". 02 LINE IS PLUS 1. 03 COLUMN 70 PIC X(24) VALUE "* GRAND TOTAL INVOICES:". 03 FIA COLUMN 94 PIC $,$$$,$$$,$$$.99- SUM INVOICE-SALES. 03 COLUMN 111 PIC XXX VALUE " * ". 02 LINE IS PLUS 1. 03 COLUMN 70 PIC X(43) VALUE ALL "*". 01 REPORT-FOOTER TYPE IS REPORT FOOTING. 02 LINE 24 ON NEXT PAGE COLUMN 45 PIC X(31) VALUE ALL "*". 02 LINE 25. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 26. 03 COLUMN 45 PIC X(31) VALUE "* Customer Master File *". 02 LINE 27. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 28 . 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 55 PIC Z9 SOURCE UE-DAY. 03 COLUMN 57 PIC X VALUE "-". 03 COLUMN 58 PIC 99 SOURCE UE-MONTH. 03 COLUMN 60 PIC X VALUE "-". 03 COLUMN 61 PIC 9999 SOURCE UE-YEAR. 03 COLUMN 75 PIC X VALUE "*". 02 LINE 29. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 30 COLUMN 45 PIC X(31) VALUE "* End of Report EX1008 *". 02 LINE 31. 03 COLUMN 45 PIC X VALUE "*". 03 COLUMN 75 PIC X VALUE "*". 02 LINE 32 COLUMN 45 PIC X(31) VALUE ALL "*". PROCEDURE DIVISION. DECLARATIVES. BOR SECTION. USE BEFORE REPORTING REPORT-HEADER. EOR SECTION. USE BEFORE REPORTING REPORT-FOOTER. EOR-A. DISPLAY "*** Created EX1008.LIS ***". DET SECTION. USE BEFORE REPORTING DETAIL-LINE. DET-A. IF SORTED-NAME = NAME MOVE SORTED-RECORD TO CUSTOMER-MASTER-RECORD ADD INVOICE-SALES TO SAVE-INVOICE-SALES SUPPRESS PRINTING. IF NAME = SPACES SUPPRESS PRINTING. END DECLARATIVES. MAIN SECTION. 000-DO-SORT. SORT SORT-FILE ON ASCENDING KEY SORT-NAME WITH DUPLICATES IN ORDER USING CUSTOMER-FILE GIVING SORTED-FILE. 000-START. DISPLAY "*** EX1008 ***". DISPLAY "Enter Current Date (YYYYMMDD) :". ACCEPT UNEDITED-DATE. OPEN INPUT SORTED-FILE. OPEN OUTPUT PRINTER-FILE. MOVE SPACES TO NAME. INITIATE MASTER-LIST. PERFORM 200-READ-MASTER UNTIL EOF = "Y". 100-END-OF-FILE. TERMINATE MASTER-LIST. CLOSE SORTED-FILE, PRINTER-FILE. STOP RUN. 200-READ-MASTER. READ SORTED-FILE AT END MOVE "Y" TO EOF MOVE HIGH-VALUES TO SORTED-NAME. GENERATE DETAIL-LINE. IF SORTED-NAME NOT = NAME MOVE S-INVOICE-SALES TO SAVE-INVOICE-SALES. IF EOF NOT = "Y" MOVE SORTED-RECORD TO CUSTOMER-MASTER-RECORD. |
Figure 10-17 EX1008.LIS Listing
Previous | Next | Contents | Index |