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

File Cobol中的索引文件处理错误?,file,cobol,indexed,File,Cobol,Indexed,我有以下处理索引文件的代码,但运行程序时出现运行时错误,“索引文件系统不可用”。不过,我不确定如何对索引文件和数据文件进行编码。我的初始化是否正确?我做错了什么 IDENTIFICATION DIVISION. PROGRAM-ID. INDEXFILE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT VENDOR-FILE ASSIGN TO

我有以下处理索引文件的代码,但运行程序时出现运行时错误,“索引文件系统不可用”。不过,我不确定如何对索引文件和数据文件进行编码。我的初始化是否正确?我做错了什么

              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.        

我们真正知道的是,您正在运行一些允许旧软件像过去某个时候一样运行的东西(DOSBOX)

我们不知道你有哪个编译器。您应该通过查找编译程序时生成的任何文本输出来尝试查找名称,或者尝试像
//h/帮助--h-help——编译程序时,将help
添加到现有的帮助中

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

要创建第一个索引文件,请编写一个小程序,为
输出打开一个索引文件<编码>写入所需的记录,然后关闭文件并停止程序

这通常足以使索引文件正常运行。然后,您应该能够在另一个程序中将该文件用作
输入
I-O


使用文件状态总是一个好主意。如果您不知道如何使用它,并且仍然没有手册,请查看SourceForge上的GNU COBOL文档。

DOSBOX模拟MS-DOS操作系统,就像它在旧的IBM PC兼容计算机上运行一样。DOSBOX最初是开发的 支持在具有升级操作系统的较新机器上运行老式电脑游戏。DOSBOX不是最合适的 您正在使用的编译器-它是操作系统。因此,我们 仍然不知道您在这里尝试使用的COBOL的“味道”。除此之外,您得到的信息是:索引文件系统 不可用,这意味着您正在使用的COBOL版本缺少一些运行时支持库

MS-DOS操作系统(或任何其他PC类型的操作系统)不直接支持索引文件系统。文件访问,而不是简单的顺序访问,需要
某种类型的运行时支持,我怀疑您的操作环境中缺少这些组件。在不查找缺失部件的情况下,更进一步的可能性很低

请告诉我们您使用的编译器,并提供您收到的错误消息的完整文本。错误消息应该包括它所应用的行号。我正在使用DSBOX作为编译。我已经编辑了代码,错误显示运行时错误,索引文件系统不可用。什么是DSBOX?你有更多的细节吗?您应该对所有文件使用文件状态(假设您可以使用该文件),并在每种文件访问类型之后测试其状态是否良好。例如,当您为打开的文件获取非零时,实际的文件状态代码可能会为您提供更多信息。您确定要分配的文件是索引文件吗?您的.txt文件是索引文件吗?如果是这样的话,我会给它一个不同的文件类型以避免混淆。我使用“DOSBOX”(抱歉我错贴了)作为我的编译器。我没有任何细节,对不起。我如何知道我的文件是索引文件?索引文件的内容应该是什么?为什么不使用最新的COBOL编译器?GNUCobol是开源和免费的。搜索SourceForge。