编写COBOL程序以反转记录并从一个文件移动到另一个文件的逻辑是什么?

编写COBOL程序以反转记录并从一个文件移动到另一个文件的逻辑是什么?,cobol,mainframe,Cobol,Mainframe,例如: File1 AAA BBB CCC DDD 文件2 DDD CCC BBB AAA 编写COBOL程序以反转记录并从一个文件移动到另一个文件的逻辑是什么 解决仅COBOL的解决方案时,在COBOL 85和COBOL 2002之间更改了用于反转文件中记录顺序的方法。具体来说,反向的短语在COBOL85中被废弃,并在COBOL2002中被删除 COBOL 85 以下要求输入是具有组织顺序的固定长度记录 代码: 输入: AAAABBBBCCCCDDDD 输出: DDDDCCCCBBBB

例如:

File1

AAA
BBB
CCC
DDD
文件2

DDD
CCC
BBB
AAA
编写COBOL程序以反转记录并从一个文件移动到另一个文件的逻辑是什么

解决仅COBOL的解决方案时,在COBOL 85和COBOL 2002之间更改了用于反转文件中记录顺序的方法。具体来说,
反向的
短语在COBOL85中被废弃,并在COBOL2002中被删除


COBOL 85

以下要求输入是具有
组织顺序的固定长度记录

代码:

输入:

AAAABBBBCCCCDDDD
输出:

DDDDCCCCBBBBAAAA
[请注意,由于这些记录是固定长度的四字符记录,因此没有分隔符,因此记录不会显示在单独的行中。]

对于
相对
索引
文件,必须首先将记录复制到固定长度的顺序文件,然后使用上述逻辑创建“反向”顺序文件。对于可变长度记录,在使用上述方法之前,还需要将记录长度保存为固定长度记录的一部分。然后,与其写固定长度的记录,不如写可变长度的记录


COBOL 2002(未经测试)

代码:

输入文件可以是
顺序的
相对的
,或
索引的
。如果索引了
,则将使用主键<代码>访问
必须是顺序的或动态的。记录可以是固定长度,也可以是可变长度

COBOL2002标准

开始声明14.8.37.3一般规则

顺序文件

21)如果指定了LAST,则文件位置指示器将设置为物理文件中最后一条现有逻辑记录的记录编号。如果文件中不存在任何记录,或者物理文件不支持定位最后一条记录,则file-name-1引用的文件连接器中的I-O状态值设置为“23”,存在无效密钥条件,并且START语句的执行不成功


上述代码将把无效键条件视为文件结束。

您应该读取文件1,将信息存储到本地表中。读取所有记录后,就开始在文件2中以相反的顺序写入本地表。

您好,欢迎使用SO。目前,这不是一个好问题,因为它不是关于一个特定的编程问题。请包括您已经编写的代码,并描述它应该做什么和实际做什么。有多少条记录?显示4,如果是这种情况,则可以将它们读入表中,并从表中以相反顺序写入。如果您的实际记录数是数千或数百万,那么就不用麻烦了。使用您的排序产品。我想它可能适用于所有文件类型,但
行顺序
(在大型机上可能没有问题)。
SORT
不是更好吗(或者这在任何文件类型的大型机上都不受支持)?@SimonSobisch-
LINE SEQUENTIAL
有效地具有可变长度的记录。对于COBOL85,它可以像其他具有可变长度记录的文件一样处理;也就是说,复制到一个临时的固定长度文件,将其反向写入另一个行顺序文件。对于大型机上的
排序
,如果文件不是固定长度的顺序记录,排序可能会更快;但是它进行多次读取、写入和比较,而
REVERSE
是一次读取,一次写入。[我已经40年没有在大型机上做任何事情了。]好吧,我有类似的代码,我再次尝试了你的代码,它给我的输出与我得到的相同。文件1 AAAA BBBB CCCC DDDD文件2 AAAA BBBB CCCC ddddd它不是在反转文件中的记录,而是在复制。@SrikanthSri-编辑问题中的代码,以便我们看到可能的错误,或提供其他可能的解决方案。
DDDDCCCCBBBBAAAA
   environment division.
   input-output section.
   file-control.
       select file1 assign "file1.dat"
           organization sequential
       .
       select file2 assign "file2.dat"
           organization sequential
       .
   data division.
   file section.
   fd file1.
   01 file1-rec pic x(4).
   fd file2.
   01 file2-rec pic x(4).
   working-storage section.
   01 eof-flag pic 9 value 0.
     88 eof-file1 value 1.
   procedure division.
   begin.
       open input file1
           output file2
       start file1 last
       invalid key
           set eof-file1 to true
       not invalid key
           perform read-file1
       end-start
       perform until eof-file1
           write file2-rec from file1-rec
           perform read-file1
       end-perform
       close file1 file2
       stop run
       .

   read-file1.
       read file1 previous
       at end
           set eof-file1 to true
       end-read
       .