Cobol中的索引文件处理错误



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

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模拟MS-DOS操作系统,就像它在旧的IBM PC Compatible计算机上运行一样。DOSBOX主要是开发的支持在操作系统升级的新机器上运行老式电脑游戏。DOSBOX不是您正在使用的编译器-它是操作系统。因此,我们仍然不知道您在这里尝试使用的COBOL的"味道"是什么。除此之外,您得到的信息是:索引文件系统不可用,这暗示您缺少一些用于您正在使用的COBOL版本的运行时支持库。

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

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

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

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

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

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

使用FILE STATUS始终是个好主意。如果您不确定如何使用它,并且仍然没有手册,请查看SourceForge上的GNUCOBOL文档。

相关内容

  • 没有找到相关文章

最新更新