Re: Обрезка строки от пробелов в начале и конце
Пользователь:
Карауш (IP-адрес скрыт)
Дата: 18, August, 2006 19:27
"Поковырял" немного вечеров новые возможности ИРБИС_6.1 и представляю "словосочетание", которое может использоваться для удаления конечных символов в полях. Основная "нагрузка" была с повторениями полей.
Итак, "словосочетание" команд ищет последний символ в поле 610 (каждом его повторении) и, если там есть последний пробел, то выдает поля без последнего пробела.
Может использоваться для поиска или глобальной корректировки.
(if v610<>'' then &uf('+1'), &uf('+1W100#',&uf('+90#',v610))
if &uf('+961*0.1#',&uf('Av610#'&uf('+1R100')))=' '
then &uf('+960*0.'f(rsum(&uf('+95',&uf('Av610#'&uf('+1R100'))),'-1'),1,0)'#',v610)
else v610
fi
fi/)
Если заменить строку v610 на что-то еще, то можно и другие поля смотреть ;)
В соответсвии с этим решением у меня появился вопрос к Константину Сбойчакову.
Почему в каких-то случаях этого выражения срабатывает команда &uf('+90#',v702^b), например:
(if v702^b<>'' then &uf('Av702^b*0.2#',&uf('+90#',v702^b)) fi /)
т.е. выдает номер текущего повторения, до второго "слоя" вложенности в &uf.
А далее, начиная с третьего уровня вложенности - уже не работает, например,
(if v702^b<>'' then &uf('+960*0.'f(rsum(&uf('+95',&uf('Av702^b#'&uf('+90#',v702^b))),'-1'),1,0)'#',&uf('Av702^b#'&uf('+90#',v702^b))) fi /)
???
Для обхода этого пришлось использовать глобальные переменные.