Cobol阅读记录与表

问题描述 投票:0回答:1

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

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.

我试图通过在段落中执行以下操作来提取IN-FIND-NUMBER的第一个实例:

 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.
record cobol
1个回答
0
投票

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

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

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

从你所展示的:

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

应该管用。

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

© www.soinside.com 2019 - 2024. All rights reserved.