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...