1

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

              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.        
4

2 回答 2

2

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

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

于 2014-02-24T14:47:26.977 回答
1

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

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

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

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

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

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

于 2014-02-24T09:23:04.137 回答