НОВАЯ ОШИБКА В ИНТЕРПРЕТАТОРЕ ЯЗЫКА ФОРМАТИРОВАНИЯ
Пользователь:
Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 24, March, 2006 02:15
ЧАСТЬ 1
В последнее время я начал получать письма с просьбами о помощи в борьбе с ошибками WEB IRBIS. В одном из них говорилось о том, что при просмотре библиографических описаний в новом ГОСТе читателей сильно сбивает гиперссылка РЕЦЕНЗИЯ \ РЕФЕРАТ. Она появляется даже в том случае если никакой рецензии или реферата на издание нет, и при щелчке на ней возникает ошибка. Поскольку я временно отказался от использования нового ГОСТА, так как он сильно задерживает вывод, этой проблемой мне заниматься не приходилось.
Естественно, первая мысль которая пришла в голову, что дело в очередной ошибке формата. Я просмотрел код файла Oprimdw.pft и оказалось, что он действительно содержит синтаксическую ошибку(Format Error 99), но условие вывода гиперссылки вполне корректно.
if val(&unifor('J,I470='v903))>0 then '<br><A HREF="', ssinternet2 ,&unifor('+3E',v903),'">Есть рецензия / реферат</A>' fi,
Несколько месяцев назад, в старой версии, была выявлена грубая ошибка, возникавшая при интерпретации функции F(). (http://irbis.gpntb.ru/read.php?f=21&i=854&t=854). Сейчас аналогичная ситуация повторяется с функцией VAL и(или) логическими операторами.
&unifor('J,I470='v903) - не возвращает ничего.
f(val(&unifor('J,I470='v903)), 0, 0) - не возвращает ничего.
val(&unifor('J,I470='v903))>0 возвращает TRUE. Фактически, TRUE возвращает val(‘’)>0 ! ! !
(исправить это можно, написав val(&unifor('J,I470='v903))<>’’ или val(&unifor('J,I470='v903))>=1)
Примечательно, что эта ошибка, проявлявшаяся ВО ВСЕХ выводимых описаниях не была «замечена» и устранена. Из дальнейшего анализа этого формата следует, что разработчиками вообще ни разу не была протестирована его работоспособность.
Отправка отредактированного (24-03-06 02:32)