Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Общие вопросы Ирбис64 :  ИРБИС Irbis
 
unifor 95 и повторения поля
Пользователь: levaleva (IP-адрес скрыт)
Дата: 28, January, 2019 07:19

Добрый день, уважаемые коллеги.

Если взять команду (v51^C/), форматтер выведет как положено:

ф1
ф2
ф3

Если взять unifor +96 (взятие подстроки) (&uf('+961*0.1#'v51^C)/), то форматтер тоже сработает вполне штатно, выведя по подстроке с заданого повторения:

1
2
3

Но если мы захотим узнать длину подполя каждого повторения

(&uf('+95'v51^C)/)

Происходит вывод
2
2
0
0
..
0

Где столбец нулей добивает до 5000 строк.

Что это? Недостаточное описание функции в документации? Древняя ошибка? Принципиальная невозможность работать с повторениями?

Проверено на ИРбис64 2011 и 2017

Re: unifor 95 и повторения поля
Пользователь: ochagova (IP-адрес скрыт)
Дата: 28, January, 2019 09:30

Просто надо правильно писать:

(if p(v51) then &uf('+95',v51^С/) fi/)

Re: unifor 95 и повторения поля
Пользователь: levaleva (IP-адрес скрыт)
Дата: 28, January, 2019 09:59

Спасибо! Да, вы правы, привык к тому что проверка на существование - чистая формальность.

Но почему другие unifor корректно отрабатывают без проверки?

И второй вопрос, точно ли нужен "/" после ^C?

Его отсутствие ни на что не влияет...

Re: unifor 95 и повторения поля
Пользователь: ochagova (IP-адрес скрыт)
Дата: 28, January, 2019 12:39

Потому что другие UF возвращают пустоту, а этот '0'. А выход из цикла - по пустой строке.
Слэш не нужен, т.к. это внутри группы и всегда возьмется очередное повторение.

Re: unifor 95 и повторения поля
Пользователь: levaleva (IP-адрес скрыт)
Дата: 29, January, 2019 09:36

Спасибо за уточнение.

Re: unifor 95 и повторения поля
Пользователь: Tamara (IP-адрес скрыт)
Дата: 16, April, 2019 08:28

Здравствуйте, уважаемые знатоки. Помогите пожалуйста организовать вывод подполя из повторения 51 поля , выбранного по условию. Например при повторениях 20190202^cф1
20181121^cф3...
Формула if |v51.8>='20190101' and v51.8<='20190331' then v51^c fi
Выдаёт ф1ф3 вместо ф1.символ | (одного повторения) пробовала ставить перед if -результат тот же. Подскажите пожалуйста корректную формулу вывода . спасибо

Re: unifor 95 и повторения поля
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 16, April, 2019 08:50

так как поле 51 у вас повторяющиеся,то

условие свободного поиска

|51 val(v51.8)>=20190101 and val(v51.8)<=20190331

а для вывода в формате

(if p(v51) then if val(v51.8)>=20190101 and val(v51.8)<=20190331 then v51^c fi fi)

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Re: unifor 95 и повторения поля
Пользователь: Tamara (IP-адрес скрыт)
Дата: 16, April, 2019 13:54

Спасибо большое ,Вы очень помогли!



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