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。