Compaq COBOL AAQ2G1FTK User Manual
Page 318

Producing Printed Reports
10.6 Programming a Linage-File Compaq COBOL Report
Example 10–4 (Cont.) Checking for End-of-Page on a 28-Line Logical Page
01
HEAD-5.
02
H5-LC
PIC 99.
02
FILLER
PIC X(4)
VALUE "Date".
02
FILLER
PIC X(7)
VALUE SPACES.
02
FILLER
PIC X(6)
VALUE "Amount".
02
FILLER
PIC X(10) VALUE SPACES.
02
FILLER
PIC X(11) VALUE "Description".
01
HEAD-6
PIC X(61) VALUE ALL "-".
01
DETAIL-LINE.
02
DET-LC
PIC 99.
02
DL-DATE
PIC X(9).
02
FILLER
PIC X
VALUE SPACE.
02
DL-AMT
PIC $ZZZ,ZZZ.99-.
02
FILLER
PIC X
VALUE SPACE.
02
DL-DESC
PIC X(20).
01
TOTAL-LINE.
02
TOT-LC
PIC 99.
02
FILLER
PIC X(25) VALUE "Total purchases to date: ".
02
TL
PIC $ZZZ,ZZZ,ZZZ.99-.
01
TOTAL-PURCHASES
PIC S9(9)V99.
01
PAGE-NUMBER
PIC S9(9).
01
HOLD-I-ACCOUNT-NUMBER
PIC X(9)
VALUE IS LOW-VALUES.
01
END-OF-FILE
PIC X
VALUE IS "N".
01
THESE-MANY
PIC 99
VALUE IS 1.
PROCEDURE DIVISION.
A000-BEGIN.
OPEN INPUT
INPUT-FILE
OUTPUT REPORT-FILE.
DISPLAY " Enter date--DD-MMM-YY:".
ACCEPT H2-DATE.
PERFORM A100-READ-INPUT UNTIL END-OF-FILE = "Y".
A050-WRAP-UP.
CLOSE INPUT-FILE
REPORT-FILE.
DISPLAY "END-OF-JOB".
STOP RUN.
A100-READ-INPUT.
READ INPUT-FILE AT END MOVE "Y" TO END-OF-FILE
PERFORM A400-PRINT-TOTALS
MOVE HIGH-VALUES TO I-ACCOUNT-NUMBER.
DISPLAY INPUT-RECORD.
IF END-OF-FILE NOT = "Y"
AND I-ACCOUNT-NUMBER NOT = HOLD-I-ACCOUNT-NUMBER
PERFORM A200-NEW-CUSTOMER.
IF END-OF-FILE NOT = "Y"
AND I-ACCOUNT-NUMBER = HOLD-I-ACCOUNT-NUMBER
PERFORM A300-PRINT-DETAIL-LINE.
MOVE I-ACCOUNT-NUMBER TO HOLD-I-ACCOUNT-NUMBER.
A200-NEW-CUSTOMER.
IF HOLD-I-ACCOUNT-NUMBER = LOW-VALUES
PERFORM A600-SET-UP-HEADERS
PERFORM A500-PRINT-HEADERS
PERFORM A300-PRINT-DETAIL-LINE
ELSE
PERFORM A400-PRINT-TOTALS
PERFORM A600-SET-UP-HEADERS
PERFORM A500-PRINT-HEADERS
PERFORM A300-PRINT-DETAIL-LINE.
(continued on next page)
10–18 Producing Printed Reports