A student file(Line sequential)contains marks of students scored in various subject in
a class. Each record contains Reg-No, Name, Marks for Subject1, Subject2 & Subject3 (maximum marks for each subject is 100),Toal Marks and Rank.
Write a COBOL program to
:- Sort the above file in the ascending order of Reg-No
:- Find the Total Marks using INPUT PROCEDURE
:- Prepare a RANKLIST after sorting using OUTPUT PROCEDURE.
IDENTIFICATION DIVISION.
PROGRAM-ID. RANKLIST-INPUT-OUTPUT-PRO.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
  SELECT STU-FILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.

SELECT WORKFILE ASSIGN TO DISK.

SELECT SORTFILE ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD STU-FILE
  LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID "STU.DAT"
DATA RECORD IS STU-REC.
01 STU-REC.
  02 IREGNO PIC 9(4).
02 INAME PIC X(25).
02 IMARK1 PIC 9(3).
02 IMARK2 PIC 9(3).
02 IMARK3 PIC 9(3).
02 ITOTAL PIC 9(4).
SD WORKFILE
  DATA RECORD IS WORK-REC.
01 WORK-REC.
  02 WREGNO PIC 9(4).
02 WNAME PIC X(25).
02 WMARK1 PIC 9(3).
02 WMARK2 PIC 9(3).
02 WMARK3 PIC 9(3).
02 WTOTAL PIC 9(4).
FD SORTFILE
  LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID "STU1.DAT"
DATA RECORD IS STU1-REC.
01 STU1-REC.
  02 SREGNO PIC 9(4).
02 SNAME PIC X(25).
02 STOTAL PIC 9(4).
02 SRANK PIC 999.
WORKING-STORAGE SECTION.
01 CON PIC 9.
01 PRETOTAL PIC 9(4) VALUE ZERO.
01 FLAG PIC 9(3) VALUE ZERO.
01 CH PIC X.
01 SP PIC X(49) VALUE ALL "-".
01 SP1 PIC X(80) VALUE SPACES.
PROCEDURE DIVISION.
OPEN-PARA.
  OPEN OUTPUT STU-FILE.
DISPLAY (1 25) "ENTER THE STUDENT DETAILS".
DISPLAY (2 25) "*************************".
MAIN1-PARA.
  DISPLAY (3 1)ERASE.
DISPLAY " ENTER REGNO & NAME ".
ACCEPT IREGNO.
ACCEPT INAME.
MARK-PARA.
  DISPLAY "ENTER THREE MARKS ".
ACCEPT IMARK1.
IF IMARK1 > 100 GO TO ER-PARA.
ACCEPT IMARK2.
IF IMARK1 > 100 GO TO ER-PARA.
ACCEPT IMARK3.
IF IMARK1 > 100 GO TO ER-PARA.
WRITE STU-REC.
DISPLAY "DO YOU HAVE MORE RECORDS FOR ENTERING 1 for con".
ACCEPT CON.
IF CON = 1 GO TO MAIN1-PARA.
CLOSE STU-FILE.
MAIN-PARA.
  SORT WORKFILE ON DESCENDING KEY WTOTAL
INPUT PROCEDURE IS IN-SEC
OUTPUT PROCEDURE IS OUT-SEC.
OPEN3-PARA.
  OPEN INPUT SORTFILE.
DISPLAY (1 1 )ERASE.
DISPLAY (2 17) "RANK LIST OF STUENTS".
DISPLAY (3 17) "********************".
DISPLAY (4 1) "REGNO".
DISPLAY (4 9) "NAME".
DISPLAY (4 37) "TOTAL".
DISPLAY (4 46) "RANK".
DISPLAY (5 1) SP.
DISPLAY (6 1) SP1.
READ3-PARA.
  READ SORTFILE RECORD AT END GO TO CLOSE3-PARA.
DISPLAY SREGNO " " SNAME " " STOTAL " " SRANK .
GO TO READ3-PARA.
CLOSE3-PARA.
  CLOSE SORTFILE.
DISPLAY " ".
STOP RUN.
ER-PARA.
  DISPLAY "THE MARK SHOUD BE LESS THAN 100 ".
DISPLAY "Press any key to continue".
ACCEPT CH.
GO TO MARK-PARA.
IN-SEC SECTION.
OPEN1-PARA.
  OPEN INPUT STU-FILE.
READ1-PARA.
  READ STU-FILE RECORD AT END GO TO CLOSE1-PARA.
MOVE IREGNO TO WREGNO.
MOVE INAME TO WNAME.
MOVE IMARK1 TO WMARK1.
MOVE IMARK2 TO WMARK2.
MOVE IMARK3 TO WMARK3.
COMPUTE WTOTAL = IMARK1 + IMARK2 + IMARK3 .
RELEASE WORK-REC.
GO TO READ1-PARA.
CLOSE1-PARA.
  CLOSE STU-FILE.
EXIT1-PARA.
  EXIT.
OUT-SEC SECTION.
OPEN2-PARA.
  OPEN OUTPUT SORTFILE.
WRITE1-PARA.
  RETURN WORKFILE RECORD AT END GO TO CLOSE2-PARA.
IF PRETOTAL NOT = WTOTAL
COMPUTE FLAG = FLAG + 1
MOVE WTOTAL TO PRETOTAL.
MOVE WREGNO TO SREGNO.
MOVE WNAME TO SNAME.
MOVE WTOTAL TO STOTAL.
MOVE FLAG TO SRANK.
WRITE STU1-REC.
GO TO WRITE1-PARA.
CLOSE2-PARA.
  CLOSE SORTFILE.
EXIT2-PARA.
  EXIT.
 
Previous Program
Next Program