Cobol中的索引文件处理错误?

时间:2014-02-23 15:16:08

标签: file cobol indexed

我有以下代码用于处理索引文件,但是当我运行程序时,我收到运行时错误,“索引文件系统不可用”。我不知道如何编写索引文件和数据文件的代码。我正在进行初始化吗?怎么了?

              IDENTIFICATION DIVISION.
   PROGRAM-ID. INDEXFILE.

   ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.

       SELECT VENDOR-FILE ASSIGN TO DISK
       ORGANIZATION IS INDEXED
       ACCESS MODE IS RANDOM
       RECORD KEY IS VENDOR-NUMBER.


   DATA DIVISION.
   FILE SECTION.

   FD VENDOR-FILE
      LABEL RECORDS ARE STANDARD
      VALUE OF FILE-ID IS "input.txt"
      DATA RECORD IS VENDOR-RECORD.          

   01 VENDOR-RECORD.
       05 VENDOR-NUMBER   PIC 9(5).
       05 VENDOR-NAME     PIC X(30).

   WORKING-STORAGE SECTION.

   01 VNAME PIC X.

    PROCEDURE DIVISION.
    PARA1.
        OPEN INPUT VENDOR-FILE.
        DISPLAY 'ENTER VENDOR NO: '.
        ACCEPT VENDOR-NUMBER.
        DISPLAY VENDOR-NUMBER.
        READ VENDOR-FILE 
             INVALID KEY DISPLAY 'NO SUCH RECORD'.

        CLOSE  VENDOR-FILE.
        STOP RUN.        

2 个答案:

答案 0 :(得分:1)

DOSBOX模拟MS-DOS操作系统,因为它将在较旧的IBM PC兼容计算机上运行。 DOSBOX主要是开发的 支持在具有升级操作系统的新机器上运行老式电脑游戏。 DOSBOX不是 您正在使用的编译器 - 它是操作系统。就这样我们 仍然不知道"味道"你想在这里使用的COBOL。除此之外,您收到的消息是:索引文件系统 不可用,这暗示您缺少一些正在使用的COBOL版本的运行时支持库。

MS-DOS操作系统(或任何其他PC类型的操作系统)不直接支持索引文件系统。除简单顺序之外的文件访问需要 某种类型的运行时支持,我怀疑您在操作环境中缺少这些组件。在没有找到丢失的组件的情况下进一步发展的前景很低。

答案 1 :(得分:0)

我们真正知道的是,您运行的东西允许旧软件像过去那样运行(DOSBOX)。

我们不知道你有哪个编译器。您应该通过查找编译程序时生成的任何文本输出来尝试查找名称,或者尝试将/? /h /help -? -h -help --help之类的“开关”添加到编译程序时所具有的内容。

您有编译器的任何文档吗?一旦你找到它是哪个编译器,你就可以找到一些你最喜欢的搜索引擎。

要创建第一个索引文件,请编写一个小程序,打开OUTPUT的索引文件。 WRITE您想要的记录,然后CLOSE文件并停止程序。

这通常足以让索引文件继续运行。然后,您应该能够在另一个程序中将该文件用作INPUTI-O

使用FILE STATUS总是一个好主意。如果您不确定如何使用它,但仍然没有手册,请查看SourceForge上的GNU COBOL文档。