File COBOL在不使用OPEN I-O和REWRITE的情况下替换文件中的第一行

File COBOL在不使用OPEN I-O和REWRITE的情况下替换文件中的第一行,file,cobol,microfocus,File,Cobol,Microfocus,假设我有一个以下格式的文件 <records count="n"> record line 1 record line 2 . . . record line n </records> 记录行1 记录行2 . . . 记录行n 我必须打开这个文件,并根据一些逻辑将n的值更改为另一个值。更改后,我的文件应该是这样的 <records count="m"> record line 1 record line 2 . . . record line n <

假设我有一个以下格式的文件

<records count="n">
record line 1
record line 2
.
.
.
record line n
</records>

记录行1
记录行2
.
.
.
记录行n
我必须打开这个文件,并根据一些逻辑将n的值更改为另一个值。更改后,我的文件应该是这样的

<records count="m">
record line 1
record line 2
.
.
.
record line n
</records>

记录行1
记录行2
.
.
.
记录行n
我可以在打开I-O模式下打开文件,并使用“重写”选项更改第一行以替换第一行。但我不想使用这些方法。是否有一种方法可以使用开放输入和开放输出模式实现相同的逻辑,并用写方法替换行

有没有一种方法可以使用OPEN INPUT和OPEN来实现相同的逻辑 输出模式,并用写入方法替换该行[?]

不,这将使您在文件中只保留
。所有其他记录都将丢失

只要第一条记录的长度相同,在将
n
更改为
m
后,
重写
是更新该记录最直接的方法

也许,如果您解释为什么要使用
编写
,还可以做一些其他的事情


如果文件不太大,请将所有记录读入内存,更改第一条记录,然后将所有记录写入该文件

如果文件太大,请复制该文件,更改第一条记录,删除第一个文件,然后重命名副本

对于“太大”的文件,通过添加序列号并更改第一条记录对文件进行排序可能效率较低。这只是使用排序文件暂时保存数据。对于要转换的程序来说,这可能是一个糟糕的选择

您需要定义“太”的限制是什么


Micro Focus中有用于文件访问的非标准例程,但这些例程可能更难转换。

我正在将这个COBOL程序转换为Java。但是用于文件处理的JavaAPI被限制为使用开放的输出和输入,并且没有用于开放i-o的方法。此外,API没有重写的方法。这就是为什么将COBOL转换为Java可能不是最好的想法的原因。。。。无论如何:在这种情况下,你应该问的不是如何在COBOL中实现,而是在Java中实现……谢谢@RickSmith你能给我提供将一个文件的内容复制到另一个文件的代码吗。“那真的很有帮助。”毗瑟奴我把一个符合COBOL85标准的程序放在了。当然,这需要修改。