这是我正在运行的代码(它不是我的代码,它来自我的教授,但我似乎无法使其工作。请帮助。
IDENTIFICATION DIVISION.
PROGRAM-ID. ACPTDSP1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT GRDFILE ASSIGN TO DISK.
DATA DIVISION.
FILE SECTION.
FD GRDFILE
DATA RECORD IS GRDREC
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "C:\COBOL\GRDFILE.TXT".
01 GRDREC.
05 FILLER PIC X(80).
WORKING-STORAGE SECTION.
* INPUT DATA USING *
* ACCEPT & DISPLAY *
01 NAME PIC X(25).
01 MIDGRD PIC 9V99.
01 FINGRD PIC 9V99.
01 AVE PIC 9V99.
01 ANS PIC X.
* OUTPUT FILE *
01 HDG.
05 FILLER PIC X(32) VALUE SPACES.
05 FILLER PIC X(25) VALUE "STUDENT'S GRADE".
05 FILLER PIC X(33) VALUE SPACES.
01 COLHDG.
05 FILLER PIC X(14) VALUE SPACES.
05 FILLER PIC X(12) VALUE "STUDENT NAME".
05 FILLER PIC X(28) VALUE SPACES.
05 FILLER PIC X(12) VALUE "FINAL GRADE ".
01 GRDDATA.
05 FILLER PIC X(14) VALUE SPACES.
05 NAME-OUT PIC X(25).
05 FILLER PIC X(20) VALUE SPACES.
05 AVE-OUT PIC 9.99.
SCREEN SECTION.
01 CLRSCR.
05 BLANK SCREEN.
PROCEDURE DIVISION.
MAIN-RTN.
DISPLAY CLRSCR.
OPEN OUTPUT GRDFILE.
WRITE GRDREC FROM HDG.
WRITE GRDREC FROM COLHDG.
PERFORM PROCESS-RTN THRU PROCESS-END
UNTIL ANS = 'N' OR ANS = 'n'.
CLOSE GRDFILE.
STOP RUN.
PROCESS-RTN.
DISPLAY (5, 15) "Enter Name: ".
ACCEPT (5, 30) NAME.
DISPLAY (7, 15) "Enter Midterm Grade: ".
ACCEPT (7, 40) MIDGRD.
DISPLAY (9, 15) "Enter Final Grade: ".
ACCEPT (9, 40) FINGRD.
COMPUTE AVE = (MIDGRD + FINGRD) / 2.
MOVE NAME TO NAME-OUT.
MOVE AVE TO AVE-OUT.
DISPLAY (11, 15) "Average Grade is: ", AVE-OUT.
WRITE GRDREC FROM GRDDATA .
DISPLAY (15, 15) "ENTER ANOTHER [Y/N]? ".
ACCEPT ANS.
PROCESS-END.
我遇到的问题是,当我打开grdfile时,它会显示交叉和中文字符等随机字符。
如果您有任何想法,请提供帮助。我想学习。 TIA
答案 0 :(得分:1)
似乎对我来说非常好。
您应该注意HDG
的大小是32 + 25 + 33 = 90,COLHDG
的大小是14 + 12 + 28 + 12 = 66而GRDDATA
是14 + 25 + 20 + 4 = 63
可能是您正在使用的编译器在那些短记录上输出随机数据,因为输出记录的长度为80.我将短记录填充到80,填充pic x(14)值空间和pic x(17)为第二个,看看是否能解决问题。
请记住,就文本编辑器而言,输出似乎是一个巨大的字符串......