在cobol中读取顺序文件

在cobol中读取顺序文件,cobol,mainframe,Cobol,Mainframe,有没有办法在cobol中多次读取顺序文件?例如,您到达了文件的结尾,然后从文件的结尾返回?关闭文件,重新打开并重新读取 我想知道您为什么要这样做?关闭文件,重新打开并重新读取 我想知道您为什么要这样做?您也可以在循环中读取文件或执行更改。与另一个答案一样,确保每次到达末尾时关闭文件并重新打开。您也可以在循环中读取文件或执行更改。与另一个答案一样,请确保每次到达末尾时都将文件关闭并重新打开。在这种情况下,DFSORT的JOINKEYS非常有用。如果您的要求只是从文件1中搜索字符串并在文件2中列出字

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

关闭文件,重新打开并重新读取


我想知道您为什么要这样做?

关闭文件,重新打开并重新读取


我想知道您为什么要这样做?

您也可以在循环中读取文件或执行更改。与另一个答案一样,确保每次到达末尾时关闭文件并重新打开。

您也可以在循环中读取文件或执行更改。与另一个答案一样,请确保每次到达末尾时都将文件关闭并重新打开。

在这种情况下,
DFSORT的
JOINKEYS
非常有用。如果您的要求只是从文件1中搜索字符串并在文件2中列出字符串,我强烈建议您不要使用这种方法。

在这种情况下,
DFSORT的
JOINKEYS
会有很大帮助。如果您的要求只是使用文件2中的字符串列表从文件1中搜索字符串,我强烈建议您不要使用这种方法。

另一种选择是:使用实用程序(或其他COBOL程序)复制文件1。副本文件1a具有相对组织(可能是VSAM RRDS)。在扫描/匹配程序中,可以使用START语句重新定位到文件1a的第一条记录


同样地,您可以创建一个索引顺序文件1a,其中密钥只是一个与记录号相同的任意升序数。

另一种选择:使用实用程序(或另一个COBOL程序)复制文件1。副本文件1a具有相对组织(可能是VSAM RRDS)。在扫描/匹配程序中,可以使用START语句重新定位到文件1a的第一条记录


同样地,您可以创建一个索引顺序文件1a,其中键只是一个与记录号相同的任意升序数。

打开、处理、关闭、重新打开、重新处理、重新关闭任意次数都是愚蠢的,更不用说最多1000次了。这非常非常耗时

使用Cobol程序,您可以将较小的文件存储在表中,并根据较大的文件处理该表,正如所建议的那样

但是,您不需要一个程序。JOINKEYS将为您提供解决方案

你没有钥匙吗?哦,亲爱的,亲爱的。你做一个。对于两个文件上的每条记录,使用相同的值生成相同的单字节键。按那个键上的键。指定JOINKEYS上的排序(如果有DFSORT,则指定NOSEQCK)即表示有“笛卡尔”联接。使用SS(子字符串匹配),它可以用于整个记录或部分记录。您实际需要的输出是不清楚的,我想您现在不会想到这一点


使用DFSORT,您可以一步完成。使用SyncSort,如果您的版本支持JNFnCMTL文件,您可以一步完成此操作。

打开、处理、关闭、重新打开、重新处理、重新关闭任意次数都是愚蠢的,更不用说最多1000次了。这非常非常耗时

使用Cobol程序,您可以将较小的文件存储在表中,并根据较大的文件处理该表,正如所建议的那样

但是,您不需要一个程序。JOINKEYS将为您提供解决方案

你没有钥匙吗?哦,亲爱的,亲爱的。你做一个。对于两个文件上的每条记录,使用相同的值生成相同的单字节键。按那个键上的键。指定JOINKEYS上的排序(如果有DFSORT,则指定NOSEQCK)即表示有“笛卡尔”联接。使用SS(子字符串匹配),它可以用于整个记录或部分记录。您实际需要的输出是不清楚的,我想您现在不会想到这一点

使用DFSORT,您可以一步完成。使用SyncSort,如果您的版本支持JNFnCMTL文件,您可以一步完成此操作。

这是我的解决方案

文件1包含REOCRD和一个密钥 文件2具有多次出现密钥的REOCRD

我将file1细节存储到一个数组中,这意味着您必须知道数据的大小

我扫描文件2直到文件结束,若文件2中的键和数组中的键匹配,那个么进行计算

范例 从File1开始在数组中存储1 2 3 4,直到File1的EOF 扫描具有1 1 4 2 3的文件2 如果文件2中的1与数组中的1匹配,则计算 继续这样做直到你到达文件2的末尾

希望能有所帮助

这是我的解决方案

文件1包含REOCRD和一个密钥 文件2具有多次出现密钥的REOCRD

我将file1细节存储到一个数组中,这意味着您必须知道数据的大小

我扫描文件2直到文件结束,若文件2中的键和数组中的键匹配,那个么进行计算

范例 从File1开始在数组中存储1 2 3 4,直到File1的EOF 扫描具有1 1 4 2 3的文件2 如果文件2中的1与数组中的1匹配,则计算 继续这样做直到你到达文件2的末尾


希望能有所帮助

Hi TrueDub,我正在从文件2中的项目搜索文件1中出现的字符串,但没有键。谢谢你的精彩回复。将文件读入数组并每次搜索会更容易吗?它肯定会更快,但如果是一个大文件,您可能会遇到内存问题。在这种情况下,
DFSORT的
JOINKEYS
会有很大帮助。如果您的要求只是使用文件2中的字符串列表搜索文件1中的字符串,我强烈建议您不要使用这种方法…嗨,TrueDub,我正在从文件2中的项目搜索文件1中字符串的出现情况,但没有键。谢谢你的精彩回复。将文件读入数组并每次搜索会更容易吗?它肯定会更快,但如果是一个大文件,您可能会遇到内存问题。在这种情况下,
DFSORT的
JOINKEYS
会有很大帮助。如果您的要求只是从file1中搜索字符串并在fi中列出字符串,我强烈建议您不要使用这种方法