当我在cobol中打开输出文件时,会出现随机字符

时间:2015-02-03 17:02:33

标签: cobol

这是我正在运行的代码(它不是我的代码,它来自我的教授,但我似乎无法使其工作。请帮助。

   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

1 个答案:

答案 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)为第二个,看看是否能解决问题。

请记住,就文本编辑器而言,输出似乎是一个巨大的字符串......