COBOL替换文件中的第一行而不使用OPEN I-O和REWRITE

时间:2018-04-23 11:13:09

标签: file cobol microfocus

假设我有一个格式为

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

我必须打开此文件,并根据某些逻辑将n的值更改为其他值。更改后,我的文件应该是。

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

我可以在OPEN I-O模式下打开文件,并使用REWRITE选项更改第一行以替换第一行。但我不想使用这些方法。有没有办法使用OPEN INPUT和OPEN OUTPUT模式实现相同的逻辑,并用WRITE方法替换该行。

1 个答案:

答案 0 :(得分:0)

  

有没有办法使用OPEN INPUT和OPEN实现相同的逻辑   输出模式并用WRITE方法[?]

替换该行

不,这会让你只留下文件中的<records count="m">。所有其他记录都将丢失!

只要第一条记录的长度相同,将n更改为m后,REWRITE就是更新该记录的最直接方式。

也许,如果你解释为什么要使用WRITE,可能还有其他事情可以做。

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

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

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

您需要定义'too'的限制。

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