Cobol阅读记录与表

时间:2013-11-14 22:13:00

标签: record cobol

我正在尝试显示一些我正在读表的数据。但是,我一直收到错误:

  

IN-FUND-NBR不是一个唯一定义的名称......期望参考修改规范,但发现“)”。

***编辑:好的,所以我找到了问题的根源。但是,我仍然无法访问IN-FUND-NBR吗?我尝试了以下方法,但它不起作用:

DISPLAY "IN-FUND-NBR = " IN-FUND-NBR (MF-SALE-SUB) OF IN-MF-SALE

***结束编辑

我将以下记录定义如下:

 01  SALES-RECORD.                          
     05  IN-CITY-NAME           PIC X(20).  
     05  IN-CUSTOMER-NAME       PIC X(20).  
     05  IN-MF-SALE             OCCURS 4.   
         10  IN-FUND-NBR        PIC 9(2).   
         10  IN-PRICE-FLAG      PIC 9.      
         10  IN-PURCH-AMT       PIC 9(5)V99.

我试图通过在paragrah中执行以下操作来提取IN-FUND-NBR的第一个实例:

 PERFORM                                          
   VARYING MF-SALE-SUB FROM 1 BY 1                
     UNTIL MF-SALE-SUB > 4                        

       DISPLAY "Fund Number: " IN-FUND-NBR(MF-SALE-SUB)

 END-PERFORM.

1 个答案:

答案 0 :(得分:0)

在您的计划中,您IN-FUND-NBR定义了多次。其他定义可能是在一本字帖中,或者您自己编码的内容,而没有意识到。编译器会丢弃对该字段的引用。

关于引用修改的第二条诊断消息是因为放弃了对数据名的引用,然后编译器会遇到左括号和下标。当您更正问题时,此消息将消失。

要么确保数据名称是唯一的。或者,在这种情况下,这是不可能的,你必须使用qualification。您可以使用IN或OF并引用更高级别的数据名来执行此操作。

根据你所展示的内容:

DISPLAY "Fund Number: " IN-FUND-NBR OF SALES-RECORD (MF-SALE-SUB)

应该有用。

虽然您可以使用qualification来解决问题,但很多人都像我一样,发现它完全浪费时间和耐心,而其他人,特别是初学者,却发现它是混乱的根源。尽量始终拥有唯一的数据名称。