我正在尝试显示一些我正在读表的数据。但是,我一直收到错误:
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.
答案 0 :(得分:0)
在您的计划中,您IN-FUND-NBR
定义了多次。其他定义可能是在一本字帖中,或者您自己编码的内容,而没有意识到。编译器会丢弃对该字段的引用。
关于引用修改的第二条诊断消息是因为放弃了对数据名的引用,然后编译器会遇到左括号和下标。当您更正问题时,此消息将消失。
要么确保数据名称是唯一的。或者,在这种情况下,这是不可能的,你必须使用qualification
。您可以使用IN或OF并引用更高级别的数据名来执行此操作。
根据你所展示的内容:
DISPLAY "Fund Number: " IN-FUND-NBR OF SALES-RECORD (MF-SALE-SUB)
应该有用。
虽然您可以使用qualification
来解决问题,但很多人都像我一样,发现它完全浪费时间和耐心,而其他人,特别是初学者,却发现它是混乱的根源。尽量始终拥有唯一的数据名称。