IDENTIFICATION DIVISION. PROGRAM-ID. PROJ1. *************************************************** * PROJ2 - PRINTS A CUSTOMER INFORMATION REPORT * * BY NATHAN BALON SN# 797737 * * * *************************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-CUSTOMER-FILE ASSIGN TO 'PROJ2.DAT'. SELECT OUT-CUSTOMER-FILE ASSIGN TO 'PROJ2.RPT'. DATA DIVISION. FILE SECTION. FD IN-CUSTOMER-FILE LABEL RECORDS ARE STANDARD. 01 IN-CUSTOMER-REC. 05 IN-CUSTOMER-NAME PIC X(20). 05 IN-ADDRESS PIC X(20). 05 IN-CITY PIC X(10). 05 IN-STATE PIC X(2). 05 IN-ZIPCODE PIC X(5). FD OUT-CUSTOMER-FILE LABEL RECORDS ARE STANDARD. 01 OUT-CUSTOMER-REC. 05 OUT-CUSTOMER-NAME PIC X(20). 05 PIC X(4). 05 OUT-ADDRESS PIC X(20). 05 PIC X(4). 05 OUT-CITY PIC X(10). 05 PIC X(4). 05 OUT-STATE PIC X(2). 05 PIC X(4). 05 OUT-ZIPCODE PIC X(5). 05 PIC X(7). WORKING-STORAGE SECTION. 01 WS-WORK-AREA. 05 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'. 05 WS-DATE. 10 WS-YEAR PIC 9(4). 10 WS-MONTH PIC 9(2). 10 WS-DAY PIC 9(2). 05 WS-PAGE-COUNTER PIC 9(2) VALUE 0. 05 WS-LINE-COUNTER PIC 9(2) VALUE 0. 01 WS-PAGE-HEADINGS. 05 PIC X(5) VALUE 'PAGE '. 05 PAGE-OUT PIC 99 VALUE 0. 05 PIC X(14). 05 PIC X(27) VALUE 'CUSTOMER INFORMATION REPORT'. 05 PIC X(15). 05 HL-DATE. 10 MONTH-OUT PIC 9(2). 10 PIC X VALUE '/'. 10 DAY-OUT PIC 9(2). 10 PIC X VALUE '/'. 10 YEAR-OUT PIC 9(4). 01 WS-DETAIL-HEADINGS. 05 PIC X(20) VALUE 'CUSTOMER NAME'. 05 PIC X(4). 05 PIC X(16) VALUE 'CUSTOMER ADDRESS'. 05 PIC X(40). PROCEDURE DIVISION. 100-MAIN-MODULE. OPEN INPUT IN-CUSTOMER-FILE OUTPUT OUT-CUSTOMER-FILE PERFORM 200-DATE-RTN PERFORM 300-HEADING-RTN WRITE OUT-CUSTOMER-REC PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO ' READ IN-CUSTOMER-FILE AT END MOVE 'NO ' TO ARE-THERE-MORE-RECORDS NOT AT END PERFORM 400-PROCESS-RTN END-READ END-PERFORM CLOSE IN-CUSTOMER-FILE OUT-CUSTOMER-FILE STOP RUN. *********************************************************** * 200-DATE-RTN GETS SYSTEM DATE FROM COMPUTER AND * * MOVES DATES TO OUT BE OUTPUT * * * *********************************************************** 200-DATE-RTN. MOVE FUNCTION CURRENT-DATE TO WS-DATE MOVE WS-MONTH TO MONTH-OUT MOVE WS-DAY TO DAY-OUT MOVE WS-YEAR TO YEAR-OUT. *********************************************************** * 300-HEADING-RTN IS EXECUTED ONCE FROM THE MAIN MODULE * * AND THEN AFTER 15 CUSTOMER DETAIL LINES * * * *********************************************************** 300-HEADING-RTN. ADD 1 TO WS-PAGE-COUNTER MOVE WS-PAGE-COUNTER TO PAGE-OUT WRITE OUT-CUSTOMER-REC FROM WS-PAGE-HEADINGS AFTER ADVANCING PAGE WRITE OUT-CUSTOMER-REC FROM WS-DETAIL-HEADINGS AFTER ADVANCING 2 LINES MOVE ZEROS TO WS-LINE-COUNTER. *********************************************************** * 400-PROCESS-RTN - PERFORMED FROM 100-MAIN-MODULE * * MOVES EMPLOYEE INFORMATION TO OUTPUT * * AREAS, THEN WRITES THE RECORD * *********************************************************** 400-PROCESS-RTN. IF WS-LINE-COUNTER >= 15 PERFORM 300-HEADING-RTN END-IF MOVE IN-CUSTOMER-NAME TO OUT-CUSTOMER-NAME MOVE IN-ADDRESS TO OUT-ADDRESS MOVE IN-CITY TO OUT-CITY MOVE IN-STATE TO OUT-STATE MOVE IN-ZIPCODE TO OUT-ZIPCODE WRITE OUT-CUSTOMER-REC AFTER ADVANCING 2 LINES ADD 1 TO WS-LINE-COUNTER.