您好我正在从辅导点学习cobol,并且每个程序都可以在OpenCobolIDE中测试它们(有些需要一些编辑)。然后我遇到了文件处理章节,在那里程序有很多错误。我确实设法重写了程序,直到它没有向我显示任何错误,但它没有做任何事情。
这是我的代码:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT ASSIGN TO
'C:\Cobol\FIle Handling\input.txt'
ORGANIZATION IS INDEXED
ACCESS IS RANDOM
RECORD KEY IS STUDENT-ID
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD STUDENT.
01 STUDENT-FILE.
05 STUDENT-ID PIC 9(5).
05 NAME PIC A(25).
WORKING-STORAGE SECTION.
01 WS-STUDENT-FILE.
05 WS-STUDENT-ID PIC 9(5).
05 WS-NAME PIC A(25).
01 FS PIC 9(02).
PROCEDURE DIVISION.
OPEN I-O STUDENT.
MOVE 20005 TO STUDENT-ID.
READ STUDENT RECORD INTO WS-STUDENT-FILE
KEY IS STUDENT-ID
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY WS-STUDENT-FILE
END-READ.
CLOSE STUDENT.
STOP RUN.
这是文本文件:
20003 Mohtashim M.
20004 Nishant Malik
20005 Amitabh Bachhan
结果应该是文字:
20005 Amitabh Bachhan
答案 0 :(得分:2)
它正在做某事:它正在读取文件。但这就是全部;除了将记录读入内存之外,您没有要求它显示或执行任何其他操作。您可能希望查看使用DISPLAY语句或创建另一个文件来将输出写入。
我可以提出几点建议吗?
在现代COBOL中,从风格上来说,你并没有在程序部门中放置一段时间 - 你只把它放在必要的地方。例如:
PROCEDURE DIVISION.
OPEN I-O STUDENT
MOVE 20005 TO STUDENT-ID
READ STUDENT RECORD INTO WS-STUDENT-FILE
KEY IS STUDENT-ID
INVALID KEY DISPLAY 'Invalid Key'
NOT INVALID KEY DISPLAY WS-STUDENT-FILE
END-READ
CLOSE STUDENT
STOP RUN
.
虽然编译器不关心空格和返回,但如果我是你,我会尝试更好地缩进我的代码(我喜欢如何缩进上面的内容:-))。这取决于你和许多人喜欢以不同的方式做到这一点,但如果你保持一致,你可以发现可能潜入你的代码的问题。
编辑:我没注意到您正在使用文本文件中的密钥进行阅读。所以,要么你需要: