Category >
                            
                                COBOL
                            || Published on :
                            Friday, May 8, 2015 || Views:
                            4207
                            || 
                            COBOL Program to a program is required to produce a summary sales report from an unsorted sequential file COBOL Program COBOL example program 
                        
                       
                        
                        
                        
                            
      $ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. CS4321-95-COBOL-EXAM.
AUTHOR. Michael Coughlan.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
       SELECT Sales-File ASSIGN TO "SALES.DAT"
                 ORGANIZATION IS LINE SEQUENTIAL.
       SELECT Work-File ASSIGN TO "SORT.TMP".
       SELECT Summary-Report ASSIGN TO "AROMASALES.RPT"
                 ORGANIZATION IS LINE SEQUENTIAL.
       SELECT Sorted-File ASSIGN TO "SORTSALE.DAT"
                 ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD Sales-File.
01  Sales-Rec.
    88 End-Of-Sales-File    VALUE HIGH-VALUES.
    02  SF-Cust-Id              PIC X(5).
    02  SF-Cust-Name            PIC X(20).
    02  SF-Oil-Id.
        03  FILLER              PIC X.
            88 Essential-Oil   VALUE "E".
        03  SF-Oil-Name         PIC 99.
    02 SF-Unit-Size             PIC 99.
    02 SF-Units-Sold            PIC 999.
SD Work-File.
01 Work-Rec.
   88 End-Of-Work-File VALUE HIGH-VALUES.
    02  WF-Cust-Id              PIC X(5).
    02  WF-Cust-Name            PIC X(20).
    02  WF-Oil-Id.
        03 FILLER               PIC X.
        03 WF-Oil-Num           PIC 99.
    02 WF-Unit-Size             PIC 99.
    02 WF-Units-Sold            PIC 999.
FD Summary-Report.
01 Print-Line                   PIC X(64).
FD Sorted-File.
01 Sorted-Rec                   PIC X(33).
WORKING-STORAGE SECTION.
01  Oils-Table.
    02  Oil-Cost-Values.
        03 FILLER               PIC X(40) 
                VALUE "0041003200450050002910250055003900650075".
        03 FILLER               PIC X(40) 
                VALUE "0080004400500063006500550085004812500065".
        03 FILLER               PIC X(40) 
                VALUE "0060005500670072006501250085006511150105".
    02  FILLER REDEFINES Oil-Cost-VALUES.
        03 OIL-COST           PIC 99V99 OCCURS 30 TIMES.
01  Report-Heading-Line         PIC X(44)
            VALUE "              AROMAMORA SUMMARY SALES REPORT". 
01  Report-Heading-Underline.
    02  FILLER                  PIC X(13) VALUE SPACES.
    02  FILLER                  PIC X(32) VALUE ALL "-".
01  Topic-Heading-Line.
    02  FILLER                  PIC BX(13) VALUE " CUSTOMER NAME".
    02  FILLER                  PIC X(8) VALUE SPACES.
    02  FILLER                  PIC X(10) VALUE "CUST-ID   ".
    02  FILLER                  PIC X(8) VALUE "SALES   ".
    02  FILLER                  PIC X(11) VALUE "QTY SOLD   ".
    02  FILLER                  PIC X(11) VALUE "SALES VALUE".
01  Cust-Sales-Line.
    02  Prn-Cust-Name           PIC X(20).
    02  Prn-Cust-Id             PIC BBB9(5).
    02  Prn-Cust-Sales          PIC BBBBBZZ9.
    02  Prn-Qty-Sold            PIC BBBBBZZ,ZZ9.
    02  Prn-Sales-Value         PIC BBBB$$$,$$9.99.                 
01  Total-Sales-Line.
    02  FILLER                  PIC X(33) VALUE SPACES.
    02  FILLER                  PIC X(19) VALUE "TOTAL SALES       :".
    02  Prn-Total-Sales         PIC BBBBBBZZ,ZZ9.
01  Total-Qty-Sold-Line.
    02  FILLER                  PIC X(33) VALUE SPACES.
    02  FILLER                  PIC X(19) VALUE "TOTAL QTY SOLD    :".
    02  Prn-Total-Qty-Sold      PIC BBBBBZZZ,ZZ9.
01  Total-Sales-Value-Line.
    02  FILLER                  PIC X(33) VALUE SPACES.
    02  FILLER                  PIC X(19) VALUE "TOTAL SALES VALUE :".
    02  Prn-Total-Sales-Value   PIC B$$$$,$$9.99.
01  Cust-Totals.
    02  Cust-Sales              PIC 999.
    02  Cust-Qty-Sold           PIC 9(5).
    02  Cust-Sales-Value        PIC 9(5)V99.
01  Final-Totals.
    02  Total-Sales             PIC 9(5)    VALUE ZEROS.
    02  Total-Qty-Sold          PIC 9(6)    VALUE ZEROS.
    02  Total-Sales-Value       PIC 9(6)V99 VALUE ZEROS.
01  Temp-Variables.
    02  Sale-Qty-Sold           PIC 99999.
    02  Value-Of-Sale           PIC 999999V99. 
    02  Prev-Cust-Id            PIC X(5).
PROCEDURE DIVISION.
Produce-Summary-Report.
    SORT Work-File ON ASCENDING WF-Cust-Name
         INPUT PROCEDURE IS Select-Essential-Oils
         OUTPUT PROCEDURE IS Print-Summary-Report.
    STOP RUN. 
Select-Essential-Oils.
    OPEN INPUT Sales-File.
    READ Sales-File
        AT END SET End-Of-Sales-File TO TRUE
    END-READ.
    
    PERFORM UNTIL End-Of-Sales-File
        IF Essential-Oil 
            RELEASE Work-Rec FROM Sales-Rec
        END-IF
        READ Sales-File
            AT END SET End-Of-Sales-File TO TRUE
        END-READ
    END-PERFORM.
    CLOSE Sales-File.
Print-Summary-Report.
    OPEN OUTPUT Summary-Report.
    OPEN OUTPUT Sorted-File.
    WRITE Print-Line FROM Report-Heading-Line AFTER ADVANCING 1 LINE.
    WRITE Print-Line FROM Report-Heading-Underline AFTER ADVANCING 1 LINE.
    WRITE Print-Line FROM Topic-Heading-Line AFTER ADVANCING 3 LINES.
    RETURN Work-File
        AT END SET End-Of-Work-File TO TRUE
    END-RETURN.
    PERFORM Print-Customer-Lines UNTIL End-Of-Work-File
    MOVE Total-Sales TO Prn-Total-Sales.
    WRITE Print-Line FROM Total-Sales-Line AFTER ADVANCING 3 LINES.
    MOVE Total-Qty-Sold TO Prn-Total-Qty-Sold.
    WRITE Print-Line FROM Total-Qty-Sold-Line AFTER ADVANCING 2 LINES.
    MOVE Total-Sales-Value TO Prn-Total-Sales-Value.
    WRITE Print-Line FROM Total-Sales-Value-Line AFTER ADVANCING 2 LINES.
    CLOSE Summary-Report, Sorted-File.
Print-Customer-Lines.
    MOVE ZEROS TO Cust-Totals.
    MOVE WF-Cust-Id TO Prn-Cust-Id, Prev-Cust-Id.
    MOVE WF-Cust-Name TO Prn-Cust-Name.
    PERFORM UNTIL WF-Cust-Id NOT = Prev-Cust-Id
        WRITE Sorted-Rec FROM Work-Rec
        ADD 1 TO Cust-Sales, Total-Sales
        COMPUTE Sale-Qty-Sold = WF-Unit-Size * WF-Units-Sold
        ADD Sale-Qty-Sold TO Cust-Qty-Sold, Total-Qty-Sold
        COMPUTE Value-Of-Sale = Sale-Qty-Sold * Oil-Cost(WF-Oil-Num)
        ADD Value-Of-Sale TO Cust-Sales-Value, Total-Sales-Value
        
        RETURN Work-File
            AT END SET End-Of-Work-File TO TRUE
        END-RETURN
    END-PERFORM.
    MOVE Cust-Sales TO Prn-Cust-Sales.
    MOVE Cust-Qty-Sold TO Prn-Qty-Sold.
    MOVE Cust-Sales-Value TO Prn-Sales-Value.
    WRITE Print-Line FROM Cust-Sales-Line AFTER ADVANCING 2 LINES.