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

时间:2012-07-30 06:00:10

标签: 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.                                             
    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的第一个记录的相应记录,但是对于休息,它只显示空白,并且都是顺序文件。

1 个答案:

答案 0 :(得分:4)

我真的不知道在这里说什么,除非尝试使用最新版本重新编写您的程序 编码实践 - 您当前的代码是COBOL-85编码风格的前/后混合,因此很难遵循。尝试重写 以下内容 目标。

  1. 请勿使用PERFORM THRUPERFORM很好,THRU位是COBOL-85之前的回归,不应再使用了。如果你需要在循环中预先形成几个段落/部分,请尝试以下方法:
          PERFORM UNTIL some-condition
              PERFORM PARA-A
              PEROFMR PARA-B
          END-PERFORM
    
  2. 使用明确的范围终结符,例如END-IFEND-PERFORM等。
  3. 切勿将句点(。)用作条件语句终止符。句点应该(必须)出现的唯一位置是划分段落/节的结尾。
  4. 请勿使用GO TO。很少有地方可以使用GO TO。在这种大小/复杂程度的程序中,永远不应该使用它。
  5. 删除仅包含EXIT的段落。正确使用示波器终结器时(参见第1点和第2点)。
  6. 。不再需要EXIT
  7. 您尚未使用它,但为了以防万一,请勿使用NEXT SENTENCE。这也是COBOL-85之前的回归,在技术上已经过时了。
  8. 如果您设法使用上述指南重新编写,您可能会发现您的问题更易于发现和修复。再试一次。我认为第二次尝试可能会好得多。