Code for Program of group wise stock summary in Cobol
/*****************************************************************
Input file data
1 T.V 0100000002000000001001
2 RADIO 0100000002000000002003
3 BOOKS 0100000001500000003001
4 TABLE 0100000002500000004005
******************************************************************/
IDENTIFICATION DIVISION.
PROGRAM-ID. salrep.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INP1 ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT1 ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD INP1
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "INPUT.TXT".
01 REC1.
05 NO1 PIC 9(4).
05 NAME1 PIC X(26) .
05 UNIT1 PIC X(5).
05 RATE1 PIC 9(7).
05 QTY1 PIC 9(8).
05 GRP1 PIC 99.
FD OUT1
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "OUTPUT1.TXT".
01 REC2 PIC X(80).
WORKING-STORAGE SECTION.
01 DISP.
05 GRNO1 PIC 9(2) OCCURS 5 TIMES.
05 NAME2 PIC X(12) OCCURS 5 TIMES.
05 TSTOCK1 PIC 9(8) OCCURS 5 TIMES.
05 SVALUE1 PIC 9(14) OCCURS 5 TIMES.
01 PRINT1.
05 GRNO2 PIC 9(2).
05 FILLER PIC X(5).
05 NAME3 PIC X(12).
05 FILLER PIC X(5).
05 TSTOCK2 PIC 9(8).
05 FILLER PIC X(5).
05 SVALUE2 PIC 9(7).
01 EOF PIC X VALUE "N".
01 I PIC 99.
01 J PIC 99.
01 HEAD1.
05 FILLER PIC X(20).
05 FILLER PIC X(40) VALUE "SHREE ELECTRONOICS LTD".
01 HEAD2.
05 FILLER PIC X(20).
05 FILLER PIC X(40) VALUE "GROUP WISE STOCK SUMMERY".
01 HEAD3.
05 FILLER PIC X(80) VALUE ALL "-".
01 HEAD4.
05 PIC X(80) VALUE
"GROUP NAME TOTAL STOCKVAL".
01 TOTAL1 PIC 999999 VALUE 0.
01 GTOTAL1 PIC 9(8) VALUE 0.
01 GRANDTOTAL1.
05 FILLER PIC X(22) VALUE " GRAND TOTAL :- ".
05 TOTAL2 PIC ZZZZZZ9(3).
05 FILLER PIC X(5).
05 GTOTAL2 PIC ZZZZZ9(2).
01 T1 PIC 9(14).
PROCEDURE DIVISION.
BEGIN.
PERFORM VARYING I FROM 1 BY 1 UNTIL I>5
MOVE ZERO TO TSTOCK1(I),SVALUE1(1)
END-PERFORM.
OPEN INPUT INP1 OUTPUT OUT1.
WRITE REC2 FROM HEAD1.
WRITE REC2 FROM HEAD2.
WRITE REC2 FROM HEAD3.
WRITE REC2 FROM HEAD4.
WRITE REC2 FROM HEAD3.
PERFORM UNTIL EOF="Y"
READ INP1
AT END MOVE "Y" TO EOF
NOT AT END PERFORM DISPLAY1
END-READ
END-PERFORM.
DISPLAY TOTAL1.
PERFORM VARYING I FROM 1 BY 1 UNTIL I>5
MOVE GRNO1(I) TO GRNO2
MOVE NAME2(I) TO NAME3
MOVE TSTOCK1(I) TO TSTOCK2
COMPUTE GTOTAL1=GTOTAL1 + SVALUE1(I)
MOVE SVALUE1(I) TO SVALUE2
WRITE REC2 FROM PRINT1
END-PERFORM.
MOVE TOTAL1 TO TOTAL2.
MOVE GTOTAL1 TO GTOTAL2.
WRITE REC2 FROM HEAD3.
WRITE REC2 FROM GRANDTOTAL1.
CLOSE INP1.
CLOSE OUT1.
STOP RUN.
DISPLAY1.
COMPUTE T1=RATE1 * QTY1.
DISPLAY GRP1 " " RATE1 " "QTY1" "T1.
* MOVE 0 TO TOTAL1.
EVALUATE GRP1
WHEN 01
MOVE "ELECTRICALS" TO NAME2(GRP1)
MOVE GRP1 TO GRNO1(GRP1)
COMPUTE TSTOCK1(GRP1)=TSTOCK1(GRP1) + QTY1
COMPUTE SVALUE1(GRP1)=SVALUE1(GRP1) + (QTY1 * RATE1)
COMPUTE TOTAL1=TOTAL1 + QTY1
DISPLAY GRNO1(GRP1) " "NAME2(GRP1)" "SVALUE1(GRP1)
WHEN 02
MOVE "ENGINEERING" TO NAME2(GRP1)
MOVE GRP1 TO GRNO1(GRP1)
COMPUTE TSTOCK1(GRP1) = TSTOCK1(GRP1) + QTY1
COMPUTE SVALUE1(GRP1)=SVALUE1(GRP1) + (QTY1 * RATE1)
COMPUTE TOTAL1=TOTAL1 + QTY1
DISPLAY GRNO1(GRP1) " "NAME2(GRP1)" "SVALUE1(GRP1)
WHEN 03
MOVE "ELECTRONICS" TO NAME2(GRP1)
MOVE GRP1 TO GRNO1(GRP1)
COMPUTE TSTOCK1(GRP1) = TSTOCK1(GRP1) + QTY1
COMPUTE SVALUE1(GRP1) =SVALUE1(GRP1) + (QTY1 * RATE1)
COMPUTE TOTAL1=TOTAL1 + QTY1
DISPLAY GRNO1(GRP1)" "NAME2(GRP1)" "SVALUE1(GRP1)
WHEN 04
MOVE "STATIONARY" TO NAME2(GRP1)
MOVE GRP1 TO GRNO1(GRP1)
COMPUTE TSTOCK1(GRP1) = TSTOCK1(GRP1) + QTY1
COMPUTE SVALUE1(GRP1) = SVALUE1(GRP1)+(QTY1 * RATE1)
COMPUTE TOTAL1=TOTAL1 + QTY1
DISPLAY GRNO1(GRP1) " "NAME2(GRP1)" "SVALUE1(GRP1)
WHEN 05
MOVE "FURNITURE" TO NAME2(GRP1)
MOVE GRP1 TO GRNO1(GRP1)
COMPUTE TSTOCK1(GRP1) = TSTOCK1(GRP1) + QTY1
COMPUTE SVALUE1(GRP1) = SVALUE1(GRP1) + (QTY1 * RATE1)
COMPUTE TOTAL1=TOTAL1 + QTY1
DISPLAY GRNO1(GRP1)" "NAME2(GRP1)" "SVALUE1(GRP1)
END-EVALUATE.
/*****************************************************************
Output
SHREE ELECTRONOICS LTD
GROUP WISE STOCK SUMMERY
--------------------------------------------------------------------------------
GROUP NAME TOTAL STOCKVAL
--------------------------------------------------------------------------------
01 ELECTRICALS 00000040 0006500
00000000
03 ELECTRONICS 00000020 0004000
00000000
05 FURNITURE 00000040 0010000
--------------------------------------------------------------------------------
GRAND TOTAL :- 100 20500
******************************************************************/