1

本练习的目标是读取输入文件并将其存储到表中,然后验证输入中的某些字段并输出任何错误记录。需要存储的输入文件是 285 条记录。问题是每条记录都是不同的,都有自己的字帖,所以我不知道如何将它加载到一个表中,我可以在其中搜索每个 10、20 或 32 条记录的某个字段。这是输入文件的示例,仅供参考...不确定此时是否需要我当前的代码,因为除了 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 中的邮政编码是否为数字?

我知道我可以读入字帖,但我不知道如何,或者如果可能的话,将一个文件读入多个字帖,然后将其全部存储在一个表中......如果这有意义的话。

任何关于从这里去哪里的建议将不胜感激!

4

2 回答 2

2

回顾你之前展示的一本字帖,上面有一个 01。这可能会使您的任务复杂化。没关系。

将所有记录存储在表中后,您可以按顺序查看每个项目,只注意每个条目的前两个字节,通过记录类型识别条目并将条目移动到相应的 01记录类型。使用字帖名称进行所有验证/报告。

如果没有字帖上的 01,您可以在表条目的 REDEFINES 中使用字帖,并通过与上述相同的方法使用适当的字帖,而无需执行 MOVE。

有一种“更高级”的方法可以做到这一点,但它可能会与您目前正在学习的内容相吻合。给自己做个笔记,在几个月后问,那时你对 COBOL 更放心。

你的任务只是一个练习。您不太可能将这样的文件存储在这样的表中。它是为了让你习惯于文件处理和表格处理。

文件处理和表格处理是很常见的东西,所以要通过实践来掌握它们。尝试首先阅读您的课程笔记和手册。然后是导师/同事。你会发现学习比来这里寻求答案更容易。如果你确实卡住了,当然欢迎你问,但请先卡住:-)

于 2013-11-12T23:23:16.287 回答
2

几个问题

  1. 为什么在读取文件时必须将值移动到表中而不是进行测试???。
  2. 作业是否明确规定您必须在进行任何测试之前将每条记录读入表中???还是您只需要将所有相关记录存储在一个表中并在其中一个有错误时将它们全部打印出来???。最好在表中尽可能少地存储。

如果您需要将整个文件存储在一个表中,基本上你可以

  1. 将文件读入表格
  2. 在工作存储中包括抄写本
  3. 当您要测试表格条目时,请检查记录类型并将表格条目移动到适当的字帖。

      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
    

宁愿_

  1. 只在表中存储相关记录
  2. 在读入时测试值(或存储以在读入完整记录组时进行检查)。

在这种情况下,可以使用如下逻辑

     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
于 2013-11-13T00:00:03.787 回答