_SaM_
Forum Member / Участник форума
Участник № / Member № 122
отправлено / posted
Пример функционального блока: #DEFINE I0 M1 CALL TEST 0 ( M1 , 3 , Q0 ) В результате его добавления получаем функциональный блок с одним входом ( RUN ) и одним выходом, который называется M1 (?) Судя по справочной системе, этот пример корректен, но неправильно компилируется. Если его слегка переделать #DEFINE I0 M1 F0 = M1 CALL TEST 0 ( M1 , 3 , Q0 ) то сразу появляется потерянный вход. Если поменять переменную M1 на V1, то получим следующий результат: #DEFINE I0 V1 F0 = V1 CALL TEST 0 ( V1 , 3 , Q0 ) Дамп: 01 05[0] 01[1] : = F0 V1 (ERR8)Имя не найдено:V1 То есть выражение F0 = V1 компилятор понял, а при вызове блока он не смог найти переменную V1. Эта ошибка наблюдается для переменных, которые начинаются с буквы V и некоторых других.
Сообщения / Posts 40 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В приводимых Вами текстах IL-программ содержится общая синтаксическая ошибка: после имени параметра (M1 и V1) в операторе CALL имеется пробел перед разделяющей запятой. Он будет отнесен к имени переменной. Поэтому она и не находится. Я убрал этот пробел и проверил как трансляцию блока, так и его функционирование. Все работает правильно.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |