COBOL读/存在表中

Meg*_*Meg 2 cobol

此练习的目标是读取输入文件并将其存储到表中,然后验证输入中的某些字段并输出任何错误记录.我需要读取并存储每个策略组,以便一次只存储5个记录而不是整个文件.

所以我需要读取一个5个记录的策略组,进行处理,然后读取接下来的5个记录等,直到文件结束.

This is the input file.
10A 011111          2005062520060625                                    
20A 011111000861038                                                     
32A 011111                            79372                             
60A 0111112020                                             6          4 
94A 011111     080 1                                                    
10A 02222          2005082520060825                                    
20A 022221000187062                                                     
32A 022221                            05038                             
60A 0222212003                                             6          4 
94A 022221     090 1                                                    
....
Run Code Online (Sandbox Code Playgroud)

我能够将前5个记录加载到表中,让我的表发生了5次,但我不知道如何继续这样做.我的代码如下.(我写它只是为了看它是否正常工作,但是它打印的标题行包含前4个记录,而不仅仅是前5个)01 TABLES.

05  T1-RECORD-TABLE.                                
    10  T1-ENTRY                OCCURS 5 TIMES      
                                INDEXED BY T1-INDEX.

        15  RECORD-TYPE-10      PIC X(80).          
        15  RECORD-TYPE-20      PIC X(80).          
        15  RECORD-TYPE-32      PIC X(80).          
        15  RECORD-TYPE-60      PIC X(80).          
        15  RECORD-TYPE-94      PIC X(80).          

 copy trnrec10.
 COPY TRNREC20.
 COPY TRNREC32.
 COPY TRNREC60.
 COPY TRNREC94.
.....

Z200-READ-FILES.                               
    READ DISK-IN INTO T1-ENTRY(T1-INDEX)       
        AT END MOVE 'YES' TO END-OF-FILE-SW.   

    WRITE PRINT-RECORD FROM T1-ENTRY(T1-INDEX).
Run Code Online (Sandbox Code Playgroud)

我不想一步一步为此(尽管那很好:P)bc我知道我需要做什么我只是不知道如何做到这一点我的教科书和课程笔记对我来说毫无用处.我已经坚持了一段时间,没有尝试过.

Gil*_*anc 5

我假设每个策略组都有5条记录类型的5条记录.

您可以像这样设置工作存储空间.

05  T1-RECORD.
    10  T1-RECORD-TYPE               PIC XX.
    10  FILLER                       PIC X(78).      

 COPY TRNREC10.
 COPY TRNREC20.
 COPY TRNREC32.
 COPY TRNREC60.
 COPY TRNREC94.
Run Code Online (Sandbox Code Playgroud)

然后你读的段落看起来像这样.我假设TRNREC10-RECORD是TRNREC10字帖的01级.如果没有,请替换以下代码中的实际01级别.

2200-READ-FILE.                               
    READ DISK-IN INTO T1-RECORD      
        AT END MOVE 'YES' TO END-OF-FILE-SW.  

    IF END-OF-FILE-SW = 'NO'
        IF T1-RECORD-TYPE = '10'
            MOVE T1-RECORD TO TRNREC10-RECORD
        END-IF
        IF T1-RECORD-TYPE = '20'
            MOVE T1-RECORD TO TRNREC20-RECORD
        END-IF
        ...
    END-IF.
Run Code Online (Sandbox Code Playgroud)

你写的段落看起来像这样

2400-WRITE-FILE.
    WRITE PRINT-RECORD FROM TRNREC10-RECORD
    WRITE PRINT-RECORD FROM TRNREC20-RECORD
    ...
Run Code Online (Sandbox Code Playgroud)

您的处理段落将访问副本记录中的数据.