Cobol:找不到文本文件的入口点

时间:2017-03-29 14:09:27

标签: file-handling cobol

您好我正在从辅导点学习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

1 个答案:

答案 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
       .

虽然编译器不关心空格和返回,但如果我是你,我会尝试更好地缩进我的代码(我喜欢如何缩进上面的内容:-))。这取决于你和许多人喜欢以不同的方式做到这一点,但如果你保持一致,你可以发现可能潜入你的代码的问题。

编辑:我没注意到您正在使用文本文件中的密钥进行阅读。所以,要么你需要:

  1. 从预先建立的索引文件中读取,或
  2. 按顺序阅读文件,并通过比较您为所需学生ID阅读的内容来搜索您想要的内容。