IDENTIFICATION DIVISION.
PROGRAM-ID. WAIRHOUSE.
AUTHOR. MARTIN O SULLIVAN
INSTALLATION. MOYLISH.
DATE-WRITTEN. MARCH 1997.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBMAS400.
OBJECT-COMPUTER. IBMAS400.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ACMEPART
ASSIGN TO DISK-ACMEPART
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WA-FILE-STAT.
SELECT REPORT-FILE
ASSIGN TO PRINTER-QSYSPRT
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WB-REP-STAT.
DATA DIVISION.
FILE SECTION.
FD ACMEPART
RECORD CONTAINS 11 CHARACTERS
LABEL RECORDS ARE STANDARD
DATA RECORD IS FA-ACMEPART-DETAILS.
01 FA-ACMEPART-DETAILS.
03 WAREHOUSE-NO PIC 9(2).
03 PART-NO PIC 9(4).
03 QUANTITY PIC 9(5).
FD REPORT-FILE
LABEL RECORD IS OMITTED
DATA RECORD IS FB-REP-REC.
01 FB-REP-REC PIC X(132).
WORKING-STORAGE SECTION.
01 OVERALL-TOTAL PIC 9(6).
01 WA-FILE-STAT PIC X(2).
01 WB-REP-STAT PIC X(2).
01 END-OF-FILE-FLAG PIC X.
88 END-OF-FILE VALUE "Y".
88 NOT-END-OF-FILE VALUE "N".
01 PAGE-NO PIC 99.
01 LINE-COUNT PIC 99.
01 LAST-USED-WAREHOUSE-NO PIC 9(2).
01 WAREHOUSE-TOTAL PIC 9(6).
01 THE-DATE.
03 THE-YEAR PIC 9(2).
03 THE-MONTH PIC 9(2).
03 THE-DAY PIC 9(2).
01 WAREHOUSE-HEADING.
03 FILLER PIC X(10) VALUE SPACES.
03 FILLER PIC X(8) VALUE "PAGE # :".
03 PAGE-NO-OUT PIC 9(2).
03 FILLER PIC X(17) VALUE SPACES.
03 FILLER PIC X(23) VALUE
"ACME INVENTORY REPORT".
03 FILLER PIC X(16) VALUE SPACES.
03 FILLER PIC X(7) VALUE "DATE : ".
03 THE-DAY-OUT PIC 9(2).
03 FILLER PIC X VALUE "/".
03 THE-MONTH-OUT PIC 9(2).
03 FILLER PIC X VALUE "/".
03 THE-YEAR-OUT PIC 9(2).
01 WAREHOUSE-SUB-HEADING.
03 FILLER PIC X(10) VALUE SPACES.
03 FILLER PIC X(15) VALUE "WAREHOUSE - ".
03 WAREHOUSE-NO-OUT PIC 9(2).
01 DETAIL-HEADING.
03 FILLER PIC X(20) VALUE SPACES.
03 FILLER PIC X(7) VALUE "PART NO".
03 FILLER PIC X(12) VALUE SPACES.
03 FILLER PIC X(11) VALUE "QTY ON HAND".
01 DETAIL-LINE.
03 FILLER PIC X(20) VALUE SPACES.
03 PART-NUMBER-OUT PIC 9(6).
03 FILLER PIC X(16) VALUE SPACES.
03 QUANTITY-OUT PIC 9(5).
01 WAREHOUSE-TOTAL-LINE.
03 FILLER PIC X(40) VALUE SPACES.
03 FILLER PIC X(45) VALUE
"TOTAL NUMBER OF ITEMS STORED IN WAREHOUSE - ".
03 WAREHOUSE-TOTAL-OUT PIC 999,999,999.
01 TOTAL-LINE.
03 FILLER PIC X(20) VALUE SPACES.
03 FILLER PIC X(62) VALUE
"TOTAL NUMBER OF ITENS IN ALL WAREHOUSES COMBINED IS ".
03 OVERALL-TOTAL-OUT PIC 999,999,999,999.
01 FOOTING-LINE.
03 FILLER PIC X(40) VALUE SPACES.
03 FILLER PIC X(25) VALUE "*** END OF REPORT ***".
PROCEDURE DIVISION.
TOP-LEVEL-PARA.
PERFORM GET-DATE.
PERFORM START-UP.
PERFORM GET-RECORD.
PERFORM LAST-USED-WAREHOUSE-PARA.
PERFORM EACH-WAREHOUSE UNTIL END-OF-FILE.
PERFORM CLOSE-DOWN.
STOP RUN.
GET-DATE.
ACCEPT THE-DATE FROM DATE.
MOVE THE-YEAR TO THE-YEAR-OUT.
MOVE THE-MONTH TO THE-MONTH-OUT.
MOVE THE-DAY TO THE-DAY-OUT.
START-UP.
PERFORM OPEN-FILES.
PERFORM INIT-VARS.
PERFORM WRITE-HEADINGS-PARA.
INIT-VARS.
MOVE ZEROS TO OVERALL-TOTAL.
MOVE ZEROS TO WAREHOUSE-TOTAL.
MOVE ZEROS TO LINE-COUNT.
SET NOT-END-OF-FILE TO TRUE.
MOVE 1 TO PAGE-NO.
OPEN-FILES.
OPEN INPUT ACMEPART.
OPEN OUTPUT REPORT-FILE.
WRITE-HEADINGS-PARA.
MOVE PAGE-NO TO PAGE-NO-OUT.
WRITE FB-REP-REC FROM WAREHOUSE-HEADING AFTER
ADVANCING PAGE.
ADD 2 TO LINE-COUNT.
WRITE-WAREHOUSE-HEADINGS-PARA.
MOVE WAREHOUSE-NO TO WAREHOUSE-NO-OUT.
WRITE FB-REP-REC FROM WAREHOUSE-SUB-HEADING AFTER
ADVANCING 3 LINES.
WRITE FB-REP-REC FROM DETAIL-HEADING AFTER
ADVANCING 3 LINES.
ADD 6 TO LINE-COUNT.
LAST-USED-WAREHOUSE-PARA.
MOVE WAREHOUSE-NO TO LAST-USED-WAREHOUSE-NO.
GET-RECORD.
READ ACMEPART AT END SET END-OF-FILE TO TRUE.
EACH-WAREHOUSE.
PERFORM WRITE-WAREHOUSE-HEADINGS-PARA.
PERFORM EACH-PART UNTIL LAST-USED-WAREHOUSE-NO NOT =
WAREHOUSE-NO OR END-OF-FILE.
PERFORM WRITE-WAREHOUSE-TOTAL-LINE.
PERFORM LAST-USED-WAREHOUSE-PARA.
PERFORM RESET-PARA.
WRITE-WAREHOUSE-TOTAL-LINE.
MOVE WAREHOUSE-TOTAL TO WAREHOUSE-TOTAL-OUT.
WRITE FB-REP-REC FROM WAREHOUSE-TOTAL-LINE AFTER 2 LINES.
ADD 3 TO LINE-COUNT.
EACH-PART.
PERFORM POSS-NEW-PAGE.
ADD QUANTITY TO WAREHOUSE-TOTAL.
ADD QUANTITY TO OVERALL-TOTAL.
MOVE PART-NO TO PART-NUMBER-OUT.
MOVE QUANTITY TO QUANTITY-OUT.
WRITE FB-REP-REC FROM DETAIL-LINE AFTER ADVANCING 1 LINES.
ADD 2 TO LINE-COUNT.
PERFORM GET-RECORD.
RESET-PARA.
MOVE ZERO TO WAREHOUSE-TOTAL.
CLOSE-DOWN.
MOVE OVERALL-TOTAL TO OVERALL-TOTAL-OUT.
WRITE FB-REP-REC FROM TOTAL-LINE AFTER ADVANCING 3 LINE.
WRITE FB-REP-REC FROM FOOTING-LINE AFTER ADVANCING 3 LINE.
CLOSE REPORT-FILE.
CLOSE ACMEPART.
DISPLAY "END OF PROGRAM - GOOD BY".
POSS-NEW-PAGE.
IF LINE-COUNT >= 64
MOVE ZEROS TO LINE-COUNT
ADD 1 TO PAGE-NO
PERFORM WRITE-HEADINGS-PARA.