Question: I get some error in my cobol program : IDENTIFICATION DIVISION. PROGRAM-ID. STUDENT-REPORT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT STUFILE-IN-FILE ASSIGN TO STUFILE.txt ORGANIZATION IS

I get some error in my cobol program :

IDENTIFICATION DIVISION.

PROGRAM-ID. STUDENT-REPORT.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT STUFILE-IN-FILE ASSIGN TO "STUFILE.txt"

ORGANIZATION IS LINE SEQUENTIAL.

SELECT PROGRAM-IN-FILE ASSIGN TO "PROGRAM.txt"

ORGANIZATION IS LINE SEQUENTIAL.

SELECT REPORT-OUT-FILE ASSIGN TO "STUDENT-REPORT.txt"

ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.

FILE SECTION.

FD STUFILE-IN-FILE.

01 STUDENT-RECORD.

05 STUDENT-NUMBER PIC 9(6).

05 TUITION-OWED PIC 9(6)V99.

05 STUDENT-NAME PIC X(40).

05 PROGRAM-OF-STUDY PIC X(5).

05 COURSES OCCURS 5 TIMES.

10 COURSE-CODE PIC X(7).

10 COURSE-AVERAGE PIC 9(3).

FD PROGRAM-IN-FILE.

01 PROGRAM-RECORD.

05 PROGRAM-CODE PIC X(6).

05 PROGRAM-NAME PIC X(20).

FD REPORT-OUT-FILE.

01 REPORT-RECORD.

05 STUDENT-NAME PIC X(40).

05 PIC X(3) VALUE SPACES.

05 STUDENT-AVERAGE PIC 999.

05 PIC X(4) VALUE SPACES.

05 PROGRAM-NAME PIC X(20).

05 PIC X(4) VALUE SPACES.

05 TUITION-OWED PIC ZZZ,ZZ9.99.

WORKING-STORAGE SECTION.

01 PROGRAM-TABLE.

05 PROGRAM-TABLE-ENTRY OCCURS 20 TIMES.

10 PT-PROGRAM-CODE PIC X(6).

10 PT-PROGRAM-NAME PIC X(20).

01 STUDENT-COUNTER PIC 9(5) VALUE 0.

01 REPORT-COUNTER PIC 9(5) VALUE 0.

01 END-OF-FILE PIC X(1) VALUE "N".

01 WS-COURSE-TOTAL PIC 9(4)V99 VALUE 0.

01 WS-STUDENT-AVERAGE PIC 999.

01 WS-PROGRAM-NAME PIC X(20).

01 WS-TUITION-OWED-STR PIC ZZ,ZZ9.99.

01 WS-TUITION-OWED PIC 9(6)V99.

01 WS-RECORD-COUNT PIC 9(5) VALUE 0.

PROCEDURE DIVISION.

MAIN-PROCEDURE.

OPEN INPUT STUFILE-IN-FILE

INPUT PROGRAM-IN-FILE

OUTPUT REPORT-OUT-FILE.

PERFORM INITIALIZATION.

PERFORM PROCESS-STUDENT-RECORDS

UNTIL END-OF-FILE = "Y".

PERFORM WRITE-REPORT-HEADERS.

PERFORM WRITE-PROGRAM-REPORTS.

CLOSE STUFILE-IN-FILE

PROGRAM-IN-FILE

REPORT-OUT-FILE.

STOP RUN.

INITIALIZATION.

PERFORM LOAD-PROGRAM-TABLE.

MOVE 0 TO STUDENT-COUNT, REPORT-COUNT.

WRITE REPORT-OUT-RECORD FROM COLUMN-HEADERS.

MOVE "N" TO END-OF-FILE.

MOVE SPACES TO WS-STUDENT-RECORD.

LOAD-PROGRAM-TABLE.

PERFORM VARYING I FROM 1 BY 1

UNTIL I > 20

READ PROGRAM-IN-FILE

AT END

MOVE "Y" TO END-OF-FILE

GO TO EXIT-LOAD-PROGRAM-TABLE

END-READ

MOVE PROGRAM-CODE TO PROGRAM-TABLE (I).PROGRAM-CODE

MOVE PROGRAM-NAME TO PROGRAM-TABLE (I).PROGRAM-NAME

END-PERFORM

EXIT-LOAD-PROGRAM-TABLE.

EXIT.

PROCESS-STUDENT-RECORDS.

READ STUFILE-IN-FILE

AT END

MOVE "Y" TO END-OF-FILE

GO TO EXIT-PROCESS-STUDENT-RECORDS

END-READ

ADD 1 TO STUDENT-COUNT.

MOVE STUDENT-NAME TO WS-STUDENT-NAME

MOVE PROGRAM-OF-STUDY TO WS-PROGRAM-CODE

MOVE ZERO TO WS-COURSE-COUNT, WS-STUDENT-AVERAGE

PERFORM CALCULATE-STUDENT-AVERAGE

PERFORM LOOKUP-PROGRAM-NAME

PERFORM EDIT-TUITION-OWED

PERFORM WRITE-STUDENT-REPORT

ADD 1 TO REPORT-COUNT

END-PERFORM.

EXIT-PROCESS-STUDENT-RECORDS.

CALCULATE-STUDENT-AVERAGE.

PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5

COMPUTE WS-STUDENT-AVERAGE = WS-STUDENT-AVERAGE + COURSE-AVERAGE (I)

ADD 1 TO WS-COURSE-COUNT

END-PERFORM

COMPUTE WS-STUDENT-AVERAGE = WS-STUDENT-AVERAGE / WS-COURSE-COUNT

COMPUTE WS-STUDENT-AVERAGE = FUNCTION CEILING (WS-STUDENT-AVERAGE)

MOVE WS-STUDENT-AVERAGE TO STUDENT-AVERAGE

MOVE WS-STUDENT-NAME TO REPORT-OUT-RECORD.

LOOKUP-PROGRAM-NAME.

PERFORM VARYING I FROM 1 BY 1 UNTIL I > 20

IF WS-PROGRAM-CODE = PROGRAM-TABLE (I).PROGRAM-CODE

MOVE PROGRAM-TABLE (I).PROGRAM-NAME TO PROGRAM-NAME

EXIT PERFORM

END-IF

END-PERFORM

MOVE WS-PROGRAM-CODE TO PROGRAM-CODE

MOVE WS-STUDENT-AVERAGE TO STUDENT-AVERAGE

MOVE WS-STUDENT-NAME TO REPORT-OUT-RECORD.

EDIT-TUITION-OWED.

COMPUTE WS-TUITION = TUITION-OWED / 100

MOVE WS-TUITION TO TUITION-OWED-OUT

UNSTRING TUITION-OWED-OUT DELIMITED BY ALL SPACES

INTO TUITION-OWED-OUT (1:LEN-TUITION)

MOVE ZEROS TO I, J

PERFORM VARYING K FROM LEN-TUITION BY -3 UNTIL K < 1

MOVE TUITION-OWED-OUT (K:3) TO WS-TUITION-AMOUNT

IF WS-TUITION-AMOUNT NOT = ZEROS

ADD 1 TO J

MOVE J TO K

PERFORM VARYING L FROM I BY 1 UNTIL L > J

MOVE TUITION-OWED-OUT (L:1) TO WS-CHAR

STRING WS-CHAR DELIMITED BY SIZE

INTO TUITION-OWED-OUT-EDITED (K:1)

ADD 1 TO K

END-PERFORM

STRING "," DELIMITED BY SIZE

INTO TUITION-OWED-OUT-EDITED (K:1)

ADD 1 TO K

SUBTRACT 3 FROM I

END-PERFORM

STRING "$" DELIMITED BY SIZE

INTO TUITION-OWED-OUT-EDITED (1:1).

COMPUTE STUDENT-AVERAGE = (COURSE-AVERAGE-1 + COURSE-AVERAGE-2 +

COURSE-AVERAGE-3 + COURSE-AVERAGE-4 +

COURSE-AVERAGE-5) / 5

ROUNDING MODE IS HALF_UP

MOVE STUDENT-AVERAGE TO STUDENT-AVERAGE-OUT.

PERFORM SEARCH-PROGRAM-TABLE.

ADD 1 TO REPORT-COUNT.

EXIT.

SEARCH-PROGRAM-TABLE.

SET FOUND-FLAG TO FALSE

SET I TO 1

PERFORM UNTIL FOUND-FLAG = TRUE OR I > MAX-PROGRAM-TABLE-ENTRIES

IF PROGRAM-CODE = PROGRAM-TABLE (I).PROGRAM-CODE

MOVE PROGRAM-TABLE (I).PROGRAM-NAME TO PROGRAM-NAME-OUT

SET FOUND-FLAG TO TRUE

END-IF

ADD 1 TO I

END-PERFORM.

WRITE-REPORT-HEADERS.

MOVE "NAME" TO NAME-HEADER

MOVE "AVERAGE" TO AVERAGE-HEADER

MOVE "PROGRAM" TO PROGRAM-HEADER

MOVE "TUITION OWED" TO TUITION-OWED-HEADER

WRITE REPORT-RECORD FROM REPORT-HEADER.

WRITE-PROGRAM-REPORTS.

SET REPORT-COUNT TO ZEROS

READ STUFILE-IN-FILE

AT END SET END-OF-FILE TO "Y"

NOT AT END PERFORM PROCESS-STUDENT-RECORD

END-READ.

MOVE "Total number of Student Records read:" TO REPORT-LINE-1

MOVE NUM-OF-STUDENT-RECORDS-READ TO REPORT-LINE-1 (38:6)

WRITE REPORT-RECORD FROM REPORT-LINE-1

MOVE "Total number of Student Report Records written:" TO REPORT-LINE-2

MOVE NUM-OF-STUDENT-REPORTS-WRITTEN TO REPORT-LINE-2 (46:6)

WRITE REPORT-RECORD FROM REPORT-LINE-2.

EXIT.

=============================

Here is request for this program:

A program is required to read student records and course records from external files, produce a student report for each student using the data on each student record, and produce the audit trail for the process (records read and records written). The specifics for the input student records (from the Student File STUFILE.txt), the processes required for each record, and the output format for each student report card are described below. The Program of Studies records (from the Program of Studies file -- PROGRAM.txt) contains the program code and the Program Name (e.g. Computer Programmer, Computer Technician etc.) For each record read in from the Student File, a Student Report Record is be printed as described below. Once all records have been processed, counters should be printed to indicate the number of Student Records read and the number of Student Report records written. Both files (STUFILE.txt and PROGRAM.txt) will be provided.

Input Record Structures The structure for each student record is below. The file to be used to test your code will be provided with the file name STUFILE.txt for the student records, and PROGRAM.txt for the different Programs of Study. There are five courses for each student record. Each course record (1 through 5) contains the Course Code followed by the average for that course. Program of Studies file (PROGRAM.txt) Record structure ( Note there will be a maximum of 20 occurrences of records) PROGRAM CODE 6 bytes alphanumeric PROGRAM NAME 20 bytes alphanumeric (Note This file is to be loaded into a table for use in the program)

Student Record (STUFILE.txt) STUDENT NUMBER 6 bytes numeric TUITION OWED 6 bytes numeric (including 2 assumed decimals) STUDENT NAME 40 bytes alphanumeric.. PROGRAM OF STUDY 5 bytes alphanumeric COURSE CODE 1 7 bytes alphanumeric COURSE AVERAGE 1 3 bytes numeric COURSE CODE 2 7 bytes alphanumeric COURSE AVERAGE 2 3 bytes numeric COURSE CODE 3 7 bytes alphanumeric COURSE AVERAGE 3 3 bytes numeric COURSE CODE 4 7 bytes alphanumeric COURSE AVERAGE 4 3 bytes numeric COURSE CODE 5 7 bytes alphanumeric COURSE AVERAGE 5 3 bytes numeric

Output Record Structure (Student Report Record) The output record will be a structured on a single line as described below. You must use the ORGANIZATION clause as LINE SEQUENTIAL in the SELECT ASSIGN statement. STUDENT NAME filler (3 spaces) STUDENT AVERAGE (This field must be rounded to a whole integer) filler (4 spaces) PROGRAM NAME ( retrieved from the table) filler 4 spaces TUITION OWED (this field must be edited with inserted decimal point, commas as suppression of leading zeros) Output Record Structure (Column Header) You must have a Column Header Record at the top of the report with the words NAME, AVERAGE, PROGRAM, TIUTION OWED in line with the beginning of each field.

Processing Notes The Student Average to be computed is the average mark from all 5 courses. Assume that all course averages contain valid values including zero. The Tuition Owed value on output must be edited as noted above. The Student Average is to be rounded to be an integer The records from the Program of Studies file are to be loaded into a table for use in the Student Report Records. Assume a maximum of 20 occurrences required for the table.

Hints Open all three files during Initialization Load the Table during Initialization Use the PERFORM VARYING code to load the table during initialization and to search the table in the main line process. Increment the counters for student records read and student report records written within the module for the READ and the WRITE as appropriate. =================

PROGRAM.txt

COMPRXCOMPUTER PRGRAMMER COMTCXCOMPUTER TECHNICIAN COMSCXCOMPUTER SIENCE BUSSXTBUSINESS MARKXTMARKETING ACCTGXACCOUNTING CSTABXXXXXXXXXXXXXXXXXXXXX CSTDEXXXXXXXXXXXXXXXXXXX cSTFGXXXXXXXXXXXXXXXXXXXX CSTHIXXXXXXXXXXXXXXXXXXXX CSTJKXXXXXXXXXXXXXXXXXXXX CSTLMXXXXXXXXXXXXXXXXXXXX CSTNOXXXXXXXXXXXXXXXXXXXX CSTPRXXXXXXXXXXXXXXXXXXXX CSTQSXXXXXXXXXXXXXXXXXXXX CSTTUXXXXXXXXXXXXXXXXXXXX CSTVWXXXXXXXXXXXXXXXXXXXX CSTXYXXXXXXXXXXXXXXXXXXXX

======================

STUFILE.txt

111111100000JONES, WILLIAM COMPRCST8283090CST2234090CST2235090DAT1800090ENG1001090 111111200000SMITH, FRED COMTCCST8283090CST2234080CST2235080DAT1800080ENG1001080 111113092000CROMWELL, OLIVER COMSCCST8283070CST2234070CST2235070DAT1800070ENG1001070 111115150000HEHEINLEN, HERBERT COMPRCST8283090CST2234090CST2235090DAT1800090ENG1001090 111119005000ASSIMOV, ISAAC COMPRCST8283045CST2234046CST22350470DAT180048ENG1001049

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!