Cobol 索引文件错误
我试图打开一个文件作为索引,但不断得到以下错误。从我能找到的所有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
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