Рекорд по чтению Кобола с таблицей

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

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-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.

person Community    schedule 14.11.2013    source источник
comment
ПОЧИНИЛ ЭТО! У меня индекс был не в том месте.   -  person    schedule 15.11.2013
comment
Прекрасный пример путаницы, которую это может вызвать. Не помогает то, что вы также можете использовать OF или IN. Следующий человек, которому придется заняться вашей программой, оценит, если вы сделали имена уникальными. Обратите внимание, что точное прочтение моего ответа сэкономило бы вам некоторое время, но на самом деле для акцента make your data-names unique!   -  person Bill Woodger    schedule 15.11.2013


Ответы (1)


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

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

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

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

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

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

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

person Bill Woodger    schedule 14.11.2013
comment
Ах да, вот в чем проблема. Я подумал, что это было что-то в этом роде, но не смог его отследить. Оказывается, в одной из копий, которые я использую, уже определен IN-FUND-NBR. Спасибо! - person ; 15.11.2013