Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Система ИРБИС в целом :  ИРБИС Irbis
 
Ошибки и недоработки в интерпретаторе форматов
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 04, June, 2007 23:38

1. При отсутствии вложенного формата выдаётся сообщение ** Format Error 99 - Неизвестная команда (например, ошибка в правильности написания имени функции или команды), возможен также пропуск закрывающего ограничителя литерала. **
Вышеприведённое сообщение никак не указывает на реальную причину ошибки и направляет пользователя по ложному следу. В формате может не быть ни одной неправильно написанной функции, команды или пропущенного литерала.
Вложенность форматов, подключённых новым способом, ещё больше усложняет диагностику ошибки. Между тем, с проблемой отсутствия необходимых форматов сталкиваются все пользователи системы, которые производят ручное обновление ИРБИС.

Вывод: сообщение об ошибке было бы гораздо более информативным, если бы в нём приводилось название отсутствующего формата. :)

2. Знаки перевода строки не воспринимаются как разделитель между операторами, и отсутствие дополнительных разделителей вместе с ними приводит к ошибке.
Например, команды:
fi
fi
с точки зрения системы то же, что и fifi
Такие конструкции приводят к злополучной ошибке 99 и понять в чём дело бывает непросто. Конечно, можно проставлять перед каждым переводом строки запятую, но гораздо логичней было бы передать эту работу форматеру...



Редактировано 1 раз. Последний раз 04.06.2007 23:44 пользователем Кирилл Соколинский (СЗТУ).

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: Карауш (IP-адрес скрыт)
Дата: 05, June, 2007 19:25

Про
fi
fi
могу сказать, что форматер удаляет переводы строки и ничем их не заменяет. Таким образом, если между fi fi стоит только перевод строки, то после удаления перевода строки становится fifi, что есть - ошибка. Сделано такое по "старой бородатой" памяти, когда именно так интерпретировались команды, т.к. были редакторы по 80 символов в строке. И у пользователей существует до сих пор еще много-много таких "старых" pft-файлов форматов.

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 05, June, 2007 23:47

Александр Сергеевич, если я Вас правильно понял, Вы имели в виду, что тексты, набранные в досовских редакторах, которые автоматически добавляли перевод строки после 80-го символа, могут интерпретироваться некорректно при автоматической замене символов перевода строки пробелом. Я действительно не знал и не учёл это обстоятельство, но мне кажется, что сегодня в ИРБИС должно быть очень мало таких форматов. Кроме того, редактор, автоматически проставляющий переводы строки, было бы очень неудобно использовать при редактировании ТВП или табличных форм. Поэтому можно предположить, что форматы в таких редакторах создавались пользователями ИРБИС нечасто.

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: Карауш (IP-адрес скрыт)
Дата: 06, June, 2007 05:29

Да, вопрос "следует" из DOS.
К сожалению преемственность - весьма странная и трепетная порой "штука", которая накладывает много условностей.
Я года два назад уже разговаривал с разработчиками про это. Но, мы сошлись на том, что когда все форматы будут переписаны заново, только тогда они уберут эту особенность, а пока таких форматов много, где команда "рвется" на одной строке и переходит на другую. Там может "порваться" и оператор и всё остальное. Посмотрите форматы. если считаете, что пользователи не понасоздавали форматов, то ошибаетесь. В каждом городе или библиотеке кто-то что-то подменил ;)
А особенность обучения ИРБИСу такова, что все учатся "методом копирования" "готовых" форматов и их правки под свои условия. И убирание такой "маленькой особенности" вызовет шквал вопросов и проблем.

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, June, 2007 10:38

Видимо, Вы правы. Было бы интересно посмотреть хотя бы на одного из этих "динозавров" в версии 2006.2, который пережил без изменений около 10 лет.:) Я их никогда не видел.



Редактировано 1 раз. Последний раз 06.06.2007 10:54 пользователем Кирилл Соколинский (СЗТУ).

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, June, 2007 11:15

3. Неоднозначно определяется тип данных, возвращаемый функциями UNIFOR

/* Например,
&uf('+1W100#100'),&uf('+1W200#200'),
/* Эти конструкции вызывают ошибку
&uf('+1R100')<200 then 'TRUE' fi,
f(&uf('+1R100'),0,0)
/* Эта конструкция интерпретируется нормально
if &uf('+1R100')<&uf('+1R200') then 'TRUE' fi,

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: ochagova (IP-адрес скрыт)
Дата: 06, June, 2007 15:44

Исправив ваши конструкции, т.к. в том виде, что вы написали, они дают ошибку, я выполнила форматы:
&uf('+1W100#100'),&uf('+1W200#200'),
if &uf('+1R100')<'200' then 'TRUE' fi,/
G100,
и получила:
TRUE
100
В чем ошибка?

Re: Ошибки и недоработки в интерпретаторе форматов
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 06, June, 2007 20:18

Людмила Николаевна, специально проверил:
&uf('+1W100#100')
&uf('+1R100')>'200' then 'TRUE' fi,
вызывает ошибку. Я работаю с Format32.dll от 29.03.2007.

Очень странно, что эта конструкция возвращает у Вас True, поскольку в глобальной переменной 100 находится значение 100 и 100 меньше, а не больше чем 200.

Кроме того, использование оператора сравнения со строками -- это очень необычно.



Редактировано 1 раз. Последний раз 06.06.2007 20:33 пользователем Кирилл Соколинский (СЗТУ).



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.