【发布时间】:2021-09-28 17:02:19
【问题描述】:
我正在创建一个程序,它读取包含一些学生信息的输入文件,然后将其输出到终端和输出文件。 我还需要根据获得的小时数和质量分数来计算 GPA。
我收到错误:
P2.cob: 46: error: PICTURE clause required for 'outRecord'
P2.cob: in paragraph 'ProcessData':
P2.cob: 81: error: 'CUMULATIVE-QP' is not a numeric value
P2.cob: 84: error: 'CUMULATIVE-QP' is not a numeric value
P2.cob: 87: error: 'CUMULATIVE-QP' is not a numeric value
P2.cob: 90: error: 'CUMULATIVE-QP' is not a numeric value
任何帮助/提示都会有很大帮助。我的输入文件示例和代码附在下面:
MICHAEL RICHARDSON W1234567 FALL2019 CMPS141 INTRO TO JAVA A 3.00 12.00
MICHAEL RICHARDSON W1234567 FALL2019 ENGL101 FRESHMAN COMPOSITION B 3.00 09.00
MICHAEL RICHARDSON W1234567 SPNG2020 CMPS220 OPERATING SYSTEMS A 3.00 12.00
MICHAEL RICHARDSON W1234567 SPNG2020 ENGL102 CRITICAL READING AND WRIT A 3.00 12.00
IDENTIFICATION DIVISION.
PROGRAM-ID. P2.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT myInFile ASSIGN TO "P2In.dat".
SELECT myOutFile ASSIGN TO "P2Out.dat".
DATA DIVISION.
FILE SECTION.
FD myInFile.
01 RecordDetails.
03 StudentDetails.
05 STUDENT-NAME PIC X(16).
05 STUDENT-ID PIC X(9).
03 SemesterDetails.
05 SEMESTER PIC X(9).
03 ClassDetails.
05 CLASS-NAME PIC X(34).
05 GRADE PIC X(2).
05 HOURS.
07 HOURS-9 PIC 9.99.
05 FILLER PIC X(2).
05 POINTS.
07 POINTS-X PIC X(1) OCCURS 5.
05 POINTS-9-99 REDEFINES POINTS.
07 POINTS-9-99 PIC 9.99.
05 POINTS-99-99 REDEFINES POINTS.
07 POINTS-99-99 PIC 99.99.
01 CalculatedValues.
05 CUMULATIVE-GPA-IN PIC 99v99 VALUE ZERO.
05 CUMULATIVE-QP-IN PIC 99v99 VALUE ZERO.
05 CUMULATIVE-HOURS-IN PIC 99v99 VALUE ZERO.
FD myOutFile.
01 outRecord.
WORKING-STORAGE SECTION.
01 SWITCHES.
05 EOF-SWITCH PIC X VALUE "N".
01 COUNTERS.
05 REC-COUNTER PIC 9(3) VALUE 0.
01 CUMULATIVE.
05 CUMULATIVE-QP PIC ZZ.99.
PROCEDURE DIVISION.
Main.
PERFORM Begin.
PERFORM ProcessData.
PERFORM PrintLines
UNTIL EOF-SWITCH = "Y".
Begin.
OPEN INPUT myInFile
OPEN OUTPUT myOutFile
READ myInFile
AT END
MOVE "Y" TO EOF-SWITCH
NOT AT END
COMPUTE REC-COUNTER = REC-COUNTER + 1
END-READ.
ProcessData.
READ myInFile
AT END
MOVE "Y" TO EOF-SWITCH
NOT AT END
IF GRADE = 'A'
COMPUTE CUMULATIVE-QP = CUMULATIVE-QP + 4
ELSE
IF GRADE = 'B'
COMPUTE CUMULATIVE-QP = CUMULATIVE-QP + 3
ELSE
IF GRADE = 'C'
COMPUTE CUMULATIVE-QP = CUMULATIVE-QP + 2
ELSE
IF GRADE = 'D'
COMPUTE CUMULATIVE-QP = CUMULATIVE-QP + 1
END-IF.
PrintLines.
READ myInFile
AT END
MOVE "Y" TO EOF-SWITCH
NOT AT END
DISPLAY CUMULATIVE-QP
END-READ.
【问题讨论】: