file - 如何使用在cobol中具有重复值的键编写合并文件
问题描述
请帮助编写具有重复记录的键的合并 2 个文件。
我的要求是
Key1. Key2
015. 015
015. 015
017. 017
019. 017
019. 019
019. 019
Op file needs to check
Key1=key2
If so,my op will be
015
015
017
017
019
019
019 like this..
I have written like this.But it is working for 015 and
017..not helping for 019
Process para.
If eof-input1 = 'N'
If key1 = key2
Move details from file2
to op1
Write op1
Read file2
Else
If key1<key2
Read file1 until eof1
or key1>=key2
If key1=key2
Move details
Write op1
Read file2
End-if
End-if
End-if
End-if.
如果我尝试像这样为 cond key1>key2 编写它不起作用..我不知道如何获得完整的操作。请帮忙。提前致谢!!
解决方案
关键点:
- 您需要确保两个文件按相同的顺序排序。查找Cobol 排序动词
- 最新版本的 Cobol 有一个合并语句。您可能可以使用取决于
- 程序逻辑
- 如果你的编译器支持它。
- 已经有很多关于Cobol Sort和COBOL Merge的 Stackoverflow 问题
通用合并逻辑
我发现EVALUATE语句的以下逻辑最容易阅读/调试。假设升序键,基本上你用最低键读取文件,当它们相等时你有匹配
if (key-file1 > key-file2)
read file2
else if (key-file1 < key-file2)
read file1
else
/* what you do here is determined by the file structure
* one to one match -> read both files
* one to many relationship read the `may` file */
read both files ?
当任一文件达到eof时,您将停止循环。然后分别处理剩下的
以更 Cobol 的形式
perform r100-read-file-1
perform r200-read-file-2
perform until eof-file-1 or eof-file-2
evaluate true
when key-File-1 > key-file-2
... what ever
perform r200-read-file-2
when key-File-1 < key-file-2
... what ever
perform r100-read-file-1
when key-File-1 = key-file-2
perform process-match
perform r100-read-file-1 and/or perform r200-read-file-2
end-evaluate
end-perform
perform until eof-file-1
... what ever
perform r100-read-file-1
end-perform
perform until eof-file-2
... what ever
perform r200-read-file-2
end-perform
推荐阅读
- tensorflow - 如何修复:'RuntimeError:会话图为空。在调用 run() 之前向图中添加操作。
- java - 使用带有身份验证标头的 AWS API 网关上传音频
- php - 管理员在 Laravel 中创建用户
- c++ - 我在这个程序中收到“退出,浮点异常”的错误,你能解释一下并给我新代码,为什么会这样?
- flutter - 使用 getX 颤振图像选择器
- tensorflow2.0 - graph_def.ParseFromString(f.read()) google.protobuf.message.DecodeError:解析消息时出错
- spring-security - 在同一个身份验证管理器中列出多个身份验证提供程序
- c# - 命名空间“System.Configuration”中不存在类型或命名空间名称“UserScopedSettingAttributeAttribute”
- laravel - 需要一个 .htacces 条件来删除 index.php
- python - Pygame 函数有两个括号