本练习的目标是读取输入文件并将其存储到表中,然后验证输入中的某些字段并输出任何错误记录。需要存储的输入文件是285条记录。问题是每个记录都是不同的,有自己的副本,所以我不知道如何将它加载到一个表格,我可以搜索某个字段的每个10,20或32记录。这是输入文件FYI的示例...不确定此时是否需要我当前的代码,因为除了READ语句之外没有太多内容。
10A 018517 2005062520060625
20A 018517000861038
32A 018517 79372
60A 0185172020 6 4
94A 018517 080 1
10A 027721 2005082520060825
20A 027721000187062
32A 027721 05038
60A 0277212003 6 4
94A 027721 090 1
....
我能够将文件加载到表中,但现在我的困境是如何搜索表中的每个不同记录字段来验证?即如何验证记录32中的邮政编码是否为数字?
我知道我可以读到这本字帖,但我不知道如何,或者如果它甚至可能,将文件读入多个副本,然后将它们全部存储在一个表中......如果这是有道理的。
非常感谢任何有关从何处出发的建议!
答案 0 :(得分:2)
回顾你之前展示的一本字帖,它上面有一张01。这可以为你的任务卷入事物。没关系。
一旦您将所有记录存储在表中,您可以按顺序查看每个项目,只关注每个条目的前两个字节,通过记录类型识别条目并将条目移动到相应的01表示该记录类型。使用copybook-names进行所有验证/报告。
如果没有副本上的01,你可以在表条目的REDEFINES中使用副本,只需使用适当的副本,方法与上面相同,而无需进行MOVE。
有一种“更先进”的方法可以做到这一点,但它可能会与您目前正在学习的内容相关联。在几个月的时间里,当你对COBOL更加放松时,请记下自己的问题。
你所拥有的任务只是一项练习。您不可能在这样的表中存储类似的文件。这是让你习惯文件处理和表处理。
文件处理和表格处理是很常见的事情,所以通过练习来擅长。首先尝试完成课程笔记和手册。然后是导师/同事。你会发现学习比仅仅来这里寻找答案更容易。如果你遇到困难,你当然可以问,但请先卡住: - )
答案 1 :(得分:2)
几个问题
如果您需要将整个文件存储在表格中,基本上可以
如果要测试表条目,请检查记录类型并将表条目移动到相应的副本。
01 File-Records.
03 filler occurs 285.
05 Table-Entry Pic X(80).
05 Filler redefines Table-Entry Pic XX.
88 Record-Type-10 value "10".
....
88 Record-Type-94 value "94".
Evaluate true
when Record-Type-10(table-index)
Move Table-Entry(table-index) to Copybook-10
...Whatever processing is needed...
...
when Record-Type-94(table-index)
Move Table-Entry(table-index) to Copybook-94
....
end-evaluate
我更喜欢到
在这种情况下可以使用如下逻辑
Evaluate true
when Record-Type-10
if group-in-error
...write all the table-entries to the Error-File...
end-if
set group-in-error-off to true
move 1 to table-index
... Record-Type-10 tests ...
when group-in-error
continue
when Record-Type-20
... Record-Type-20 tests ...
end-Evaluate
move Intput-record to Table-entry(table-index)
Add 1 to table-index