Back to first page...
HOMEWORK 1
As you shall recall, we developed the first serious COBOL program during the lecture
on the 21st of October,
The program was submitted to line sequential files; namely the STUDENT.DAT and DEPARTMT.DAT files.
Examples for these files are :
A SAMPLE "STUDENT.DAT" FILE
0 1 2 3 4 5 6 7
1234567890123456789012345678901234567890123456789012345678901234567890
1001020196 AYFER UGUR 101 060
1002345296 AYFER REYYAN 101 060
2001200296 KARA YILDIRIM 102 040
1234432795 DENIZER ZERRIN 102 055
4234213196 ULAK KEMAL 103 080
2342342396 ERSOZ KEREM 103 030
A SAMPLE "DEPARTMT.DAT" FILE
0 1 2 3 4 5 6 7
1234567890123456789012345678901234567890123456789012345678901234567890
101 CTP DEPARTMENT
102 CTT DEPARTMENT
103 CAA DEPARTMENT
104 CAD DEPARTMENT
105 TOURISM DEPT.
105 ENGLISH LITERATURE
106 HOTEL MANAGEMENT
The 2 line numbers at the beginning of the above samples are NOT part of these files.
They are there just to indicate column positions of data fields.
Reading each record in the STUDENT.DAT file, the program should produce a report
which would look something like :
ABC University - Student Report
ID NUMBER SURNAME NAME DEPARTMENT CREDIT STATUS
---------- ---------------- ---------------- -------------------- ------ ----------
1001020196 AYFER UGUR CTP DEPARTMENT 060 PASSED
1002345296 AYFER REYYAN CTP DEPARTMENT 060 PASSED
2001200296 KARA YILDIRIM CTT DEPARTMENT 040 FAILED
1234432795 DENIZER ZERRIN CTT DEPARTMENT 055 PASSED
4234213196 ULAK KEMAL CAA DEPARTMENT 080 PASSED
2342342396 ERSOZ KEREM CAA DEPARTMENT 030 FAILED
The criterion in deciding whether a student fails or passes is the total credit
value compared to 50. A credit less than 50 causes the student fail.
Please note that the STUDENT.DAT file records contain the "department code"; and the
full department name is found from a second line sequential file (DEPARTMT.DAT).
The report file (a printer file, if you like) contains the FULL DEPARTMENT NAME and not the code!
Your Homework Assignment Is :
To modify this program so that it reports the total number passed students and failed students.
That is, the output report should look like :
ABC University - Student Report
ID NUMBER SURNAME NAME DEPARTMENT CREDIT STATUS
---------- ---------------- ---------------- -------------------- ------ ----------
1001020196 AYFER UGUR CTP DEPARTMENT 060 PASSED
1002345296 AYFER REYYAN CTP DEPARTMENT 060 PASSED
2001200296 KARA YILDIRIM CTT DEPARTMENT 040 FAILED
1234432795 DENIZER ZERRIN CTT DEPARTMENT 055 PASSED
4234213196 ULAK KEMAL CAA DEPARTMENT 080 PASSED
2342342396 ERSOZ KEREM CAA DEPARTMENT 030 FAILED
# STUDENTS PASSED : 4
# STUDENTS FAILED : 2
To Submit Your Homework Solution :
Please e-mail the source code of your solution (the .CBL file) to :
cayfer@ctp.bilkent.edu.tr
and
sibel@ctp.bilkent.edu.tr
Solutions submitted on paper or floppy WILL NOT BE ACCEPTED!
The source code of the original program that we developed during the lecture is :
0 1 2 3 4 5 6 7
1234567890123456789012345678901234567890123456789012345678901234567890
IDENTIFICATION DIVISION.
PROGRAM-ID. STUDENT-REPORT.
AUTHOR. UGUR AYFER.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. PC.
OBJECT-COMPUTER. PC.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO DISK "STUDENT.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT DEPARTMENT-CODES ASSIGN TO DISK "DEPARTMT.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT REPORT-FILE ASSIGN TO DISK "REPORT.DAT".
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE LABEL RECORDS ARE STANDARD
DATA RECORD IS STU-REC.
01 STU-REC.
02 STU-IDNO PIC 9(10).
02 FILLER PIC XX.
02 STU-SURNAME PIC X(16).
02 FILLER PIC XX.
02 STU-NAME PIC X(16).
02 FILLER PIC XX.
02 STU-DEPT-CODE PIC 999.
02 FILLER PIC XX.
02 STU-CREDIT PIC 999.
FD DEPARTMENT-CODES LABEL RECORDS STANDARD
DATA RECORD IS DEPT-REC.
01 DEPT-REC.
02 DEPT-CODE PIC 999.
02 FILLER PIC XX.
02 DEPT-NAME PIC X(20).
FD REPORT-FILE.
01 PRINT-LINE PIC X(132).
WORKING-STORAGE SECTION.
01 PRT-HEADER1.
02 FILLER PIC X(10) VALUE SPACES.
02 FILLER PIC X(32)
VALUE "ABC University - Student Report".
01 PRT-HEADER2.
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(10) VALUE " ID NUMBER".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(16) VALUE "SURNAME".
02 FILLER PIC X VALUE SPACES.
02 FILLER PIC X(16) VALUE "NAME".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(20) VALUE "DEPARTMENT".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(6) VALUE "CREDIT".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(10) VALUE "STATUS".
01 PRT-UNDERLINE.
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(10) VALUE ALL "-".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(16) VALUE ALL "-".
02 FILLER PIC X VALUE SPACES.
02 FILLER PIC X(16) VALUE ALL "-".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(20) VALUE ALL "-".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(6) VALUE ALL "-".
02 FILLER PIC XX VALUE SPACES.
02 FILLER PIC X(10) VALUE ALL "-".
01 PRT-DATA-LINE.
02 FILLER PIC XX VALUE SPACES.
02 STU-IDNO PIC X(10).
02 FILLER PIC XX VALUE SPACES.
02 STU-SURNAME PIC X(16).
02 FILLER PIC X VALUE SPACES.
02 STU-NAME PIC X(16).
02 FILLER PIC XX VALUE SPACES.
02 STU-DEPT-NAME PIC X(20).
02 FILLER PIC XX VALUE SPACES.
02 STU-CREDIT PIC X(6).
02 FILLER PIC XX VALUE SPACES.
02 STU-STATUS PIC X(10).
77 W-DEPT-NAME PIC X(20).
77 MORE-STUDENT-RECORDS PIC 9 VALUE 1.
77 PASS-LIMIT PIC 9999 VALUE 50.
PROCEDURE DIVISION.
MAIN-PROC.
OPEN INPUT STUDENT-FILE
OUTPUT REPORT-FILE.
WRITE PRINT-LINE FROM PRT-HEADER1.
WRITE PRINT-LINE FROM PRT-HEADER2 AFTER ADVANCING 2 LINES.
WRITE PRINT-LINE FROM PRT-UNDERLINE.
READ STUDENT-FILE AT END
DISPLAY "NO STUDENT RECORDS TO PROCESS!"
GO TO CLOSE-AND-EXIT.
PERFORM PROCESS-STU-REC THRU PROCESS-STU-REC-EXIT
UNTIL MORE-STUDENT-RECORDS = ZERO.
CLOSE-AND-EXIT.
CLOSE STUDENT-FILE REPORT-FILE.
STOP RUN.
PROCESS-STU-REC.
* DETERMINE THE PASS-FAIL STATUS FOR THE STUDENT :
* TOTAL CREDIT > PASS-LIMIT --------> PASSED
* ELSE --------> FAILED
MOVE CORRESPONDING STU-REC TO PRT-DATA-LINE.
* ALTHOUGH VE DO A CORRESPONDING MOVE, 2 ITEMS
* IN THE PRT-DATA-LINE ARE LEFT UNDEFINED. NOW
* COMPLETE THESE...
IF STU-CREDIT IN STU-REC > PASS-LIMIT
MOVE "PASSED" TO STU-STATUS
ELSE
MOVE "FAILED" TO STU-STATUS
END-IF.
PERFORM FIND-DEPT-NAME THRU FIND-DEPT-NAME-EXIT.
MOVE W-DEPT-NAME TO STU-DEPT-NAME IN PRT-DATA-LINE.
WRITE PRINT-LINE FROM PRT-DATA-LINE.
READ STUDENT-FILE AT END
MOVE ZERO TO MORE-STUDENT-RECORDS.
PROCESS-STU-REC-EXIT.
EXIT.
FIND-DEPT-NAME.
OPEN INPUT DEPARTMENT-CODES.
MOVE "Undefined Dept Code" TO W-DEPT-NAME.
READ-NEXT-DEPT-REC.
READ DEPARTMENT-CODES AT END GO TO END-OF-DEPT.
IF DEPT-CODE = STU-DEPT-CODE
MOVE DEPT-NAME TO W-DEPT-NAME
GO TO END-OF-DEPT.
GO TO READ-NEXT-DEPT-REC.
END-OF-DEPT.
CLOSE DEPARTMENT-CODES.
FIND-DEPT-NAME-EXIT.
EXIT.
Back to first page...