在cobol中读取顺序文件

时间:2011-12-05 12:46:12

标签: cobol mainframe

有没有办法多次在cobol中读取顺序文件?例如,您到达文件的末尾然后从文件的开始返回?

6 个答案:

答案 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

结束

希望有所帮助