|
HP COBOL User Manual
10.9.4 EX1008---Detail Report Program
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
|