Cobol 索引文件错误

Cobol 索引文件错误,cobol,file-access,indexed,gnucobol,Cobol,File Access,Indexed,Gnucobol,我试图打开一个文件作为索引,但不断得到以下错误。从我能找到的所有COBOL代码示例中,我看不出我的错误在哪里 我可以按顺序打开该文件。这似乎与试图将其作为索引打开有关 错误: project2.cbl:119: libcob: Permanent file error (STATUS = 30) File : 'customers.dat' 系统: OS X GnuCOBOL OpenCobolIDE Version: 4.7.3 代码: 文件内容: 01001 Steve Ho

我试图打开一个文件作为索引,但不断得到以下错误。从我能找到的所有COBOL代码示例中,我看不出我的错误在哪里

我可以按顺序打开该文件。这似乎与试图将其作为索引打开有关

错误:

project2.cbl:119: libcob: Permanent file error (STATUS = 30) File : 'customers.dat'
系统:

OS X

GnuCOBOL

OpenCobolIDE
Version: 4.7.3
代码:

文件内容:

01001     Steve Howe             123 Topographic Rd     London       England     000.00
01002     Geddy Lee              4385 Xanadu Ln         Toronto      Canada      058.15
01003     Steve Hackett          16 Serpentine Dr       London       England     134.10
01005     Nancy Wilson           5763 Butterfly St      Seattle      Washington  018.95
01008     Andy Latimer           858 Sasquatch St       Leeds        England     857.44
01015     Dweezil Zappa          86 Yerbouti Blvd       Los Angeles  California  000.00
01019     Roine Stolt            2332 Retropolis        Stockholm    Sweden      069.95
01023     Tal Wilkenfeld         52525 Beck Way         Sydney       Australia   200.00
01044     Todd Rundgren          662 Utopia St          Los Angeles  California  157.21
01088     Mike Rutherford        91 N Broadway          New York     New York    000.00

顺序文件不能作为索引文件打开。它是一种完全不同的文件类型


您可能希望
打开输出CUST-FILE
,从顺序文件中读取客户,并
从顺序记录中写入CUST-FILE
。之后,您的
打开输入CUST-FILE
将起作用(取决于您想要实现的目标),最好将数据读入一个临时的有序表中,然后使用
搜索所有
以获取特定记录。

顺序文件不能作为索引文件打开。它是一种完全不同的文件类型


您可能需要
打开输出CUST-FILE
,从顺序文件中读取您的客户,并
从顺序记录中写入CUST-FILE
。之后,
打开输入CUST-FILE
将起作用(根据您想要实现的目标,最好将数据读入一个临时的有序表中,然后使用
SEARCH ALL
来获得一个特定的记录。

请原谅我对这一点的无知,但是什么将文件定义为顺序文件而不是索引文件?文件本身是一个使用标准编辑器创建的文本文件。我将发布有问题的内容。对于文本文件,在Cobol中定义文件时,可以使用行顺序选项。索引文件由数据文件+一个(或可能多个)组成索引文件。索引文件由一个键+指向数据文件中记录的指针组成。请参阅B-Tree:@BruceMartin感谢您的解释。我现在正在转换该文件。我感谢您的建设性评论。请原谅我对这一问题的无知,但是什么将文件定义为顺序文件而不是索引文件?文件本身就是essential使用标准编辑器创建的文本文件。我将发布相关内容。对于文本文件,在Cobol中定义文件时,您将使用“行顺序”选项。索引文件由数据文件+一个(或多个)组成索引文件。索引文件由一个键+指向数据文件中记录的指针组成。请参阅B-Tree:@BruceMartin感谢您的解释。我现在正在转换该文件。我感谢您的建设性评论。Simon Sobisch是正确的。没有魔法可以让您从编辑器(或任何其他来源)呈现文本文件创建一个COBOL程序并将其用作索引文件,只需在SELECT上说indexed即可。假设您对GnuCOBOL的安装有索引支持,在一个COBOL程序中创建一个索引文件并在另一个COBOL程序中使用它是一个简单的练习。打开两个文件(一个输入,一个输出)阅读文本,写入索引,继续到结尾,关闭两个文件。现在你有了一个索引文件。@BillWoodger感谢你解释了它的神奇之处,以及转换文件是多么的简单和琐碎。这是非常有建设性的。是的,我忘了“文本文件必须已经在键序列中”的真正重要的一点:-)Simon Sobisch是正确的。没有魔法可以让你从编辑器(或任何其他来源)呈现文本文件创建一个COBOL程序并将其用作索引文件,只需在SELECT上说indexed即可。假设您对GnuCOBOL的安装有索引支持,在一个COBOL程序中创建一个索引文件并在另一个COBOL程序中使用它是一个简单的练习。打开两个文件(一个输入,一个输出)阅读文本,写入索引,继续到结尾,关闭两个文件。现在你有了一个索引文件。@BillWoodger感谢你解释了它的神奇之处,以及转换文件是多么的简单和琐碎。这是非常有建设性的。是的,我忘了“文本文件必须已经在键序列中”的真正重要的一点:-)
01001     Steve Howe             123 Topographic Rd     London       England     000.00
01002     Geddy Lee              4385 Xanadu Ln         Toronto      Canada      058.15
01003     Steve Hackett          16 Serpentine Dr       London       England     134.10
01005     Nancy Wilson           5763 Butterfly St      Seattle      Washington  018.95
01008     Andy Latimer           858 Sasquatch St       Leeds        England     857.44
01015     Dweezil Zappa          86 Yerbouti Blvd       Los Angeles  California  000.00
01019     Roine Stolt            2332 Retropolis        Stockholm    Sweden      069.95
01023     Tal Wilkenfeld         52525 Beck Way         Sydney       Australia   200.00
01044     Todd Rundgren          662 Utopia St          Los Angeles  California  157.21
01088     Mike Rutherford        91 N Broadway          New York     New York    000.00