有没有办法多次在cobol中读取顺序文件?例如,您到达文件的末尾然后从文件的开始返回?
答案 0 :(得分:2)
关闭文件,重新打开并重新阅读。
我很想知道你为什么要这样做?
答案 1 :(得分:2)
您还可以在循环内读取文件或执行更改。与其他答案一样,请确保每次到达结束时都关闭文件并重新打开。
答案 2 :(得分:0)
在这种情况下,JOINKEYS
的{{1}}有很多帮助。如果你的要求只是用file2中的字符串列表搜索file1中的字符串,我强烈建议不要使用你的方法。
答案 3 :(得分:0)
替代方法:使用实用程序(或其他COBOL程序)制作文件1的副本。副本文件1a具有ORGANIZATION RELATIVE(也许是VSAM RRDS)。在扫描/匹配程序中,您可以使用START语句重新定位到文件1a的第一条记录。
等效地,您可以创建索引顺序文件1a,其中密钥只是一个与记录编号相同的任意递增编号。
答案 4 :(得分:0)
打开,处理,关闭,重新打开,重新处理,重新关闭,任何次数都是愚蠢的,更不用说高达1,000了。这非常非常耗时。
使用Cobol程序,您可以将较小的文件存储在表中,并根据建议对较大的文件处理表。
但是,您不需要程序。 JOINKEYS 将为您提供解决方案。
你没有钥匙?哦,亲爱的,亲爱的。你做一个。对两个文件中的每条记录,使用相同的值创建相同的单字节密钥。在那把钥匙上做JOINKEYS。在JOINKEYS上指定SORTED(如果你有DFSORT,则指定NOSEQCK)你有一个“笛卡尔”加入。使用SS(子字符串匹配),它可以用于整个记录或记录的一部分。你的实际所需输出不清楚,我不认为你现在就想出来了。
使用DFSORT,您可以一步完成。使用SyncSort,如果您的版本支持JNFnCMTL文件,则可以一步完成。
答案 5 :(得分:0)
这是我的解决方案
File1有reocrds加上一把钥匙 File2具有reocrds,其中key出现多次
我将file1详细信息存储到数组中,这意味着你必须知道数据的大小
我扫描file2直到文件结尾,如果file2中的键与数组中的键匹配则执行计算,
实施例 将1 2 3 4存储在File1的数组中,直到File1的EOF 扫描文件2具有1 1 4 4 2 3 如果file2中的1与数组中的1匹配则计算 继续做,直到你到达File2
结束希望有所帮助