Question: Can someone look over my COBOL code? It won't read the rest of the info in my Clerk file, instead it reads the same bit
Can someone look over my COBOL code?
It won't read the rest of the info in my Clerk file, instead it reads the same bit over and over again.
The end result is at the end of the code.
IDENTIFICATION DIVISION. ************************ PROGRAM-ID. Ch7-2. AUTHOR. FRANK. INSTALLATION. UTC. DATE-WRITTEN. JANUARY 8 2013. DATE-COMPILED. ENVIRONMENT DIVISION. ********************** INPUT-OUTPUT SECTION. ********************** FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO "C:\data\cobol\CUSTOMER.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT CLERK-FILE ASSIGN TO "C:\data\cobol\CLRKNAME.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT REPORT-FILE ASSIGN TO "C:\solution\cobol\EX7-2.RPT". / DATA DIVISION. *************** FILE SECTION. *************** ****************************************************************** ** INPUT-FILE - CUSTOMER SALES FILE ** ******************************************************************* FD CUSTOMER-FILE. 01 INPUT-RECORD PIC X(74). ****************************************************************** * * * ADDRESS FILE - CUSTOMER ADDRESS FILE FOR NON-EMBEDDED TABLE* * * ****************************************************************** FD CLERK-FILE. 01 NAME-RECORD. 02 NR-SALES-CLERK-ID PIC XX. 02 NR-SALES-CLERK-NAME PIC X(20). ****************************************************************** * * * REPORT FILE * * * ****************************************************************** FD REPORT-FILE. 01 REPORT-LINE-OUT PIC X(90). / WORKING-STORAGE SECTION. ************************ ****************************************************************** * * * SWITCHES * * * ****************************************************************** 01 SWITCHES. 02 SW-END-OF-FILE PIC X. 88 END-OF-FILE VALUE "Y". ****************************************************************** * * * Accumulators * * * ****************************************************************** 01 ACCUMULATORS. 02 AC-LINE-COUNT PIC 999. 02 AC-PAGE-COUNT PIC 999. 02 AC-RECORD-COUNT PIC 999. 02 AC-TOTAL-PURCHASES PIC 9(5)V99. / ****************************************************************** * * * Work Area Fields * * * ****************************************************************** 01 WORK-AREA. 02 WA-TODAYS-DATE-TIME. 03 WA-TODAYS-DATE. 04 WA-TODAYS-YEAR PIC 9(4). 04 WA-TODAYS-MONTH PIC 99. 04 WA-TODAYS-DAY PIC 99. 03 WA-TODAYS-TIME. 04 WA-TODAYS-HOUR PIC 99. 04 WA-TODAYS-MINUTES PIC 99. 03 PIC X(9). 02 WA-DATE. 03 WA-MONTH PIC 99. 03 WA-DAY PIC 99. 03 WA-YEAR PIC 9(4). 02 WA-RUN-DATE REDEFINES WA-DATE PIC 9(8). 02 WA-AM-PM PIC XX.
02 WA-HYPENS PIC X(25).
02 WA-SALES-CLERK-NAME PIC X(20). ****************************************************************** * * * NON-EMBEDDED CUSTOMER ADDRESS TABLE * * * ******************************************************************
01 CLERK-TABLE. 02 CT-ENTRY OCCURS 11 TIMES ASCENDING KEY CT-SALES-CLERK-ID INDEXED BY CT-INDEX. 03 CT-SALES-CLERK-ID PIC XX. 03 CT-SALES-CLERK-NAME PIC X(20). ******************************************************************** * * * EMBEDDED MONTH NAME TABLE * * * ********************************************************************
01 MONTH-TABLE-DATA.
02 PIC X(3) VALUE "JAN".
02 PIC X(3) VALUE "FEB".
02 PIC X(3) VALUE "MAR".
02 PIC X(3) VALUE "APR".
02 PIC X(3) VALUE "MAY".
02 PIC X(3) VALUE "JUN".
02 PIC X(3) VALUE "JUL".
02 PIC X(3) VALUE "AUG".
02 PIC X(3) VALUE "SEP".
02 PIC X(3) VALUE "OCT".
02 PIC X(3) VALUE "NOV".
02 PIC X(3) VALUE "DEC".
01 MONTH-TABLE REDEFINES MONTH-TABLE-DATA.
02 MT-NAME OCCURS 12 TIMES PIC X(3).
/ ******************************************************************
* *
* INPUT-FILE- CUSTOMER DATA FILE RECORD LAYOUT *
* *
* CHARACTERISTICS: LAYOUT FOR FILE CUSTOMER.DAT *
* FILE ORGANIZATION - SEQUENTIAL *
* RECORD LENGTH - 74 BYTES *
* *
* DATE FORMAT -YYYYMMDD *
* *
****************************************************************** /
****************************************************************** * * * REPORT HEADINGS FOR THE CLERK NAME REPORT * * * ******************************************************************
****************************************************************** * * * INPUT RECORD LAYOUT - CUSTOMER SALES FILE * ****************************************************************** 01 CUSTOMER-RECORD. 02 CR-PURCHASE-DATE PIC X(8). 02 CR-ACCOUNT-NUMBER PIC X(6). 02 CR-CUSTOMER-NAME PIC X(20). 02 CR-ITEM-PURCHASED PIC X(20). 02 CR-QUANTITY-PURCHASED PIC 9. 02 CR-BALANCE PIC 9(4)V99. 02 CR-PURCHASES PIC 9(4)V99. 02 PIC X(5). 02 CR-CLERK-ID PIC XX. ****************************************************************** * * * Report Headings for the Customer Address Report * * * ****************************************************************** 01 REPORT-HEADING. 02 RH-LINE-1. 03 PIC X(6) VALUE "DATE: ". 03 RH-RUN-DATE PIC Z9/99/9999. 03 PIC X(15) VALUE SPACES. 03 PIC X(20) VALUE "ABC DEPARTMENT STORE". 03 PIC X(19) VALUE SPACES. 03 PIC X(5) VALUE "PAGE ". 03 RH-PAGE PIC ZZ9.
02 RH-LINE-2. 03 PIC X(6) VALUE "TIME: ". 03 RH-HOUR PIC Z9. 03 PIC X VALUE ':'. 03 RH-MINUTES PIC 99. 03 RH-AM-PM PIC XX. 03 PIC X(19) VALUE SPACES. 03 PIC X(17) VALUE "CLERK NAME REPORT".
02 RH-LINE-3. 03 PIC X(8) VALUE "DATE OF". 03 PIC X(5) VALUE SPACES. 03 PIC X(7) VALUE "ACCOUNT". 03 PIC X(43) VALUE SPACES. 03 PIC X(8) VALUE "PURCHASE". 02 RH-LINE-4. 03 PIC X(8) VALUE "PURCHASE". 03 PIC X(5) VALUE SPACES. 03 PIC X(6) VALUE "NUMBER". 03 PIC X(2) VALUE SPACES. 03 PIC X(13) VALUE "CUSTOMER NAME". 03 PIC X(8) VALUE SPACES. 03 PIC X(10) VALUE "CLERK NAME". 03 PIC X(11) VALUE SPACES. 03 PIC X(6) VALUE "AMOUNT". 02 RH-LINE-5. 03 PIC X(11) VALUE ALL "-". 03 PIC X(2) VALUE SPACES. 03 PIC X(6) VALUE ALL "-". 03 PIC X(2) VALUE SPACES. 03 PIC X(20) VALUE ALL "-". 03 PIC X VALUE SPACES. 03 PIC X(20) VALUE ALL "-". 03 PIC X VALUE SPACES. 03 PIC X(9) VALUE ALL "-". ****************************************************************** * * * Detail Line for the Customer Address Report * * * ****************************************************************** 01 DETAIL-LINE. 02 DL-PURCHASE-DATE PIC X(11). 02 PIC X(2) VALUE SPACES. 02 DL-ACCOUNT-NUMBER PIC X(6). 02 PIC X(2) VALUE SPACES. 02 DL-CUSTOMER-NAME PIC X(20). 02 PIC X VALUE SPACES. 02 DL-CLERK-NAME PIC X(20). 02 PIC X VALUE SPACES. 02 DL-PURCHASE-AMOUNT PIC $Z,ZZ9.99. ****************************************************************** * * * Summary Lines for the Customer Address Report * * * ****************************************************************** 01 SUMMARY-LINE. 02 SL-LINE-1. 03 PIC X(18) VALUE SPACES. 03 PIC X(28) VALUE "TOTAL RECORDS PROCESSED = ". 03 SL-RECORDS-PROCESSED PIC ZZ9. 02 SL-LINE-2. 03 PIC X(18) VALUE SPACES. 03 PIC X(19) VALUE "TOTAL PURCHASES = ". 03 SL-TOTAL-PURCHASES PIC $ZZ,ZZ9.99.
02 SL-LINE-3. 03 PIC X(24) VALUE SPACES. 03 PIC X(13) VALUE "END OF REPORT". PROCEDURE DIVISION. ******************* ****************************************************************** * * * MAIN-PROGRAM - THIS IS THE MAIN PARAGRAPH OF THIS PROGRAM * * * ****************************************************************** MAIN-PROGRAM. PERFORM A-100-INITIALIZATION. PERFORM B-100-LOAD-CLERK-TABLE. PERFORM C-100-PROCESS-FILE. PERFORM D-100-WRAP-UP. STOP RUN. ****************************************************************** * * * THE INITIALIZATION PARAGRAPH FOLLOWS * * * ****************************************************************** A-100-INITIALIZATION. INITIALIZE ACCUMULATORS. OPEN OUTPUT REPORT-FILE. MOVE FUNCTION CURRENT-DATE TO WA-TODAYS-DATE-TIME. MOVE WA-TODAYS-MONTH TO WA-MONTH. MOVE WA-TODAYS-DAY TO WA-DAY. MOVE WA-TODAYS-YEAR TO WA-YEAR. EVALUATE TRUE WHEN WA-TODAYS-HOUR = 00 MOVE "AM" TO WA-AM-PM MOVE 12 TO WA-TODAYS-HOUR WHEN WA-TODAYS-HOUR 12 MOVE "PM" TO WA-AM-PM SUBTRACT 12 FROM WA-TODAYS-HOUR. / ****************************************************************** * * * LOAD CUSTOMER ADDRESS TABLE PARAGRAPH * * * ****************************************************************** B-100-LOAD-CLERK-TABLE. OPEN INPUT CLERK-FILE. MOVE "N" TO SW-END-OF-FILE. READ CLERK-FILE AT END MOVE "Y" TO SW-END-OF-FILE. PERFORM B-200-LOAD-LOCATION VARYING CT-INDEX FROM 1 BY 1 UNTIL END-OF-FILE OR CT-INDEX > 11. CLOSE CLERK-FILE. ****************************************************************** * * * MOVE ADDRESS DATA TO ADDRESS TABLE * * * ****************************************************************** B-200-LOAD-LOCATION. MOVE NR-SALES-CLERK-ID TO CT-SALES-CLERK-ID (CT-INDEX). MOVE NR-SALES-CLERK-NAME TO CT-SALES-CLERK-NAME (CT-INDEX). READ CLERK-FILE AT END MOVE "Y" TO SW-END-OF-FILE. / ****************************************************************** * * * FILE PROCESSING CONTROL PARAGRAPH * * * ****************************************************************** C-100-PROCESS-FILE. OPEN INPUT CUSTOMER-FILE. MOVE "N" TO SW-END-OF-FILE. READ CUSTOMER-FILE INTO CUSTOMER-RECORD AT END MOVE "Y" TO SW-END-OF-FILE. PERFORM C-200-PROCESS-RECORD UNTIL END-OF-FILE. MOVE AC-RECORD-COUNT TO SL-RECORDS-PROCESSED. WRITE REPORT-LINE-OUT FROM SL-LINE-1 AFTER ADVANCING 2 LINES. WRITE REPORT-LINE-OUT FROM SL-LINE-2 AFTER ADVANCING 1 LINE. WRITE REPORT-LINE-OUT FROM SL-LINE-3 AFTER ADVANCING 2 LINES. close CUSTOMER-FILE. / ****************************************************************** * * * PROCESS RECORDS * * * ****************************************************************** C-200-PROCESS-RECORD. IF AC-LINE-COUNT = 0 PERFORM C-300-WRITE-HEADINGS. SEARCH ALL CT-ENTRY AT END MOVE "NOT FOUND" TO WA-SALES-CLERK-NAME WHEN CT-SALES-CLERK-ID (CT-INDEX) = CR-CLERK-ID MOVE CT-SALES-CLERK-NAME (CT-INDEX) TO WA-SALES-CLERK-NAME. MOVE CR-PURCHASE-DATE TO DL-PURCHASE-DATE. MOVE CR-ACCOUNT-NUMBER TO DL-ACCOUNT-NUMBER. MOVE CR-CUSTOMER-NAME TO DL-CUSTOMER-NAME. MOVE WA-SALES-CLERK-NAME TO DL-CLERK-NAME. MOVE CR-PURCHASES TO DL-PURCHASE-AMOUNT. WRITE REPORT-LINE-OUT FROM DETAIL-LINE AFTER ADVANCING 1 LINE. ADD 1 TO AC-LINE-COUNT. ADD 1 TO AC-RECORD-COUNT. ADD CR-PURCHASES TO AC-TOTAL-PURCHASES. IF AC-LINE-COUNT> 55 PERFORM C-300-WRITE-HEADINGS. READ CUSTOMER-FILE INTO INPUT-RECORD AT END MOVE "Y" TO SW-END-OF-FILE.
/
******************************************************************* ** * ** DISPLAY HEADINGS * ** * ******************************************************************* C-300-WRITE-HEADINGS. ADD 1 TO AC-PAGE-COUNT MOVE 0 TO AC-LINE-COUNT. MOVE WA-RUN-DATE TO RH-RUN-DATE. MOVE AC-PAGE-COUNT TO RH-PAGE. MOVE WA-TODAYS-HOUR TO RH-HOUR. MOVE WA-TODAYS-MINUTES TO RH-MINUTES. MOVE WA-AM-PM TO RH-AM-PM. WRITE REPORT-LINE-OUT FROM RH-LINE-1 AFTER ADVANCING 2 LINES. WRITE REPORT-LINE-OUT FROM RH-LINE-2 AFTER ADVANCING 1 LINE. WRITE REPORT-LINE-OUT FROM RH-LINE-3 AFTER ADVANCING 2 LINES. WRITE REPORT-LINE-OUT FROM RH-LINE-4 AFTER ADVANCING 1 LINE. WRITE REPORT-LINE-OUT FROM RH-LINE-5 AFTER ADVANCING 1 LINE. ADD 7 TO AC-LINE-COUNT. /
****************************************************************** * * * END OF JOB PARAGRAPH * * * ****************************************************************** D-100-WRAP-UP.
DISPLAY "CUSTOMER ADDRESS REPORT PROGRAM HAS TERMINATED". CLOSE REPORT-FILE. /

Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
