2013-11-14 2 views
0

Я пытаюсь отобразить некоторые данные, которые я читаю в таблице. Тем не менее, я продолжаю получать ошибку:Запись записи Cobol с таблицей

IN-FUND-NBR was not a uniquely defined name...Expected a reference-modification specification but found ")".

*** EDIT: Хорошо, поэтому я нашел корень проблемы. Тем не менее, я не могу получить доступ к IN-FUND-NBR, когда он сидит? Я попытался следующие, но это не работает:

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

*** END EDIT

я следующая запись определяется следующим образом:

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-ФОНДА-нитрильного каучука, выполнив следующие действия в paragrah:

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

FIXED IT! У меня был индекс в неправильном месте. –

+0

Идеальный пример путаницы, которую он может вызвать. Не помогает, что вы можете использовать либо «OF», либо «IN». Следующему человеку, который должен поднять вашу программу, это понравится, если вы сделаете имена уникальными. Обратите внимание, что точное чтение моего ответа могло бы сэкономить вам некоторое время, но, действительно, для акцента ** 'сделать ваши имена данных уникальными! ** ** –

ответ

0

в программе у вас есть IN-FUND-NBR, определенные более одного раза. Другое определение (ы) может быть в тетради, или что-то, что вы закодировали сами, не осознавая. Компилятор отбрасывает ссылку на поле.

Второе диагностическое сообщение об изменении ссылки состоит в том, что, отбросив ссылку на ваше имя-данных, компилятор затем встречает открывающую скобку и ваш индекс. Это сообщение исчезнет, ​​когда вы устраните проблему.

Либо убедитесь, что имена данных уникальны. Или, в сумасшедшей ситуации, что это невозможно, вы должны использовать qualification. Вы делаете это, используя IN или OF и ссылаясь на имя более высокого уровня.

Из того, что вы показали:

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

должен работать.

Хотя вы можете использовать qualification, чтобы обойти эту проблему, многие из нас, как и я, находят ее пустой тратой времени и терпения, а другие, особенно начинающие, считают ее источником смятения. Приложите все усилия, чтобы всегда иметь уникальные имена данных.

+0

Ах, да, в этом проблема. Я подумал, что это что-то вроде этого, но я не мог отследить его. Оказывается, одна из копий, которые я использую, имеет IN-FUND-NBR, уже определенную. Благодаря! –

Смежные вопросы