Cobol 我的任务是从第一个文件中读取一条记录,检查第二个文件中的相应记录并显示它

Cobol 我的任务是从第一个文件中读取一条记录,检查第二个文件中的相应记录并显示它,cobol,Cobol,我的任务是从第一个文件中读取一条记录,检查第二个文件中的相应记录并显示它。 这是我的代码: PERFORM READ-PARA1 THRU END-PARA UNTIL WS-END-OF-FILE. PERFORM READ-PARA2 THRU END-PARA UNTIL WS-END-OF-FILE. CLOSE FILEX. CLOSE FILEY.

我的任务是从第一个文件中读取一条记录,检查第二个文件中的相应记录并显示它。 这是我的代码:

PERFORM READ-PARA1 THRU END-PARA UNTIL WS-END-OF-FILE.   
    PERFORM READ-PARA2 THRU END-PARA UNTIL WS-END-OF-FILE.   
    CLOSE FILEX.                                             
    CLOSE FILEY.                                             
    STOP RUN.                                                
READ-PARA1.                                                  
    READ FILEX                                               
      AT END                                                 
         MOVE 'Y' TO WS-EOF-IND.                             
      DISPLAY SPACE                                          
      DISPLAY OCODE1,'    'ACODE1,'    'POLNO1,' 'EDATE1,    
              ' 'PHOLD1,' 'LOCATION1,' '.                    
READ-PARA2.                                                  
    READ FILEY                                               
     READ FILEY                                                   
       AT END                                                     
          PERFORM READ-PARA3 UNTIL R1 = 4.                        
   IF POLNO1 = POLNO2                                             
      DISPLAY '                                                ', 
              LICNO1,' 'VMAKE1,' 'VMODEL,' 'YEAR,' 'PREM          
   ELSE                                                           
      READ FILEY NEXT RECORD                                      
      GO TO READ-PARA2.                                           
 END-PARA.                                                        
       EXIT.                                                      
 READ-PARA3.                                                      
      CLOSE FILEY.                                                
      OPEN INPUT FILEY.                                           
      READ FILEY                                                  
        AT END                                                    
           MOVE 'Y' TO WS-EOF-IND.                                
   ADD 1 TO R1.                                                   
   IF POLNO1 = POLNO2                                             
      DISPLAY '                                                ', 
   DISPLAY '                                                ', 
           LICNO1,' 'VMAKE1,' 'VMODEL,' 'YEAR,' 'PREM          
ELSE                                                           
   READ FILEY NEXT RECORD                                      
   GO TO READ-PARA3.

此代码仅用于查找文件1的第一条记录的对应记录,但对于其余所有记录,它都显示为空,并且都是顺序文件。

我真的不知道在这里该说什么,除了可能尝试使用最新版本重新编写程序外 编码实践-您当前的代码混合了COBOL-85之前/之后的编码风格,因此很难遵循。试着重新写 有以下几点 目标

  • 不要使用
    PERFORM-THRU
    <代码>执行正常,通过位是COBOL-85之前的回溯位,不应再使用。如果需要在一个循环中预制几个段落/部分,请尝试以下方法: 直到出现某种情况为止 执行A段 PEROFMR第B段 末端执行
  • 使用显式作用域终止符,如
    END-IF
    END-PERFORM
  • 切勿将句点(.)用作条件语句终止符。句号应该(必须)出现的唯一地方是划出段落/章节的结尾
  • 不要使用
    转到
    。很少有地方可以使用
    转到
    。在这种规模/复杂度的程序中,绝不应使用它
  • 摆脱只包含
    EXIT
    的段落。正确使用范围终止符时(参见第1点和第2点)<不再需要代码>退出
  • 您没有使用它,但为了以防万一,请不要使用下一句话。这也是COBOL-85之前的倒退,在技术上已经过时

  • 如果您设法按照上述准则重新编写,您可能会发现您的问题更容易发现和修复。再试试看。我认为第二次尝试可能会更好。

    我真的不知道该说些什么,除了可能尝试使用最新版本重新编写程序 编码实践-您当前的代码混合了COBOL-85之前/之后的编码风格,因此很难遵循。试着重新写 有以下几点 目标

  • 不要使用
    PERFORM-THRU
    <代码>执行正常,通过位是COBOL-85之前的回溯位,不应再使用。如果需要在一个循环中预制几个段落/部分,请尝试以下方法: 直到出现某种情况为止 执行A段 PEROFMR第B段 末端执行
  • 使用显式作用域终止符,如
    END-IF
    END-PERFORM
  • 切勿将句点(.)用作条件语句终止符。句号应该(必须)出现的唯一地方是划出段落/章节的结尾
  • 不要使用
    转到
    。很少有地方可以使用
    转到
    。在这种规模/复杂度的程序中,绝不应使用它
  • 摆脱只包含
    EXIT
    的段落。正确使用范围终止符时(参见第1点和第2点)<不再需要代码>退出
  • 您没有使用它,但为了以防万一,请不要使用下一句话。这也是COBOL-85之前的倒退,在技术上已经过时

  • 如果您设法按照上述准则重新编写,您可能会发现您的问题更容易发现和修复。再试试看。我想第二次尝试可能会更好。

    +1是答案,还有一个提示:7。代码的一致缩进将使您更容易阅读并发现问题。(我知道从你的工作区复制/粘贴到SO文本框中可能会很棘手。)+1是答案,还有一个提示:7。代码的一致缩进将使您更容易阅读并发现问题。(我认识到从工作区复制/粘贴到SO文本框中可能很棘手。) PERFORM UNTIL some-condition PERFORM PARA-A PEROFMR PARA-B END-PERFORM