UNIFOR — различия между версиями
Sokv (обсуждение | вклад) |
Sokv (обсуждение | вклад) (→Функции для работы с датой и временем) |
||
(не показано 98 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
− | UNIFOR – | + | UNIFOR – [[Язык форматирования системы ИРБИС#Форматные выходы. UNIFOR|''форматный выход'']], реализующий множество функций вне базовых рамок [[Язык форматирования системы ИРБИС|языка форматирования]]. |
+ | |||
+ | В статье для удобства перечень форматных выходов UNIFOR разбит на категории. | ||
==Использование UNIFOR== | ==Использование UNIFOR== | ||
− | + | UNIFOR имеет следующий синтаксис в языке форматирования (в полной или сокращённой форме): | |
&unifor(формат) | &unifor(формат) | ||
&uf(формат) | &uf(формат) | ||
где: | где: | ||
− | * '''<tt>&</tt>''' – идентификатор вызова | + | * '''<tt>&</tt>''' – идентификатор вызова форматного выхода, |
− | * '''<tt>unifor</tt>''' – имя | + | * '''<tt>unifor</tt>''' – имя форматного выхода (соответственно '''<tt>uf</tt>''' – сокращённое имя), |
* '''<tt>формат</tt>''' – аргумент. | * '''<tt>формат</tt>''' – аргумент. | ||
− | Рекомендуется использовать сокращённую форму вызова | + | Рекомендуется использовать сокращённую форму вызова UNIFOR. Сокращённая форма по действию ничем не отличается от полной формы, зато позволяет сократить размер формата и повысить его читаемость. |
+ | |||
+ | Вид реализуемой функции определяется первыми символами строки, которая формируется в результате выполнения формата, передаваемого в качестве аргумента. | ||
+ | |||
+ | ===Передача параметров=== | ||
+ | |||
+ | Во многих функциях, которые позволяет реализовать форматный выход UNIFOR, для передачи параметра неизвестной длины используется уникальный разделитель. Значение параметра должно быть окружено таким уникальным разделителем слева и справа. | ||
− | + | Например, если исходная строка | |
+ | !AAAA!BBBB | ||
+ | то в качестве уникального разделителя выступает символ | ||
+ | ! | ||
+ | значение параметра | ||
+ | AAAA | ||
+ | а оставшаяся часть исходной строки | ||
+ | BBBB | ||
− | ==Перечень функций | + | ==Перечень функций UNIFOR с примерами их применения== |
===Функции для обработки строк=== | ===Функции для обработки строк=== | ||
Строка 22: | Строка 37: | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name= | + | |name=+95 |
− | |title=Вернуть часть строки | + | |title=Вернуть длину исходной строки |
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +95<строка> | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+96 | ||
+ | |title=Вернуть часть строки | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
|sectionLevel====== | |sectionLevel====== | ||
}} | }} | ||
− | + | +96A*SSS.NNN#<строка> | |
где: | где: | ||
− | * | + | * A – направление: 0 – с начала строки; 1 – с конца; |
− | * | + | * SSS – смещение; |
+ | * NNN – кол-во символов. | ||
'''Примеры:''' | '''Примеры:''' | ||
− | & | + | &uf('+960*0.4#'v100) |
− | & | + | &uf('+960*5.4#'v100) |
+ | &uf('+961*0.4#'v100) | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
Строка 46: | Строка 75: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor("Q"v200) | &unifor("Q"v200) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+97 | ||
+ | |title=Вернуть заданную строку в верхнем регистре | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +97<строка> | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+98 | ||
+ | |title=Заменить в заданной строке один символ на другой | ||
+ | |description=Заменить в заданной строке один символ на другой (регистр учитывается) | ||
+ | |versionFilename=RELEASE_7_2.doc | ||
+ | |versionText=2007.2 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +98ab<строка> | ||
+ | где: | ||
+ | * a – заменяемый символ; | ||
+ | * b – заменяющий символ. | ||
+ | |||
+ | '''Примеры:''' | ||
+ | |||
+ | В результате выполнения формата | ||
+ | &uf('+98 0',f(1,5,0)) | ||
+ | получится значение | ||
+ | 00001 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9F | ||
+ | |title=Вернуть ANSI-символ с заданным кодом | ||
+ | |versionFilename=RELEASE_8_1.doc | ||
+ | |versionText=2008.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +9F<код> | ||
+ | |||
+ | '''Примеры:''' | ||
+ | |||
+ | Такой форматный выход может пригодиться, например, когда надо вывести в литерале символ, совпадающий с ограничителями литерала. | ||
+ | |||
+ | Для формата | ||
+ | |||
+ | '11111',&Uf('+9F39'),'22222' | ||
+ | |||
+ | результат расформатирования будет | ||
+ | |||
+ | 11111'22222 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9I | ||
+ | |title=Заменить в исходных данных некоторую заданную последовательность символов другой заданной последовательностью символов | ||
+ | |versionFilename=RELEASE_9_1.doc | ||
+ | |versionText=2009.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +9I!AAAA!/BBBB/<данные> | ||
+ | где <tt>АААА</tt> – последовательность символов, подлежащая замене; <tt>ВВВВ</tt> – заменяющая последовательность символов; символ <tt>!</tt> – уникальный разделитель, отсутствующий в строке <tt>АААА</tt>; символ <tt>/</tt> – уникальный разделитель, отсутствующий в строке <tt>ВВВВ</tt>. <tt>ВВВВ</tt> может быть пустым значением, в этом случае последовательность <tt>АААА</tt> будет удаляться. Обрабатываются ВСЕ (а не только первое) вхождения <tt>АААА</tt> в исходные данные. В качестве разделителей можно использовать ТОЛЬКО символы стандартного набора (с кодом менее 128). | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9S | ||
+ | |title=Найти подстроку | ||
+ | |description=Возвращает позицию первого символа найденного вхождения подстроки в исходную строку. Считается, что символы в строке нумеруются с 1. Если подстрока не найдена, то возвращает 0. ''Комментарий: следует отметить, что в функции {{Описание функции UNIFOR (ссылка)|name=+96|title=Вернуть часть строки}} указывают смещение, а не позицию символа'' | ||
+ | |versionFilename=RELEASE_13_1.doc | ||
+ | |versionText=2013.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +9S!подстрока!<исходная_строка> | ||
+ | где <tt>подстрока</tt> – подстрока, которую нужно найти; <tt><исходная_строка></tt> – исходная строка для поиска; символ <tt>!</tt> – уникальный разделитель, отсутствующий в искомой подстроке. | ||
====Функции для работы со словами==== | ====Функции для работы со словами==== | ||
Строка 73: | Строка 178: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor("F3"v200^a) | &unifor("F3"v200^a) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9G | ||
+ | |title=Преобразовать заданную строку в список слов | ||
+ | |versionFilename=RELEASE_8_1.doc | ||
+ | |versionText=2008.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +9G<строка> | ||
+ | |||
+ | Границы слов определяются на основе [[Файлы ИРБИС#Таблица алфавитных символов|таблицы алфавитных символов]]. | ||
====Дополнительные функции для обработки строк==== | ====Дополнительные функции для обработки строк==== | ||
Строка 79: | Строка 196: | ||
|name=+3E | |name=+3E | ||
|title=Кодирование данных для представления в URL | |title=Кодирование данных для представления в URL | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
|sectionLevel====== | |sectionLevel====== | ||
}} | }} | ||
Строка 90: | Строка 209: | ||
|name=+3D | |name=+3D | ||
|title=Декодирование данных из URL | |title=Декодирование данных из URL | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
|sectionLevel====== | |sectionLevel====== | ||
}} | }} | ||
+3D<данные> | +3D<данные> | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+3+ | ||
+ | |title=Перевод знака <tt>+</tt> в <tt>%2B</tt> | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +3+<данные> | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+3U | ||
+ | |title=Кодирование строки в UTF-8 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +3U<данные> | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+3W | ||
+ | |title=Декодирование строки из UTF-8 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +3W<данные> | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
Строка 106: | Строка 251: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor("T0"V200) | &unifor("T0"V200) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=G | ||
+ | |title=Вернуть часть строки до или начиная с заданного символа | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | GNA<строка> | ||
+ | где: | ||
+ | * N может принимать значения: | ||
+ | ** 0 (или A) – до заданного символа не включая его; | ||
+ | ** 1 (или B) – начиная с заданного символа; | ||
+ | ** 2 (или C) – после заданного символа; | ||
+ | ** 3 (или D) – после последнего вхождения заданного символа; | ||
+ | ** 4 (или E) – до последнего вхождения заданного символа (включая его); | ||
+ | ** 5 – до последнего вхождения заданного символа (не включая его). | ||
+ | * А – заданный символ. Символ обозначает самого себя, кроме # (обозначает любую цифру) и $ (обозначает любую букву). | ||
+ | |||
+ | ''Примечание: функция G5 присутствует в версиях ИРБИС с {{Ссылка на открытый FTP | ||
+ | |filename=RELEASE_15_1.doc | ||
+ | |text=2015.1 | ||
+ | }}.'' | ||
+ | |||
+ | '''Примеры:''' | ||
+ | &unifor("G0#"v700) | ||
+ | &unifor("G1-"v700^a) | ||
+ | &unifor("G2-"v700^a) | ||
+ | |||
+ | Пример получения ссылки на файл из подполя 952^U полнотекстовой БД для файлов, добавленных с разбиением и без | ||
+ | &uf('G0:',&uf('G4:',&uf('G2:',&uf('G2:',v952^U)))) | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
Строка 128: | Строка 303: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor("X"v200) | &unifor("X"v200) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+S | ||
+ | |title=<nowiki>Выводит нужную часть текста (до знака "=", или после него) в заголовках, описанных по принципу <NNN=KKK></nowiki> | ||
+ | |versionText=не установленно, предположительно давно | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +SN[строка] | ||
+ | где N может принимать значения 0 для вывода текста после знака "=", и 1 для вывода текста перед знаком "=". | ||
+ | |||
+ | Выдержка из документации (см. {{Ссылка на открытый FTP|filename=RELEASE_2_2.doc|text=Файл описания релиза 2002.2}} | ||
+ | и [http://nucleonics.fatal.ru/irbis/irbishelp.html?wci004010200000.htm документацию на http://nucleonics.fatal.ru]): | ||
+ | * Для книг, описанных «Под заглавием», которые начинаются с числительного, обозначенного цифрами, начальный элемент сортировки и авторский знак должны формироваться по словесному обозначению числительного. В связи с этим Пользователь должен ввести дополнительную разметку типа <NNN=Текст>, где «Текст», стоящий после знака «=», — это словесное значение числительного NNN, используемое взамен его для формирования авторского знака и/или в качестве начального элемента сортировки. Например, заглавие 1000 и одна ночь, размеченное как <1000=тысяча> и одна ночь, для формирования авторского знака и сортировки будет представлено как «тысяча и одна ночь», а для печати как «1000 и одна ночь». | ||
+ | * Для биографических и биобиблиографических изданий, описанных под заглавием, начинающимся с имени лица, которому оно посвящено, авторский знак и начальный элемент сортировки должны формироваться на фамилию. В связи с этим Пользователь также должен ввести дополнительную разметку типа <AAA=Текст>, где «Текст», стоя-щий после знака «=», — это фамилия, используемая (взамен части ААА) для формирования авторского знака и/или начального элемента сортировки. Например, заглавие Антон Павлович Чехов может быть размечено как <Антон Павлович Чехов=Чехов Антон Павлович> (в сортировку пойдет «Чехов Антон Павлович», на печать «Антон Павлович Чехов»). Заметим, что разметка типа <Антон=Чехов> Павлович Чехов даст правильный авторский знак (Чехов Павлович Чехов), но может дать ошибки в сортировке. | ||
+ | |||
+ | '''Примеры:''' | ||
+ | |||
+ | Пример входной строки: | ||
+ | |||
+ | <1=Первое> апреля | ||
+ | |||
+ | Примеры использования функции: | ||
+ | |||
+ | &uf('+s0'v200^a) | ||
+ | &uf('+s1'v200^a) | ||
+ | |||
+ | Пример расформатирования: | ||
+ | |||
+ | Первое апреля | ||
+ | 1 апреля | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name== | ||
+ | |title=Сравнить заданное значение с маской | ||
+ | |description=Возвращаемое значение: 1 – в случае положительного результата сравнения; 0 – в случае отрицательного | ||
+ | |versionFilename=RELEASE_8_1.doc | ||
+ | |versionText=2008.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | =!<маска>!<значение> | ||
+ | |||
+ | <tt>!</tt> – уникальный разделитель (может быть любым символом). Маска может содержать принятые символы маскирования <tt>*</tt> и <tt>?</tt>. В общем случае маска может содержать несколько масок, отделенных друг от друга символом вертикальной черты <tt>|</tt>. | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+\ | ||
+ | |title=Преобразование строки, удваивающее обратный слэш, или обратное | ||
+ | |description=Преобразование строки, удваивающее обратный слэш, или обратное | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +\N<строка> | ||
+ | |||
+ | где: | ||
+ | * N может принимать значения | ||
+ | ** 0 - удвоение знаков обратного слэш; | ||
+ | ** 1 - преобразование удвоенных знаков слэш в одинарные. | ||
+ | |||
+ | '''Примеры:''' | ||
+ | |||
+ | Результатом формата | ||
+ | &uf('+\0c:\example.txt') | ||
+ | будет строка | ||
+ | c:\\example.txt | ||
+ | |||
+ | Результатом формата | ||
+ | &uf('+\1c:\\example.txt') | ||
+ | будет строка | ||
+ | c:\example.txt | ||
+ | |||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+R | ||
+ | |title=Усекает строку справа до точки. Используется для отсечения одного уровня в рубриках ГРНТИ | ||
+ | |description=Усечение кода рубрики в рубрикаторе ГРНТИ до вышестоящего | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +\R<строка> | ||
+ | |||
+ | '''Примеры:''' | ||
+ | |||
+ | формат | ||
+ | &unifor("+R"v3) | ||
+ | исходная строка | ||
+ | 02.61.45 | ||
+ | результирующая строка | ||
+ | 02.61 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9R | ||
+ | |title=Преобразование римского числа в арабское | ||
+ | |versionFilename=RELEASE_11_1.doc | ||
+ | |versionText=2011.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +9R<римское_число> | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9X | ||
+ | |title=Преобразование арабского числа в римское | ||
+ | |versionFilename=RELEASE_11_1.doc | ||
+ | |versionText=2011.1 | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | +9X<арабское_число> | ||
===Функции для работы с датой и временем=== | ===Функции для работы с датой и временем=== | ||
Строка 138: | Строка 422: | ||
Имеются следующие подфункции: | Имеются следующие подфункции: | ||
− | * '''<tt>3</tt>''' – выдать текущую дату в виде ГГГГММДД. | + | * '''<tt>3</tt>''' – выдать текущую дату в виде ГГГГММДД. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>30</tt>''' – выдать текущий год в виде ГГГГ. | + | * '''<tt>30</tt>''' – выдать текущий год в виде ГГГГ. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>31</tt>''' – выдать текущий месяц в виде ММ (с лидирующим нулем). | + | * '''<tt>31</tt>''' – выдать текущий месяц в виде ММ (с лидирующим нулем). ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>32</tt>''' – выдать текущий день в виде ДД (с лидирующим нулем). | + | * '''<tt>32</tt>''' – выдать текущий день в виде ДД (с лидирующим нулем). ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>33</tt>''' – выдать текущий год в виде ГГ. | + | * '''<tt>33</tt>''' – выдать текущий год в виде ГГ. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>34</tt>''' – выдать текущий месяц в виде М (без лидирующего нуля). | + | * '''<tt>34</tt>''' – выдать текущий месяц в виде М (без лидирующего нуля). ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>35</tt>''' – выдать текущий день в виде Д (без лидирующего нуля). | + | * '''<tt>35</tt>''' – выдать текущий день в виде Д (без лидирующего нуля). ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>36MM</tt>''' – выдать по заданному номеру месяца его название на русском языке в именительном падеже. | + | * '''<tt>36MM</tt>''' – выдать по заданному номеру месяца его название на русском языке в именительном падеже. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>37MM</tt>''' – выдать по заданному номеру месяца его название на русском языке в родительном падеже. | + | * '''<tt>37MM</tt>''' – выдать по заданному номеру месяца его название на русском языке в родительном падеже. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>38MM</tt>''' – выдать по заданному номеру месяца его название на английском языке. | + | * '''<tt>38MM</tt>''' – выдать по заданному номеру месяца его название на английском языке. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>39</tt>''' – выдать текущее время. | + | * '''<tt>39</tt>''' – выдать текущее время. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>3А</tt>''' – выдать номер текущего дня от начала года. | + | * '''<tt>3А</tt>''' – НЕ РЕАЛИЗОВАН. ''<small>По сведениям об имеющихся когда то реализациях - выдать номер текущего дня от начала года. Предположительно, мог присутствовать в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_4_1.doc|text=2004.1}}.</small>'' |
− | * '''<tt>3BГГГГММДД/ддд</tt>''' – прибавить/вычесть из заданной даты в виде ГГГГММДД заданное количество дней (ддд – | + | * '''<tt>3BГГГГММДД/ддд</tt>''' – прибавить/вычесть из заданной даты в виде ГГГГММДД заданное количество дней (ддд – может быть отрицательным) и вернуть полученную дату в виде ГГГГММДД. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_7_2.doc|text=2007.2}}.</small>'' |
− | * '''<tt> | + | * '''<tt>3CГГГГММДД/ГГГГММДД</tt>''' – вычесть из одной даты в виде ГГГГММДД другую дату в виде ГГГГММДД и вернуть разницу в виде количества дней. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_7_2.doc|text=2007.2}}.</small>'' |
+ | * '''<tt>3JГГГГММДД</tt>''' – переводит заданную юлианскую дату ГГГГММДД в грегорианскую. ''<small>Присутствует в версиях ИРБИС с {{Ссылка на открытый FTP|filename=RELEASE_9_1.doc|text=2009.1}}.</small>'' | ||
'''Примеры:''' | '''Примеры:''' | ||
+ | |||
&unifor('36',&unifor('34')) | &unifor('36',&unifor('34')) | ||
+ | |||
+ | Вычесть из текущей даты сто дней: | ||
+ | &uf('3B',&uf('3'),'/-100') | ||
+ | |||
+ | Количество дней с 1 января 1900 года до сегодняшнего дня: | ||
+ | &uf('3C',&uf('3'),'/19000101') | ||
===Функции для работы с глобальными переменными=== | ===Функции для работы с глобальными переменными=== | ||
+ | |||
+ | Дополнительно о глобальных переменных см. [[Язык форматирования системы ИРБИС#Глобальные переменные|в подразделе ''Глобальные переменные'' статьи ''Язык форматирования системы ИРБИС'']]. | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
|name=+7 | |name=+7 | ||
|title=Очистить (опустошить) все глобальные переменные | |title=Очистить (опустошить) все глобальные переменные | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 171: | Строка 467: | ||
|name=+7R | |name=+7R | ||
|title=Чтение глобальной переменной | |title=Чтение глобальной переменной | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 187: | Строка 485: | ||
|name=+7W | |name=+7W | ||
|title=Запись глобальной переменной | |title=Запись глобальной переменной | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 200: | Строка 500: | ||
|name=+7U | |name=+7U | ||
|title=Добавление повторений глобальной переменной | |title=Добавление повторений глобальной переменной | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 210: | Строка 512: | ||
|name=+7M | |name=+7M | ||
|title=Логическое перемножение повторений двух переменных | |title=Логическое перемножение повторений двух переменных | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 218: | Строка 522: | ||
|name=+7S | |name=+7S | ||
|title=Логическое вычитание повторений двух переменных | |title=Логическое вычитание повторений двух переменных | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 226: | Строка 532: | ||
|name=+7A | |name=+7A | ||
|title=Логическое сложение повторений двух переменных | |title=Логическое сложение повторений двух переменных | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 234: | Строка 542: | ||
|name=+7G | |name=+7G | ||
|title=Исключение неоригинальных повторений переменной | |title=Исключение неоригинальных повторений переменной | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 242: | Строка 552: | ||
|name=+7T | |name=+7T | ||
|title=Сортировка повторений переменной | |title=Сортировка повторений переменной | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 248: | Строка 560: | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name=+ | + | |name=+99 |
− | |title= | + | |title=Групповая установка глобальных переменных |
+ | |description=Групповая установка глобальных переменных. Применяется для ИРБИС-Навигатора. Исходная строка закодирована с помощью URL-кодировки. После раскодировки рассматривается как список строк (аналогично <tt>TStringList.Text</tt> в Delphi). Каждая строка этого списка имеет структуру: <tt>NNN#<значение_глобальной_переменной_NNN><tt> | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
}} | }} | ||
− | + | + | +99 |
− | + | ===Функции для работы с базой данных=== | |
− | |||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name= | + | |name=0 |
− | |title= | + | |title=Выдать содержимое документа полностью в формате RTF |
+ | |description=Выдать содержимое документа полностью (формат ALLl) | ||
}} | }} | ||
− | + | 0 | |
− | |||
− | |||
− | |||
− | |||
− | |||
'''Примеры:''' | '''Примеры:''' | ||
− | &unifor(' | + | &unifor('0') |
− | + | '''Результат расформатирования:''' | |
− | + | \b #910/1:_\b0 ^YДА^PНЮАУ - каф. кримінального права\par \b #920/1:_\b0 ATHRA\par \b #210/1:_\b0 ^AТацій^BВ. Я.^GВасиль Якович^8ukr\par \b #710/1:_\b0 ^AТаций^BВ. Я.^GВасилий Яковлевич^8rus\par \b #907/1:_\b0 ^A20110301^B111\par \b #907/2:_\b0 ^A20110419^BZhukovskaya\par \b #710/2:_\b0 ^ATatsiy^BV.^8eng\par \b #907/3:_\b0 ^A20110421^BZhukovskaya\par \b #907/4:_\b0 ^A20111108^B111\par | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name=+ | + | |name=+0 |
− | |title= | + | |title=Выдать содержимое документа полностью во внутреннем представлении |
+ | |description=Выдать содержимое документа полностью (формат ALLl) | ||
}} | }} | ||
+ | +0 | ||
− | + | '''Результат расформатирования:''' | |
− | + | 0 | |
− | + | 2#0 | |
− | + | 0#1 | |
− | + | 910#^YДА^PНЮАУ - каф. кримінального права | |
− | + | 920#ATHRA | |
− | + | 210#^AТацій^BВ. Я.^GВасиль Якович^8ukr | |
+ | 710#^AТаций^BВ. Я.^GВасилий Яковлевич^8rus | ||
+ | 907#^A20110301^B111 | ||
+ | 907#^A20110419^BZhukovskaya | ||
+ | 710#^ATatsiy^BV.^8eng | ||
+ | 907#^A20110421^BZhukovskaya | ||
+ | 907#^A20111108^B111 | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name=+ | + | |name=++0 |
− | + | |title=Выдать содержимое документа полностью – только содержимое полей | |
− | + | |description=Выдать содержимое документа полностью (формат ALLl) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |title= | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}} | }} | ||
− | + | ++0 | |
− | + | ||
− | |||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name=+ | + | |name=+@ |
− | |title= | + | |title=Выдать содержимое документа полностью в формате JSON |
− | | | + | |versionFilename=RELEASE_2014_1.doc |
+ | |versionText=2014.1 | ||
+ | |sectionLevel===== | ||
}} | }} | ||
− | + | +@ | |
− | + | ||
− | |||
− | |||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name= | + | |name=+N |
− | |title=Выдать | + | |title=Выдать количество повторений поля |
− | |description=Выдать | + | |description=Выдать количество повторений поля, метка которого указана после идентификатора функции |
}} | }} | ||
− | + | +N | |
'''Примеры:''' | '''Примеры:''' | ||
− | &unifor(' | + | &unifor('+N910') |
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
Строка 384: | Строка 657: | ||
|exampleSeeAlsoTitle=Выдать заданное повторение поля | |exampleSeeAlsoTitle=Выдать заданное повторение поля | ||
}} | }} | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+E | ||
+ | |title=Возвращает порядковый номер заданного поля в записи | ||
+ | |description=Возвращает порядковый номер заданного поля в записи. При отсутствии в записи заданного поля возвращается пустота | ||
+ | |versionFilename=RELEASE_9_1.doc | ||
+ | |versionText=2009.1 | ||
+ | }} | ||
+ | |||
+ | +Etag#occ | ||
+ | где: | ||
+ | * tag – метка поля; | ||
+ | * occ – номер повторения поля (по умолчанию – 1). Может принимать значение <tt>*</tt> – это означает номер текущего повторения в повторяющейся группе. | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
|name=K | |name=K | ||
− | |title=Раскодировка через справочник ( | + | |title=Раскодировка через справочник |
+ | |description=Возвращает значение из справочника, соответствующее переданному коду (иными словами, осуществляется раскодировка) | ||
}} | }} | ||
− | K< | + | K<имя_справочника><разделитель><исх_значение> |
+ | |||
+ | <разделитель> между <имя_справочника> и <исх_значение> может быть двух видов: | ||
+ | \ - раскодировка с учетом регистра, | ||
+ | ! - раскодировка без учета регистра. | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor("Kjz.mnu\"v101) | &unifor("Kjz.mnu\"v101) | ||
+ | &uf('kFIO_SF.MNU!'&uf('av907^b#1')) | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
Строка 452: | Строка 744: | ||
|title=Расформатирование группы связанных документов из другой БД | |title=Расформатирование группы связанных документов из другой БД | ||
|description=Расформатирование группы связанных документов из другой БД (отношение «от одного к многим») | |description=Расформатирование группы связанных документов из другой БД (отношение «от одного к многим») | ||
+ | Функция обеспечивает возможность связать запись с рядом других записей по какому бы то ни было общему признаку. К примеру, можно отобрать все записи с определенным заглавие, индексом УДК/ББК, ключевым словом. | ||
+ | |versionFilename=RELEASE_4_1.doc | ||
+ | |versionText=2004.1 | ||
}} | }} | ||
Строка 462: | Строка 757: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor('7TEST,',"/T="v200^a"/",',v903"\par "') | &unifor('7TEST,',"/T="v200^a"/",',v903"\par "') | ||
+ | |||
+ | &uf(|7EK,!FAK=23.01!,&uf('av907^A#1'),&uf('6brief')/|d90), | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
Строка 467: | Строка 764: | ||
|title=Команда постредактуры: очистить результат расформатирования от двойных разделителей | |title=Команда постредактуры: очистить результат расформатирования от двойных разделителей | ||
|description=Команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. – >). Имеет смысл использовать один раз в любом месте формата | |description=Команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. – >). Имеет смысл использовать один раз в любом месте формата | ||
+ | |versionFilename=RELEASE_4_1.doc | ||
+ | |versionText=2004.1 | ||
}} | }} | ||
Строка 478: | Строка 777: | ||
|title=Команда постредактуры: очистить результат расформатирования от RTF-конструкций | |title=Команда постредактуры: очистить результат расформатирования от RTF-конструкций | ||
|description=Команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата | |description=Команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата | ||
+ | |versionFilename=RELEASE_4_1.doc | ||
+ | |versionText=2004.1 | ||
}} | }} | ||
Строка 517: | Строка 818: | ||
|name=+I | |name=+I | ||
|title=Формирования ссылки (гиперссылки) | |title=Формирования ссылки (гиперссылки) | ||
+ | |versionFilename=RELEASE_4_1.doc | ||
+ | |versionText=2004.1 | ||
}} | }} | ||
Строка 541: | Строка 844: | ||
&unifor('+I?0,,'v951^i'?',v951^t,|INTERNET|n951^t) | &unifor('+I?0,,'v951^i'?',v951^t,|INTERNET|n951^t) | ||
&unifor(|+I?1,,,,I=|v421^w|?|,v421^a) | &unifor(|+I?1,,,,I=|v421^w|?|,v421^a) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+6 | ||
+ | |title=Выдать статус записи | ||
+ | |description=Выдать статус записи. Если запись логически удаленная, возвращается 0, в противном случае – 1 | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
+ | }} | ||
+ | |||
+ | +6 | ||
+ | |||
+ | '''Примеры:''' | ||
+ | … if &unifor('+6')='0' then 'запись логически удаленная' fi … | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+D | ||
+ | |title=Выдать имя базы данных | ||
+ | |description=Возвращает имя текущей базы данных | ||
+ | }} | ||
+ | |||
+ | +D | ||
+ | |||
+ | '''Примеры:''' | ||
+ | … &unifor('+D') … | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=2 | ||
+ | |title=Вернуть последний номер MFN в базе +1 | ||
+ | |description=Возвращает последний номер MFN в текущей базе данных, увеличенный на единицу (MAX_MFN) + 1). В общем случае параметр имеет вид 2N, где N - выводимое количество символов, обрезанное до необходимой длинны справа. | ||
+ | }} | ||
+ | |||
+ | '''Пример:''' | ||
+ | &unifor('2'), &unifor('27') | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9V | ||
+ | |title=Вернуть номер поколения ИРБИС | ||
+ | |description=Возвращает поколение системы, в которой осуществляется расформатирование. Может быть полезен при разработке единых форматов, которые по-разному выполняются в ИРБИС 32 и ИРБИС 64 | ||
+ | |versionFilename=RELEASE_11_1.doc | ||
+ | |versionText=2011.1 | ||
+ | }} | ||
+ | |||
+ | +9V | ||
+ | который возвращает: | ||
+ | * 32 – если форматирование выполняется в ИРБИС 32; | ||
+ | * 64 – если в ИРБИС 64 (и ИРБИС 128). | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=4N | ||
+ | |title=Форматировать предыдущую копию текущей записи | ||
+ | |versionFilename=RELEASE_11_1.doc | ||
+ | |versionText=2011.1 | ||
+ | }} | ||
+ | |||
+ | 4N,Format | ||
+ | где: | ||
+ | * <tt>N</tt> – номер копии (в обратном порядке, т.е. если N=1 – это один шаг назад, N=2 – два шага назад и т.д.). Может принимать значение * – это указывает на последнюю копию. Если N – пустое значение, то в случае повторяющейся группы в качестве значения N берется НОМЕР ТЕКУЩЕГО ПОВТОРЕНИЯ, в противном случае берется первая копия; | ||
+ | * <tt>Format</tt> – формат; может задаваться непосредственно или в виде @имя_формата. | ||
+ | |||
+ | Если не задается ни <tt>N</tt> ни <tt>Format</tt>, т.е. &unifor('4'), то возвращается количество предыдущих копий. | ||
+ | Если запись не имеет предыдущих копий, то &unifor('4') возвращает 0, а все остальные конструкции &unifor('4...') возвращают пустоту. | ||
+ | |||
+ | '''Примеры:''' | ||
+ | &unifor('41,@brief') | ||
+ | (...&unifor('4,v200^a')...) | ||
+ | &unifor('4*,(v910/)') | ||
+ | |||
+ | Примечание: в связи с этим см. также новую команду глобальной корректировки – ВОССТАНОВИТЬ ПРЕДЫДУЩУЮ КОПИЮ. | ||
+ | |||
+ | ===Функции для работы с повторяющимися группами=== | ||
+ | |||
+ | Дополнительно о повторяющихся группах см. [[Язык форматирования системы ИРБИС#Повторяющиеся группы|в подразделе ''Повторяющиеся группы'' статьи ''Язык форматирования системы ИРБИС'']]. | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
|name=+4 | |name=+4 | ||
|title=Выдача метки, порядкового номера и значения поля в соответствии с индексом (номером повторения) повторяющейся группы | |title=Выдача метки, порядкового номера и значения поля в соответствии с индексом (номером повторения) повторяющейся группы | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 558: | Строка 935: | ||
|name=+5 | |name=+5 | ||
|title=Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы | |title=Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы | ||
+ | |versionFilename=RELEASE_5_2.doc | ||
+ | |versionText=2005.2 | ||
}} | }} | ||
Строка 569: | Строка 948: | ||
|name=+90 | |name=+90 | ||
|title=Вернуть номер текущего повторения в повторяющейся группе | |title=Вернуть номер текущего повторения в повторяющейся группе | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
}} | }} | ||
+90 | +90 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Функции для работы с базой данных электронного каталога=== | ===Функции для работы с базой данных электронного каталога=== | ||
Строка 657: | Строка 1027: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor("W12,"v909^h) | &unifor("W12,"v909^h) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=O | ||
+ | |title=Вывод сведений о всех экземплярах по всем местам хранения | ||
+ | }} | ||
+ | |||
+ | '''Пример:''' | ||
+ | &unifor('O') | ||
+ | |||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=Y | ||
+ | |title=Возвращает данные о всех свободных (не выданных) экземплярах по всем местах хранения | ||
+ | }} | ||
+ | |||
+ | '''Пример:''' | ||
+ | &unifor('Y') | ||
+ | |||
+ | ===Функции для работы с файлами=== | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+91 | ||
+ | |title=Вернуть имя файла из заданного полного пути/имени | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | }} | ||
+ | |||
+ | +91 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+92 | ||
+ | |title=Вернуть путь из заданного полного пути/имени | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | }} | ||
+ | |||
+ | +92 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+93 | ||
+ | |title=Вернуть расширение из заданного полного пути/имени | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | }} | ||
+ | |||
+ | +93 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+94 | ||
+ | |title=Вернуть имя диска из заданного полного пути/имени | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | }} | ||
+ | |||
+ | +94 | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9L | ||
+ | |title=Проверить наличие файла/корректность URL | ||
+ | |versionFilename=RELEASE_13_1.doc | ||
+ | |versionText=2013.1 | ||
+ | }} | ||
+ | |||
+ | +9L<path>,<dbname>,<filename> | ||
+ | где: | ||
+ | * <tt><path></tt> – определяет путь к файлу и принимает значения: <tt>0</tt> – папка, в которой установлена серверная часть ИРБИС (<tt><IRBIS_SERVER_ROOT></tt>); <tt>1</tt> – общая директория баз данных (по умолчанию <tt><IRBIS_SERVER_ROOT>\DATAI</tt>); <tt>2,3,10</tt> – папка БД <dbname>; <tt>11</tt> – абсолютный путь/URL. | ||
+ | * <tt><dbname></tt> – имя БД (имеет смысл только при <tt>path=2,3,10</tt>). | ||
+ | * <tt><filename></tt> – путь и имя файла или URL. | ||
+ | |||
+ | Функция возвращает: | ||
+ | 0 – если файл отсутствует/некорректный URL; | ||
+ | 1 – если файл присутствует/корректный URL. | ||
+ | |||
+ | '''Примеры:''' | ||
+ | &uf('+9L1,,\deposit\rksu.fst') | ||
+ | (....&uf('+9L10,',&uf('+D'),',',v951^A)....) | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9C | ||
+ | |title=Вставить данные из заданного текстового файла | ||
+ | }} | ||
+ | |||
+ | +9С<path>,<dbname>,<filename> | ||
+ | где: | ||
+ | * <tt><path></tt> – определяет путь к файлу и принимает значения: <tt>0</tt> – основная директория системы (для ИРБИС32 – та, где находятся исполняемые модули; для ИРБИС64 – та, где находятся исполняемые модули сервера); <tt>1</tt> – общая директория баз данных (по умолчанию \DATAI); <tt>10</tt> – директория конкретной БД; | ||
+ | * <tt><dbname></tt> – имя БД (имеет смысл только при <tt>path=10</tt>). По умолчанию – предполагается текущая БД; | ||
+ | * <tt><filename></tt> – имя файла; | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9A | ||
+ | |title=Вернуть размер файла в байтах. | ||
+ | }} | ||
+ | |||
+ | +9A | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9D | ||
+ | |title=Сохранить заданный внутренний двоичный объект в заданном файле | ||
+ | |versionFilename=RELEASE_6_2.doc | ||
+ | |versionText=2006.2 | ||
+ | }} | ||
+ | |||
+ | +9DNN#<полный путь> | ||
+ | где <tt>NN</tt> – номер внутреннего двоичного объекта. | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9J | ||
+ | |title=Представить заданный двоичный файл в кодированном виде | ||
+ | |description=Представить заданный двоичный файл в виде: <tt>^A<тип_файла>^B<данные файла перекодированные на основе URLEncode></tt> | ||
+ | |versionFilename=RELEASE_10_1.doc | ||
+ | |versionText=2010.1 | ||
+ | }} | ||
+ | |||
+ | +9J<полный путь и имя файла> | ||
+ | |||
+ | Имя файла может задаваться в виде маски, в этом случае использоваться будет первый найденный соответствующей маске файл. | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+9K | ||
+ | |title=Удалить заданный файл | ||
+ | |description=Удалить заданный файл. Если имя файла задано в виде маски, то удаляться будут все соответствующие маске файлы | ||
+ | |versionFilename=RELEASE_10_1.doc | ||
+ | |versionText=2010.1 | ||
+ | }} | ||
+ | |||
+ | +9K<полный путь и имя файла> | ||
===Функции, используемые только в глобальной корректировке=== | ===Функции, используемые только в глобальной корректировке=== | ||
Строка 685: | Строка 1181: | ||
'''Примеры:''' | '''Примеры:''' | ||
&unifor('MI910^BD') | &unifor('MI910^BD') | ||
+ | |||
+ | ===Выполнить внешнюю программу=== | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=6 | ||
+ | |title=Выполнить формат | ||
+ | }} | ||
+ | |||
+ | 6<имя файла формата> | ||
+ | где <tt><имя файла формата></tt> – имя [[Язык форматирования системы ИРБИС#Понятие формата|файла формата]], указывается без расширения. Файл формата будет найден по заданному имени, обязательному расширению <tt>.pft</tt> и местоположению: в [[Файлы ИРБИС#Файлы баз данных ИРБИС|папке базы данных]], а если там нет, то в папке [[Файлы ИРБИС#Основные обозначения|<tt><IRBIS_SERVER_ROOT>\Deposit</tt>]]. | ||
+ | |||
+ | Подробнее о выполнении файла формата см. в [[Язык форматирования системы ИРБИС#Выполнение файла формата|Подразделе ''Язык форматирования системы ИРБИС'' статьи ''Выполнение файла формата'']]. | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+2 | ||
+ | |title=Выполнить внешнее приложение | ||
+ | |description=Выполняет внешнее приложение. Всё, что после +2 – параметры командной строки. | ||
+ | }} | ||
+ | |||
+ | '''Примеры:''' | ||
+ | &unifor('+2cmd') | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+8 | ||
+ | |title=Вызвать функцию из внешней DLL | ||
+ | |versionFilename=RELEASE_6_1.doc | ||
+ | |versionText=2006.1 | ||
+ | }} | ||
+ | |||
+ | +8<имя_DLL>,<имя_функции>,<передаваемые_данные> | ||
+ | |||
+ | Внешние функции должны ОБЯЗАТЕЛЬНО иметь следующую структуру: | ||
+ | |||
+ | * в случае Pascal | ||
+ | test_function1(buf1,buf2: Pchar; bufsize: integer): integer; | ||
+ | |||
+ | * в случае C | ||
+ | int test_function1(char *buf1, char *buf2, int bufsize) | ||
+ | где: buf1 – передаваемые данные (входные), buf2 – возвращаемые данные (выходные), bufsize – размер выходного буфера (buf2). В ИРБИС64 данные передаются и возвращаются в UTF8. Возврат функции: 0 – нормальное завершение; любое другое значение – ненормальное. В случае нестандартного вызова функций из DLL (по Pascal-правилам) надо указывать символ * перед именем DLL: | ||
+ | &unifor('+8*<имя_DLL>,<имя_функции>,.... | ||
+ | |||
+ | Следует помнить, что имя функции в вызове надо указывать строго в соответствии с тем, как она экспортирована из DLL, большие и маленькие буквы различаются. | ||
+ | |||
+ | '''Примеры:''' | ||
+ | |||
+ | В вызываемую функцию передается заглавие: | ||
+ | &unifor('+8test_dll,test_function1,',v200^a) | ||
+ | |||
+ | Передаются повторения 910 поля: | ||
+ | (&unifor('+8test_dll,test_function2,',v910)) | ||
+ | |||
+ | Передается вся текущая запись: | ||
+ | (&unifor('+8test_dll,test_function2,',&unifor('+0'))) | ||
===Функции, не вошедшие в другие категории=== | ===Функции, не вошедшие в другие категории=== | ||
Строка 714: | Строка 1263: | ||
'''Примеры:''' | '''Примеры:''' | ||
− | &unifor(' | + | &unifor('R') |
+ | &unifor('R4') | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=[ | ||
+ | |title=Чистка данных от команд контекстного выделения | ||
+ | |versionFilename=RELEASE_8_1.doc | ||
+ | |versionText=2008.1 | ||
+ | }} | ||
+ | [ | ||
+ | |||
+ | '''Примеры:''' | ||
+ | &unifor('[') | ||
{{Описание функции UNIFOR | {{Описание функции UNIFOR | ||
− | |name=+ | + | |name=+3G |
− | |title= | + | |title=<nowiki>Вывод количества документов, найденных во внешней базе по команде G.(команда возвращает строку RESULT=[кол-во найденных по запросу документов])</nowiki> |
}} | }} | ||
− | + | + | +3G[URL к внешнему сайту WEB ИРБИС, с запросом G] |
− | + | ||
− | * | + | {{Описание функции UNIFOR |
− | + | |name=+3S | |
− | + | |title=<nowiki>Расформатирует найденные по запросу записи. Если [количество выводимых записей]=0, то возвращает только количество найденных по запросу документов</nowiki> | |
− | + | }} | |
− | + | ||
− | + | +3S[имя базы],[количество выводимых записей],[ограничитель][формат][ограничитель],[формат или @имя файла с форматом] | |
− | + | ||
− | + | + | {{Описание функции UNIFOR |
+ | |name=+3C | ||
+ | |title=Функция введена для оптимизации скорости проверки наличия текста в полнотекстовой базе данных | ||
+ | |description=Функция предназначена для обрезания перед помещением в словарь базы данных значения, формируемого путём соединения префикса <tt>TXT=</tt> и содержимого подполя ^B ссылки на текстовый файл полнотекстовой базы. Подробнее см. [[Схема полнотекстовой базы данных#Префикс TXT| в подразделе ''Префикс TXT'' статьи ''Схема полнотекстовой базы данных'']] | ||
+ | |versionFilename=RELEASE_13_1.doc | ||
+ | |versionText=2013.1 | ||
+ | }} | ||
+ | |||
+ | ==Устаревшие, не рекомендованные к использованию UNIFOR'ы== | ||
+ | |||
+ | ===Устаревшие функции для работы с глобальными переменными=== | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1 | ||
+ | |title=Очистить (опустошить) все глобальные переменные | ||
+ | }} | ||
+ | |||
+ | +1 | ||
+ | |||
+ | '''Примеры:''' | ||
+ | &unifor('+1') | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1R | ||
+ | |title=Чтение глобальных переменных | ||
+ | |versionFilename=RELEASE_4_1.doc | ||
+ | |versionText=2004.1 | ||
+ | }} | ||
+ | |||
+ | +1RNNN,nnn | ||
+ | где: | ||
+ | * NNN – номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе. | ||
+ | * nnn – кол-во переменных (по умолчанию 1). | ||
+ | |||
+ | |||
+ | '''Примеры:''' | ||
+ | &unifor('+1R100,2') | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1W | ||
+ | |title=Запись в глобальные переменные | ||
+ | |versionFilename=RELEASE_4_1.doc | ||
+ | |versionText=2004.1 | ||
+ | }} | ||
+ | |||
+ | +1WNNN,MMM#SSSS | ||
где: | где: | ||
− | * | + | * NNN – номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе. |
− | ** | + | * MMM – номер переменной для сохранения кол-ва записанных переменных (по умолчанию не используется). |
− | * | + | * SSSS – список строк (результат расформатирования). Если задан MMM – каждая строка пишется в отдельную переменную, в противном случае все пишется в одну переменную. |
− | * | + | |
− | + | '''Примеры:''' | |
− | + | + | &unifor('+1W100,0#',(v910/)) |
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1K | ||
+ | |title=Групповая мультираскодировка переменных | ||
+ | }} | ||
+ | |||
+ | +1K<MNU>|NNN,nnn | ||
где: | где: | ||
− | * | + | * NNN – номер первой или единственной переменной. |
− | + | * nnn – кол-во переменных (по умолчанию 1). | |
− | * | + | |
− | + | '''Примеры:''' | |
− | + | + | &unifor('+1Kmhr.mnu|100,10') |
− | + | ||
− | + | {{Описание функции UNIFOR | |
− | * | + | |name=+1M |
− | * | + | |title=Перемножение двух списков (групп переменных) |
− | * | + | }} |
− | + | ||
+ | +1MNNN,nnn#MMM,mmm | ||
+ | где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}}. | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1S | ||
+ | |title=Вычитание списков (групп переменных) | ||
+ | }} | ||
+ | |||
+ | +1SNNN,nnn#MMM,mmm | ||
+ | где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}} | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1A | ||
+ | |title=Сложение списков (групп переменных) | ||
+ | }} | ||
+ | |||
+ | +1ANNN,nnn#MMM,mmm | ||
+ | где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}} | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1G | ||
+ | |title=Исключение неоригинальных значений из группы переменных | ||
+ | }} | ||
+ | |||
+ | +1GNNN,nnn | ||
+ | где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}} | ||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=+1T | ||
+ | |title=Сортировка группы переменных | ||
+ | }} | ||
+ | |||
+ | +1TNNN,nnn | ||
+ | где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}} | ||
+ | |||
+ | ==Неописанные UNIFOR'ы== | ||
+ | |||
+ | |||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=Неописанный UNIFOR &unifor('11R^c?v210*2') | ||
+ | |title= | ||
+ | |versionFilename= | ||
+ | |versionText= | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=Неописанный UNIFOR &umarci('1200#h#2') | ||
+ | |title= | ||
+ | |versionFilename= | ||
+ | |versionText= | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=Неописанный UNIFOR &umarci('2210#^c') | ||
+ | |title= | ||
+ | |versionFilename= | ||
+ | |versionText= | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | |||
+ | {{Описание функции UNIFOR | ||
+ | |name=Неописанный UNIFOR &umarci('3210#2#^c') | ||
+ | |title= | ||
+ | |versionFilename= | ||
+ | |versionText= | ||
+ | |sectionLevel====== | ||
+ | }} | ||
+ | |||
+ | ==Ссылки== | ||
+ | |||
+ | См. также: | ||
+ | * [[Язык форматирования системы ИРБИС]] | ||
+ | * [[Операторы языка форматирования ИРБИС]] | ||
+ | * [[Функции языка форматирования ИРБИС]] | ||
+ | Источники информации: | ||
+ | * [[Общее описание системы ИРБИС64]] | ||
+ | * ''Техническая документация WEB ИРБИС64 и WEB ИРБИС32''. [http://irbis.gpntb.ru/read.php?21,62125 Актуальная версия документа доступна на форуме.] | ||
+ | * [[Документация, поставляемая с системой ИРБИС#История версий ИРБИС|История версий ИРБИС (файл <tt>RELEASE_OVERALL.doc</tt>)]] версии 2008.1 | ||
+ | * {{Ссылка на открытый FTP|filename=RELEASE_13_1.doc|text=Файл описания релиза 2009.1}} | ||
+ | * {{Ссылка на открытый FTP|filename=RELEASE_13_1.doc|text=Файл описания релиза 2010.1}} | ||
+ | * {{Ссылка на открытый FTP|filename=RELEASE_13_1.doc|text=Файл описания релиза 2011.1}} | ||
+ | * {{Ссылка на открытый FTP|filename=RELEASE_13_1.doc|text=Файл описания релиза 2013.1}} | ||
[[Категория:Язык форматирования системы ИРБИС]] | [[Категория:Язык форматирования системы ИРБИС]] | ||
[[Категория:Анонсированные статьи]] | [[Категория:Анонсированные статьи]] |
Текущая версия на 16:06, 5 июня 2024
UNIFOR – форматный выход, реализующий множество функций вне базовых рамок языка форматирования.
В статье для удобства перечень форматных выходов UNIFOR разбит на категории.
Содержание
- 1 Использование UNIFOR
- 2 Перечень функций UNIFOR с примерами их применения
- 2.1 Функции для обработки строк
- 2.1.1 Обычные функции для обработки строк
- 2.1.1.1 Вернуть длину исходной строки – &uf('+95…
- 2.1.1.2 Вернуть часть строки – &uf('+96…
- 2.1.1.3 Вернуть заданную строку в нижнем регистре – &uf('Q…
- 2.1.1.4 Вернуть заданную строку в верхнем регистре – &uf('+97…
- 2.1.1.5 Заменить в заданной строке один символ на другой – &uf('+98…
- 2.1.1.6 Вернуть ANSI-символ с заданным кодом – &uf('+9F…
- 2.1.1.7 Заменить в исходных данных некоторую заданную последовательность символов другой заданной последовательностью символов – &uf('+9I…
- 2.1.1.8 Найти подстроку – &uf('+9S…
- 2.1.2 Функции для работы со словами
- 2.1.3 Дополнительные функции для обработки строк
- 2.1.3.1 Кодирование данных для представления в URL – &uf('+3E…
- 2.1.3.2 Декодирование данных из URL – &uf('+3D…
- 2.1.3.3 Перевод знака + в %2B – &uf('+3+…
- 2.1.3.4 Кодирование строки в UTF-8 – &uf('+3U…
- 2.1.3.5 Декодирование строки из UTF-8 – &uf('+3W…
- 2.1.3.6 Транслитерация кириллических символов с помощью латиницы – &uf('T…
- 2.1.3.7 Вернуть часть строки до или начиная с заданного символа – &uf('G…
- 2.1.3.8 Удалить двойные кавычки из заданной строки – &uf('9…
- 2.1.3.9 Удаление из заданной строки фрагментов, выделенных угловыми скобками <> – &uf('X…
- 2.1.3.10 Выводит нужную часть текста (до знака "=", или после него) в заголовках, описанных по принципу <NNN=KKK> – &uf('+S…
- 2.1.3.11 Сравнить заданное значение с маской – &uf('=…
- 2.1.3.12 Преобразование строки, удваивающее обратный слэш, или обратное – &uf('+\…
- 2.1.3.13 Усекает строку справа до точки. Используется для отсечения одного уровня в рубриках ГРНТИ – &uf('+R…
- 2.1.3.14 Преобразование римского числа в арабское – &uf('+9R…
- 2.1.3.15 Преобразование арабского числа в римское – &uf('+9X…
- 2.1.1 Обычные функции для обработки строк
- 2.2 Функции для работы с датой и временем
- 2.3 Функции для работы с глобальными переменными
- 2.3.1 Очистить (опустошить) все глобальные переменные – &uf('+7…
- 2.3.2 Чтение глобальной переменной – &uf('+7R…
- 2.3.3 Запись глобальной переменной – &uf('+7W…
- 2.3.4 Добавление повторений глобальной переменной – &uf('+7U…
- 2.3.5 Логическое перемножение повторений двух переменных – &uf('+7M…
- 2.3.6 Логическое вычитание повторений двух переменных – &uf('+7S…
- 2.3.7 Логическое сложение повторений двух переменных – &uf('+7A…
- 2.3.8 Исключение неоригинальных повторений переменной – &uf('+7G…
- 2.3.9 Сортировка повторений переменной – &uf('+7T…
- 2.3.10 Групповая установка глобальных переменных – &uf('+99…
- 2.4 Функции для работы с базой данных
- 2.4.1 Выдать содержимое документа полностью в формате RTF – <tt>&uf('0…
- 2.4.2 Выдать содержимое документа полностью во внутреннем представлении – &uf('+0…
- 2.4.3 Выдать содержимое документа полностью – только содержимое полей – &uf('++0…
- 2.4.4 Выдать содержимое документа полностью в формате JSON – &uf('+@…
- 2.4.5 Выдать количество повторений поля – &uf('+N…
- 2.4.6 Выдать заданное повторение поля – &uf('A…
- 2.4.7 Выдать заданное оригинальное повторение поля – &uf('P…
- 2.4.8 Возвращает порядковый номер заданного поля в записи – &uf('+E…
- 2.4.9 Раскодировка через справочник – &uf('K…
- 2.4.10 Вернуть параметр из INI-файла – &uf('I…
- 2.4.11 Вернуть заданный подэлемент – &uf('1…
- 2.4.12 Вернуть кол-во ссылок для заданного термина – &uf('J…
- 2.4.13 Форматирование документа из другой БД – &uf('D…
- 2.4.14 Расформатирование группы связанных документов из другой БД – &uf('7…
- 2.4.15 Команда постредактуры: очистить результат расформатирования от двойных разделителей – &uf('!…
- 2.4.16 Команда постредактуры: очистить результат расформатирования от RTF-конструкций – &uf('+F…
- 2.4.17 Групповая мультираскодировка списка – &uf('+1O…
- 2.4.18 Исключение неоригинальных значений из списка – &uf('+1I…
- 2.4.19 Сортировка списка – &uf('+1V…
- 2.4.20 Формирования ссылки (гиперссылки) – &uf('+I…
- 2.4.21 Выдать статус записи – &uf('+6…
- 2.4.22 Выдать имя базы данных – &uf('+D…
- 2.4.23 Вернуть последний номер MFN в базе +1 – &uf('2…
- 2.4.24 Вернуть номер поколения ИРБИС – &uf('+9V…
- 2.4.25 Форматировать предыдущую копию текущей записи – &uf('4N…
- 2.5 Функции для работы с повторяющимися группами
- 2.5.1 Выдача метки, порядкового номера и значения поля в соответствии с индексом (номером повторения) повторяющейся группы – &uf('+4…
- 2.5.2 Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы – &uf('+5…
- 2.5.3 Вернуть номер текущего повторения в повторяющейся группе – &uf('+90…
- 2.6 Функции для работы с базой данных электронного каталога
- 2.6.1 Выдать библиографическую свертку документа – &uf('B…
- 2.6.2 Контроль ISSN/ISBN – &uf('C…
- 2.6.3 Вернуть окончание термина – &uf('L…
- 2.6.4 Кумуляция номеров журналов – &uf('U…
- 2.6.5 Декумуляция номеров журналов – &uf('V…
- 2.6.6 Контроль кумуляции – &uf('W…
- 2.6.7 Вывод сведений о всех экземплярах по всем местам хранения – &uf('O…
- 2.6.8 Возвращает данные о всех свободных (не выданных) экземплярах по всем местах хранения – &uf('Y…
- 2.7 Функции для работы с файлами
- 2.7.1 Вернуть имя файла из заданного полного пути/имени – &uf('+91…
- 2.7.2 Вернуть путь из заданного полного пути/имени – &uf('+92…
- 2.7.3 Вернуть расширение из заданного полного пути/имени – &uf('+93…
- 2.7.4 Вернуть имя диска из заданного полного пути/имени – &uf('+94…
- 2.7.5 Проверить наличие файла/корректность URL – &uf('+9L…
- 2.7.6 Вставить данные из заданного текстового файла – &uf('+9C…
- 2.7.7 Вернуть размер файла в байтах. – &uf('+9A…
- 2.7.8 Сохранить заданный внутренний двоичный объект в заданном файле – &uf('+9D…
- 2.7.9 Представить заданный двоичный файл в кодированном виде – &uf('+9J…
- 2.7.10 Удалить заданный файл – &uf('+9K…
- 2.8 Функции, используемые только в глобальной корректировке
- 2.9 Выполнить внешнюю программу
- 2.10 Функции, не вошедшие в другие категории
- 2.10.1 Универсальный счетчик – &uf('S…
- 2.10.2 Генерация случайного числа – &uf('R…
- 2.10.3 Чистка данных от команд контекстного выделения – &uf('[…
- 2.10.4 Вывод количества документов, найденных во внешней базе по команде G.(команда возвращает строку RESULT=[кол-во найденных по запросу документов]) – &uf('+3G…
- 2.10.5 Расформатирует найденные по запросу записи. Если [количество выводимых записей]=0, то возвращает только количество найденных по запросу документов – &uf('+3S…
- 2.10.6 Функция введена для оптимизации скорости проверки наличия текста в полнотекстовой базе данных – &uf('+3C…
- 2.1 Функции для обработки строк
- 3 Устаревшие, не рекомендованные к использованию UNIFOR'ы
- 3.1 Устаревшие функции для работы с глобальными переменными
- 3.1.1 Очистить (опустошить) все глобальные переменные – &uf('+1…
- 3.1.2 Чтение глобальных переменных – &uf('+1R…
- 3.1.3 Запись в глобальные переменные – &uf('+1W…
- 3.1.4 Групповая мультираскодировка переменных – &uf('+1K…
- 3.1.5 Перемножение двух списков (групп переменных) – &uf('+1M…
- 3.1.6 Вычитание списков (групп переменных) – &uf('+1S…
- 3.1.7 Сложение списков (групп переменных) – &uf('+1A…
- 3.1.8 Исключение неоригинальных значений из группы переменных – &uf('+1G…
- 3.1.9 Сортировка группы переменных – &uf('+1T…
- 3.1 Устаревшие функции для работы с глобальными переменными
- 4 Неописанные UNIFOR'ы
- 5 Ссылки
Использование UNIFOR
UNIFOR имеет следующий синтаксис в языке форматирования (в полной или сокращённой форме):
&unifor(формат) &uf(формат)
где:
- & – идентификатор вызова форматного выхода,
- unifor – имя форматного выхода (соответственно uf – сокращённое имя),
- формат – аргумент.
Рекомендуется использовать сокращённую форму вызова UNIFOR. Сокращённая форма по действию ничем не отличается от полной формы, зато позволяет сократить размер формата и повысить его читаемость.
Вид реализуемой функции определяется первыми символами строки, которая формируется в результате выполнения формата, передаваемого в качестве аргумента.
Передача параметров
Во многих функциях, которые позволяет реализовать форматный выход UNIFOR, для передачи параметра неизвестной длины используется уникальный разделитель. Значение параметра должно быть окружено таким уникальным разделителем слева и справа.
Например, если исходная строка
!AAAA!BBBB
то в качестве уникального разделителя выступает символ
!
значение параметра
AAAA
а оставшаяся часть исходной строки
BBBB
Перечень функций UNIFOR с примерами их применения
Функции для обработки строк
Обычные функции для обработки строк
Вернуть длину исходной строки – &uf('+95…
Вид функции: +95.
Назначение: Вернуть длину исходной строки.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+95<строка>
Вернуть часть строки – &uf('+96…
Вид функции: +96.
Назначение: Вернуть часть строки.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+96A*SSS.NNN#<строка>
где:
- A – направление: 0 – с начала строки; 1 – с конца;
- SSS – смещение;
- NNN – кол-во символов.
Примеры:
&uf('+960*0.4#'v100) &uf('+960*5.4#'v100) &uf('+961*0.4#'v100)
Вернуть заданную строку в нижнем регистре – &uf('Q…
Вид функции: Q.
Назначение: Вернуть заданную строку в нижнем регистре.
Формат (передаваемая строка):
Q<строка>
Примеры:
&unifor("Q"v200)
Вернуть заданную строку в верхнем регистре – &uf('+97…
Вид функции: +97.
Назначение: Вернуть заданную строку в верхнем регистре.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+97<строка>
Заменить в заданной строке один символ на другой – &uf('+98…
Вид функции: +98.
Назначение: Заменить в заданной строке один символ на другой (регистр учитывается).
Присутствует в версиях ИРБИС с 2007.2.
Формат (передаваемая строка):
+98ab<строка>
где:
- a – заменяемый символ;
- b – заменяющий символ.
Примеры:
В результате выполнения формата
&uf('+98 0',f(1,5,0))
получится значение
00001
Вернуть ANSI-символ с заданным кодом – &uf('+9F…
Вид функции: +9F.
Назначение: Вернуть ANSI-символ с заданным кодом.
Присутствует в версиях ИРБИС с 2008.1.
Формат (передаваемая строка):
+9F<код>
Примеры:
Такой форматный выход может пригодиться, например, когда надо вывести в литерале символ, совпадающий с ограничителями литерала.
Для формата
'11111',&Uf('+9F39'),'22222'
результат расформатирования будет
11111'22222
Заменить в исходных данных некоторую заданную последовательность символов другой заданной последовательностью символов – &uf('+9I…
Вид функции: +9I.
Назначение: Заменить в исходных данных некоторую заданную последовательность символов другой заданной последовательностью символов.
Присутствует в версиях ИРБИС с 2009.1.
Формат (передаваемая строка):
+9I!AAAA!/BBBB/<данные>
где АААА – последовательность символов, подлежащая замене; ВВВВ – заменяющая последовательность символов; символ ! – уникальный разделитель, отсутствующий в строке АААА; символ / – уникальный разделитель, отсутствующий в строке ВВВВ. ВВВВ может быть пустым значением, в этом случае последовательность АААА будет удаляться. Обрабатываются ВСЕ (а не только первое) вхождения АААА в исходные данные. В качестве разделителей можно использовать ТОЛЬКО символы стандартного набора (с кодом менее 128).
Найти подстроку – &uf('+9S…
Вид функции: +9S.
Назначение: Возвращает позицию первого символа найденного вхождения подстроки в исходную строку. Считается, что символы в строке нумеруются с 1. Если подстрока не найдена, то возвращает 0. Комментарий: следует отметить, что в функции Вернуть часть строки – &uf('+96… указывают смещение, а не позицию символа.
Присутствует в версиях ИРБИС с 2013.1.
Формат (передаваемая строка):
+9S!подстрока!<исходная_строка>
где подстрока – подстрока, которую нужно найти; <исходная_строка> – исходная строка для поиска; символ ! – уникальный разделитель, отсутствующий в искомой подстроке.
Функции для работы со словами
Вернуть заданное количество слов с начала строки – &uf('E…
Вид функции: E.
Назначение: Вернуть заданное количество слов с начала строки.
Формат (передаваемая строка):
EN<строка>
где N – количество слов (одна цифра).
Примеры:
&unifor("E3"v200^a)
Вернуть часть строки, начиная со следующего слова после указанного и до конца строки – &uf('F…
Вид функции: F.
Назначение: Вернуть часть строки, начиная со следующего слова после указанного и до конца строки.
Формат (передаваемая строка):
FN<строка>
где N – количество слов (одна цифра).
Примеры:
&unifor("F3"v200^a)
Преобразовать заданную строку в список слов – &uf('+9G…
Вид функции: +9G.
Назначение: Преобразовать заданную строку в список слов.
Присутствует в версиях ИРБИС с 2008.1.
Формат (передаваемая строка):
+9G<строка>
Границы слов определяются на основе таблицы алфавитных символов.
Дополнительные функции для обработки строк
Кодирование данных для представления в URL – &uf('+3E…
Вид функции: +3E.
Назначение: Кодирование данных для представления в URL.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+3E<данные>
Примеры:
&unifor('+3E',v1007)
Декодирование данных из URL – &uf('+3D…
Вид функции: +3D.
Назначение: Декодирование данных из URL.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+3D<данные>
Перевод знака + в %2B – &uf('+3+…
Вид функции: +3+.
Назначение: Перевод знака + в %2B.
Формат (передаваемая строка):
+3+<данные>
Кодирование строки в UTF-8 – &uf('+3U…
Вид функции: +3U.
Назначение: Кодирование строки в UTF-8.
Формат (передаваемая строка):
+3U<данные>
Декодирование строки из UTF-8 – &uf('+3W…
Вид функции: +3W.
Назначение: Декодирование строки из UTF-8.
Формат (передаваемая строка):
+3W<данные>
Транслитерация кириллических символов с помощью латиницы – &uf('T…
Вид функции: T.
Назначение: Транслитерация кириллических символов с помощью латиницы.
Формат (передаваемая строка):
TN<строка>
где N – вид таблицы транслитерации (0 или 1).
Примеры:
&unifor("T0"V200)
Вернуть часть строки до или начиная с заданного символа – &uf('G…
Вид функции: G.
Назначение: Вернуть часть строки до или начиная с заданного символа.
Формат (передаваемая строка):
GNA<строка>
где:
- N может принимать значения:
- 0 (или A) – до заданного символа не включая его;
- 1 (или B) – начиная с заданного символа;
- 2 (или C) – после заданного символа;
- 3 (или D) – после последнего вхождения заданного символа;
- 4 (или E) – до последнего вхождения заданного символа (включая его);
- 5 – до последнего вхождения заданного символа (не включая его).
- А – заданный символ. Символ обозначает самого себя, кроме # (обозначает любую цифру) и $ (обозначает любую букву).
Примечание: функция G5 присутствует в версиях ИРБИС с 2015.1.
Примеры:
&unifor("G0#"v700) &unifor("G1-"v700^a) &unifor("G2-"v700^a) Пример получения ссылки на файл из подполя 952^U полнотекстовой БД для файлов, добавленных с разбиением и без &uf('G0:',&uf('G4:',&uf('G2:',&uf('G2:',v952^U))))
Удалить двойные кавычки из заданной строки – &uf('9…
Вид функции: 9.
Назначение: Удалить двойные кавычки из заданной строки.
Формат (передаваемая строка):
9<исх.строка>
Примеры:
&unifor("9"v200^a)
Удаление из заданной строки фрагментов, выделенных угловыми скобками <> – &uf('X…
Вид функции: X.
Назначение: Удаление из заданной строки фрагментов, выделенных угловыми скобками <>.
Формат (передаваемая строка):
X<строка>
Примеры:
&unifor("X"v200)
Выводит нужную часть текста (до знака "=", или после него) в заголовках, описанных по принципу <NNN=KKK> – &uf('+S…
Вид функции: +S.
Назначение: Выводит нужную часть текста (до знака "=", или после него) в заголовках, описанных по принципу <NNN=KKK>.
Формат (передаваемая строка):
+SN[строка]
где N может принимать значения 0 для вывода текста после знака "=", и 1 для вывода текста перед знаком "=".
Выдержка из документации (см. Файл описания релиза 2002.2 и документацию на http://nucleonics.fatal.ru):
- Для книг, описанных «Под заглавием», которые начинаются с числительного, обозначенного цифрами, начальный элемент сортировки и авторский знак должны формироваться по словесному обозначению числительного. В связи с этим Пользователь должен ввести дополнительную разметку типа <NNN=Текст>, где «Текст», стоящий после знака «=», — это словесное значение числительного NNN, используемое взамен его для формирования авторского знака и/или в качестве начального элемента сортировки. Например, заглавие 1000 и одна ночь, размеченное как <1000=тысяча> и одна ночь, для формирования авторского знака и сортировки будет представлено как «тысяча и одна ночь», а для печати как «1000 и одна ночь».
- Для биографических и биобиблиографических изданий, описанных под заглавием, начинающимся с имени лица, которому оно посвящено, авторский знак и начальный элемент сортировки должны формироваться на фамилию. В связи с этим Пользователь также должен ввести дополнительную разметку типа <AAA=Текст>, где «Текст», стоя-щий после знака «=», — это фамилия, используемая (взамен части ААА) для формирования авторского знака и/или начального элемента сортировки. Например, заглавие Антон Павлович Чехов может быть размечено как <Антон Павлович Чехов=Чехов Антон Павлович> (в сортировку пойдет «Чехов Антон Павлович», на печать «Антон Павлович Чехов»). Заметим, что разметка типа <Антон=Чехов> Павлович Чехов даст правильный авторский знак (Чехов Павлович Чехов), но может дать ошибки в сортировке.
Примеры:
Пример входной строки:
<1=Первое> апреля
Примеры использования функции:
&uf('+s0'v200^a) &uf('+s1'v200^a)
Пример расформатирования:
Первое апреля 1 апреля
Сравнить заданное значение с маской – &uf('=…
Вид функции: =.
Назначение: Возвращаемое значение: 1 – в случае положительного результата сравнения; 0 – в случае отрицательного.
Присутствует в версиях ИРБИС с 2008.1.
Формат (передаваемая строка):
=!<маска>!<значение>
! – уникальный разделитель (может быть любым символом). Маска может содержать принятые символы маскирования * и ?. В общем случае маска может содержать несколько масок, отделенных друг от друга символом вертикальной черты |.
Преобразование строки, удваивающее обратный слэш, или обратное – &uf('+\…
Вид функции: +\.
Назначение: Преобразование строки, удваивающее обратный слэш, или обратное.
Формат (передаваемая строка):
+\N<строка>
где:
- N может принимать значения
- 0 - удвоение знаков обратного слэш;
- 1 - преобразование удвоенных знаков слэш в одинарные.
Примеры:
Результатом формата
&uf('+\0c:\example.txt')
будет строка
c:\\example.txt
Результатом формата
&uf('+\1c:\\example.txt')
будет строка
c:\example.txt
Усекает строку справа до точки. Используется для отсечения одного уровня в рубриках ГРНТИ – &uf('+R…
Вид функции: +R.
Назначение: Усечение кода рубрики в рубрикаторе ГРНТИ до вышестоящего.
Формат (передаваемая строка):
+\R<строка>
Примеры:
формат
&unifor("+R"v3)
исходная строка
02.61.45
результирующая строка
02.61
Преобразование римского числа в арабское – &uf('+9R…
Вид функции: +9R.
Назначение: Преобразование римского числа в арабское.
Присутствует в версиях ИРБИС с 2011.1.
Формат (передаваемая строка):
+9R<римское_число>
Преобразование арабского числа в римское – &uf('+9X…
Вид функции: +9X.
Назначение: Преобразование арабского числа в римское.
Присутствует в версиях ИРБИС с 2011.1.
Формат (передаваемая строка):
+9X<арабское_число>
Функции для работы с датой и временем
Выдача данных, связанных с датой и временем – &uf('3…
Вид функции: 3.
Назначение: Выдача данных, связанных с датой и временем.
Формат (передаваемая строка):
Имеются следующие подфункции:
- 3 – выдать текущую дату в виде ГГГГММДД. Присутствует в версиях ИРБИС с 2004.1.
- 30 – выдать текущий год в виде ГГГГ. Присутствует в версиях ИРБИС с 2004.1.
- 31 – выдать текущий месяц в виде ММ (с лидирующим нулем). Присутствует в версиях ИРБИС с 2004.1.
- 32 – выдать текущий день в виде ДД (с лидирующим нулем). Присутствует в версиях ИРБИС с 2004.1.
- 33 – выдать текущий год в виде ГГ. Присутствует в версиях ИРБИС с 2004.1.
- 34 – выдать текущий месяц в виде М (без лидирующего нуля). Присутствует в версиях ИРБИС с 2004.1.
- 35 – выдать текущий день в виде Д (без лидирующего нуля). Присутствует в версиях ИРБИС с 2004.1.
- 36MM – выдать по заданному номеру месяца его название на русском языке в именительном падеже. Присутствует в версиях ИРБИС с 2004.1.
- 37MM – выдать по заданному номеру месяца его название на русском языке в родительном падеже. Присутствует в версиях ИРБИС с 2004.1.
- 38MM – выдать по заданному номеру месяца его название на английском языке. Присутствует в версиях ИРБИС с 2004.1.
- 39 – выдать текущее время. Присутствует в версиях ИРБИС с 2004.1.
- 3А – НЕ РЕАЛИЗОВАН. По сведениям об имеющихся когда то реализациях - выдать номер текущего дня от начала года. Предположительно, мог присутствовать в версиях ИРБИС с 2004.1.
- 3BГГГГММДД/ддд – прибавить/вычесть из заданной даты в виде ГГГГММДД заданное количество дней (ддд – может быть отрицательным) и вернуть полученную дату в виде ГГГГММДД. Присутствует в версиях ИРБИС с 2007.2.
- 3CГГГГММДД/ГГГГММДД – вычесть из одной даты в виде ГГГГММДД другую дату в виде ГГГГММДД и вернуть разницу в виде количества дней. Присутствует в версиях ИРБИС с 2007.2.
- 3JГГГГММДД – переводит заданную юлианскую дату ГГГГММДД в грегорианскую. Присутствует в версиях ИРБИС с 2009.1.
Примеры:
&unifor('36',&unifor('34'))
Вычесть из текущей даты сто дней:
&uf('3B',&uf('3'),'/-100')
Количество дней с 1 января 1900 года до сегодняшнего дня:
&uf('3C',&uf('3'),'/19000101')
Функции для работы с глобальными переменными
Дополнительно о глобальных переменных см. в подразделе Глобальные переменные статьи Язык форматирования системы ИРБИС.
Очистить (опустошить) все глобальные переменные – &uf('+7…
Вид функции: +7.
Назначение: Очистить (опустошить) все глобальные переменные.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7
Примеры:
&unifor('+7')
Чтение глобальной переменной – &uf('+7R…
Вид функции: +7R.
Назначение: Чтение глобальной переменной.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7RNNN,nnn
где:
- NNN – номер переменной.
- nnn – номер повторения. По умолчанию – номер текущего повторения в повторяющейся группе.
Эквивалентная конструкция языка форматирования GNNN.
Примеры:
&unifor('+7R100')
эквивалентная конструкция языка форматирования:
G100
Запись глобальной переменной – &uf('+7W…
Вид функции: +7W.
Назначение: Запись глобальной переменной.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7WNNN#SSSS
где:
- NNN – номер переменной;
- SSSS – список строк (результат расформатирования); каждая строка становится отдельным повторением.
Примеры:
&unifor('+7W100#',(v910/))
Добавление повторений глобальной переменной – &uf('+7U…
Вид функции: +7U.
Назначение: Добавление повторений глобальной переменной.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7UNNN#SSSS
где:
- NNN – номер переменной;
- SSSS – список строк (результат расформатирования); каждая строка становится отдельным повторением.
Логическое перемножение повторений двух переменных – &uf('+7M…
Вид функции: +7M.
Назначение: Логическое перемножение повторений двух переменных.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7MNNN#MMM
Результат перемножения записывается в первую переменную.
Логическое вычитание повторений двух переменных – &uf('+7S…
Вид функции: +7S.
Назначение: Логическое вычитание повторений двух переменных.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7SNNN#MMM
Результат вычитания записывается в первую переменную.
Логическое сложение повторений двух переменных – &uf('+7A…
Вид функции: +7A.
Назначение: Логическое сложение повторений двух переменных.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7ANNN#MMM
Результат сложения записывается в первую переменную.
Исключение неоригинальных повторений переменной – &uf('+7G…
Вид функции: +7G.
Назначение: Исключение неоригинальных повторений переменной.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7GNNN
Результат исключения записывается в ту же переменную.
Сортировка повторений переменной – &uf('+7T…
Вид функции: +7T.
Назначение: Сортировка повторений переменной.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+7TNNN
Результат сортировки записывается в ту же переменную.
Групповая установка глобальных переменных – &uf('+99…
Вид функции: +99.
Назначение: Групповая установка глобальных переменных. Применяется для ИРБИС-Навигатора. Исходная строка закодирована с помощью URL-кодировки. После раскодировки рассматривается как список строк (аналогично TStringList.Text в Delphi). Каждая строка этого списка имеет структуру: NNN#<значение_глобальной_переменной_NNN><tt>.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+99
Функции для работы с базой данных
Выдать содержимое документа полностью в формате RTF – <tt>&uf('0…
Вид функции: 0.
Назначение: Выдать содержимое документа полностью (формат ALLl).
Формат (передаваемая строка):
0
Примеры:
&unifor('0')
Результат расформатирования:
\b #910/1:_\b0 ^YДА^PНЮАУ - каф. кримінального права\par \b #920/1:_\b0 ATHRA\par \b #210/1:_\b0 ^AТацій^BВ. Я.^GВасиль Якович^8ukr\par \b #710/1:_\b0 ^AТаций^BВ. Я.^GВасилий Яковлевич^8rus\par \b #907/1:_\b0 ^A20110301^B111\par \b #907/2:_\b0 ^A20110419^BZhukovskaya\par \b #710/2:_\b0 ^ATatsiy^BV.^8eng\par \b #907/3:_\b0 ^A20110421^BZhukovskaya\par \b #907/4:_\b0 ^A20111108^B111\par
Выдать содержимое документа полностью во внутреннем представлении – &uf('+0…
Вид функции: +0.
Назначение: Выдать содержимое документа полностью (формат ALLl).
Формат (передаваемая строка):
+0
Результат расформатирования:
0 2#0 0#1 910#^YДА^PНЮАУ - каф. кримінального права 920#ATHRA 210#^AТацій^BВ. Я.^GВасиль Якович^8ukr 710#^AТаций^BВ. Я.^GВасилий Яковлевич^8rus 907#^A20110301^B111 907#^A20110419^BZhukovskaya 710#^ATatsiy^BV.^8eng 907#^A20110421^BZhukovskaya 907#^A20111108^B111
Выдать содержимое документа полностью – только содержимое полей – &uf('++0…
Вид функции: ++0.
Назначение: Выдать содержимое документа полностью (формат ALLl).
Формат (передаваемая строка):
++0
Выдать содержимое документа полностью в формате JSON – &uf('+@…
Вид функции: +@.
Назначение: Выдать содержимое документа полностью в формате JSON.
Присутствует в версиях ИРБИС с 2014.1.
Формат (передаваемая строка):
+@
Выдать количество повторений поля – &uf('+N…
Вид функции: +N.
Назначение: Выдать количество повторений поля, метка которого указана после идентификатора функции.
Формат (передаваемая строка): +N
Примеры:
&unifor('+N910')
Выдать заданное повторение поля – &uf('A…
Вид функции: A.
Назначение: Выдать заданное повторение поля.
Формат (передаваемая строка):
AV<tag>^<delim>*<offset>.<length>#<occur>
где:
- <tag> – метка поля;
- <delim> – разделитель подполя;
- <offset> – смещение;
- <length> – длина;
- <occur> – номер повторения.
Примеры:
&unifor('Av200#2') &unifor('Av910^a#5') &unifor('Av10^b*2.10#2')
Выдать заданное оригинальное повторение поля – &uf('P…
Вид функции: P.
Назначение: Выдать заданное оригинальное повторение поля.
Формат (передаваемая строка): см. формат для функции Выдать заданное повторение поля – &uf('A….
Примеры: см. примеры для функции Выдать заданное повторение поля – &uf('A….
Возвращает порядковый номер заданного поля в записи – &uf('+E…
Вид функции: +E.
Назначение: Возвращает порядковый номер заданного поля в записи. При отсутствии в записи заданного поля возвращается пустота.
Присутствует в версиях ИРБИС с 2009.1.
Формат (передаваемая строка):
+Etag#occ
где:
- tag – метка поля;
- occ – номер повторения поля (по умолчанию – 1). Может принимать значение * – это означает номер текущего повторения в повторяющейся группе.
Раскодировка через справочник – &uf('K…
Вид функции: K.
Назначение: Возвращает значение из справочника, соответствующее переданному коду (иными словами, осуществляется раскодировка).
Формат (передаваемая строка):
K<имя_справочника><разделитель><исх_значение>
<разделитель> между <имя_справочника> и <исх_значение> может быть двух видов: \ - раскодировка с учетом регистра, ! - раскодировка без учета регистра.
Примеры:
&unifor("Kjz.mnu\"v101) &uf('kFIO_SF.MNU!'&uf('av907^b#1'))
Вернуть параметр из INI-файла – &uf('I…
Вид функции: I.
Назначение: Вернуть параметр из INI-файла.
Формат (передаваемая строка):
I<SECTION>,<PAR_NAME>,<DE-FAULT_VALUE>
Примеры:
&unifor('IPRIVATE,NAME,NONAME')
Вернуть заданный подэлемент – &uf('1…
Вид функции: 1.
Назначение: Вернуть заданный подэлемент.
Формат (передаваемая строка):
1NCXY?V<tag>^<delim>*<offset>.<length>#<occur>
где:
- N – номер повторения подэлемента; если указана * – номер подэлемента совпадает со счетчиком повторяющейся группы.
- ХY – разделители между подэлементами.
- С – принимает значения: R – разделители справа от каждого подэлемента, кроме последнего; L – разделители слева от каждого подэлемента; D – каждый подэлемент заключен слева разделителем Х и справа – Y.
- ? – символ-разделитель.
- Остальные параметры аналогичны параметрам для функции Выдать заданное повторение поля – &uf('A….
Примеры:
(/&unifor('1*R; ?v910^h#1'))
Вернуть кол-во ссылок для заданного термина – &uf('J…
Вид функции: J.
Назначение: Вернуть кол-во ссылок для заданного термина.
Формат (передаваемая строка):
J<dbn>,<термин>
<dbn> – имя БД; по умолчанию используется текущая.
Примеры:
&unifor('JBOOK,',"A="v200^a)
Форматирование документа из другой БД – &uf('D…
Вид функции: D.
Назначение: Форматирование документа из другой БД (REF на другую БД – отношение «от одного к одному»).
Формат (передаваемая строка):
D<dbn>,<@mfn|/termin/>,<@имя_формата|формат|*>
Передаются три параметра, разделенные запятой:
- Первый – имя БД;
- Второй – или непосредственно MFN с предшествующим символом @ или термин, ссылающийся на документ (термин – заключается в ограничительные символы);
- Третий – или имя формата с предшествующим символом @ или непосредственно формат.
Если задается *, данные выводятся по прямой ссылке (метка поля, номер повторения).
Примеры:
&unifor('DBOOK,/K=AAA/,v200')
Расформатирование группы связанных документов из другой БД – &uf('7…
Вид функции: 7.
Назначение: Расформатирование группы связанных документов из другой БД (отношение «от одного к многим») Функция обеспечивает возможность связать запись с рядом других записей по какому бы то ни было общему признаку. К примеру, можно отобрать все записи с определенным заглавие, индексом УДК/ББК, ключевым словом..
Присутствует в версиях ИРБИС с 2004.1.
Формат (передаваемая строка):
7<имя_БД>,</termin/>,<@имя_формата|формат|*>
где:
- имя_БД – имя базы данных, из которой будут браться связанные документы; по умолчанию используется текущая БД.
- /termin/ – ключевой термин, на основе которого отбираются связанные документы; термин заключается в уникальные ограничители (например. /), в качестве которых используется символ, не входящий (гарантированно) в термин.
- @имя_формата|формат|* – имя формата или формат в явном виде, в соответствии с которым будут расформатироваться связанные документы. Если задается имя формата, то он берется из директории БД, заданной параметром <имя_БД>. Если задается *, данные выводятся по прямой ссылке (метка поля, номер повторения).
Примеры:
&unifor('7TEST,',"/T="v200^a"/",',v903"\par "') &uf(|7EK,!FAK=23.01!,&uf('av907^A#1'),&uf('6brief')/|d90),
Команда постредактуры: очистить результат расформатирования от двойных разделителей – &uf('!…
Вид функции: !.
Назначение: Команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. – >). Имеет смысл использовать один раз в любом месте формата.
Присутствует в версиях ИРБИС с 2004.1.
Формат (передаваемая строка):
!
Примеры:
&unifor('!')
Команда постредактуры: очистить результат расформатирования от RTF-конструкций – &uf('+F…
Вид функции: +F.
Назначение: Команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата.
Присутствует в версиях ИРБИС с 2004.1.
Формат (передаваемая строка):
+F
Примеры:
&unifor('+F')
Групповая мультираскодировка списка – &uf('+1O…
Вид функции: +1O.
Назначение: Групповая мультираскодировка списка.
Формат (передаваемая строка):
+1O<MNU>|SSSS
где:
- <MNU> имя справочника (с расширением).
- SSSS – список строк (результат расформатирования.
Примеры:
&unifor('+1Omhr.mnu|',(v910^m/))
Исключение неоригинальных значений из списка – &uf('+1I…
Вид функции: +1I.
Назначение: Исключение неоригинальных значений из списка.
Формат (передаваемая строка):
+1ISSSS
где параметры аналогичны описанным для функции Групповая мультираскодировка списка – &uf('+1O…
Сортировка списка – &uf('+1V…
Вид функции: +1V.
Назначение: Сортировка списка.
Формат (передаваемая строка):
+1VSSSS
где параметры аналогичны описанным для функции Групповая мультираскодировка списка – &uf('+1O…
Формирования ссылки (гиперссылки) – &uf('+I…
Вид функции: +I.
Назначение: Формирования ссылки (гиперссылки).
Присутствует в версиях ИРБИС с 2004.1.
Формат (передаваемая строка):
+I/содержание_ссылки/название_ссылки
/содержание_ссылки/ – внутренние данные ссылки, ограниченные уникальным разделителем. Имеют структуру
NNN,HHH,<параметры>
где:
- NNN – тип ссылки, возможные значения:
- 0 – ссылки на внешние объекты;
- 1 – ссылка на связанный документ (возможно в другой БД) – "от одного к одному";
- 2 – ссылка на связанные документы (возможно в другой БД) – "от одного к многим";
- HHH – экранная подсказка, может иметь вид: @iii – где iii – номер текста в файле IRBISMSG.TXT, \text\ – собственно текст подсказки в уникальных ограничителях.
<параметры>:
- Для ссылок типа 0 представляет собой в общем виде URL внешнего объекта (в том числе – полный путь на файл).
- Для ссылок типа 1 и 2 <параметры> имеют следующую структуру:
имя_БД,имя_формата,termin
где:
- имя_БД – имя базы данных, из которой будут браться связанные документы; по умолчанию используется текущая БД.
- имя_формата – имя формата, в соответствии с которым будут расформатироваться связанные документы. (по умолчанию – используется оптимизированный формат).
- termin – ключевой термин, на основе которого отбираются (ищутся) связанные документы.
Примеры:
&unifor('+I?0,,'v951^i'?',v951^t,|INTERNET|n951^t) &unifor(|+I?1,,,,I=|v421^w|?|,v421^a)
Выдать статус записи – &uf('+6…
Вид функции: +6.
Назначение: Выдать статус записи. Если запись логически удаленная, возвращается 0, в противном случае – 1.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+6
Примеры:
… if &unifor('+6')='0' then 'запись логически удаленная' fi …
Выдать имя базы данных – &uf('+D…
Вид функции: +D.
Назначение: Возвращает имя текущей базы данных.
Формат (передаваемая строка):
+D
Примеры:
… &unifor('+D') …
Вернуть последний номер MFN в базе +1 – &uf('2…
Вид функции: 2.
Назначение: Возвращает последний номер MFN в текущей базе данных, увеличенный на единицу (MAX_MFN) + 1). В общем случае параметр имеет вид 2N, где N - выводимое количество символов, обрезанное до необходимой длинны справа..
Формат (передаваемая строка):
Пример:
&unifor('2'), &unifor('27')
Вернуть номер поколения ИРБИС – &uf('+9V…
Вид функции: +9V.
Назначение: Возвращает поколение системы, в которой осуществляется расформатирование. Может быть полезен при разработке единых форматов, которые по-разному выполняются в ИРБИС 32 и ИРБИС 64.
Присутствует в версиях ИРБИС с 2011.1.
Формат (передаваемая строка):
+9V
который возвращает:
- 32 – если форматирование выполняется в ИРБИС 32;
- 64 – если в ИРБИС 64 (и ИРБИС 128).
Форматировать предыдущую копию текущей записи – &uf('4N…
Вид функции: 4N.
Назначение: Форматировать предыдущую копию текущей записи.
Присутствует в версиях ИРБИС с 2011.1.
Формат (передаваемая строка):
4N,Format
где:
- N – номер копии (в обратном порядке, т.е. если N=1 – это один шаг назад, N=2 – два шага назад и т.д.). Может принимать значение * – это указывает на последнюю копию. Если N – пустое значение, то в случае повторяющейся группы в качестве значения N берется НОМЕР ТЕКУЩЕГО ПОВТОРЕНИЯ, в противном случае берется первая копия;
- Format – формат; может задаваться непосредственно или в виде @имя_формата.
Если не задается ни N ни Format, т.е. &unifor('4'), то возвращается количество предыдущих копий. Если запись не имеет предыдущих копий, то &unifor('4') возвращает 0, а все остальные конструкции &unifor('4...') возвращают пустоту.
Примеры:
&unifor('41,@brief') (...&unifor('4,v200^a')...) &unifor('4*,(v910/)')
Примечание: в связи с этим см. также новую команду глобальной корректировки – ВОССТАНОВИТЬ ПРЕДЫДУЩУЮ КОПИЮ.
Функции для работы с повторяющимися группами
Дополнительно о повторяющихся группах см. в подразделе Повторяющиеся группы статьи Язык форматирования системы ИРБИС.
Выдача метки, порядкового номера и значения поля в соответствии с индексом (номером повторения) повторяющейся группы – &uf('+4…
Вид функции: +4.
Назначение: Выдача метки, порядкового номера и значения поля в соответствии с индексом (номером повторения) повторяющейся группы.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+4XY
где:
- Х принимает три значения: T – выдать метку; F – выдать значение поле; N – выдать порядковый номер поля в записи (отличается от индекса повторения, если Y принимает значение 1);
- Y принимает значения: 0 – поля выдаются в порядке расположения в записи; 1 – поля выдаются в порядке возрастания меток (по умолчанию 0).
Примеры:
(…&unifor('+4T1'),'_' &unifor('+4N1'),': ', &unifor('+4F1'),'
'…)
Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы – &uf('+5…
Вид функции: +5.
Назначение: Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы.
Присутствует в версиях ИРБИС с 2005.2.
Формат (передаваемая строка):
+5Х<имя_справочника/списка>
где Х принимает значения: Т – выдать значение; F – выдать пояснение (имеет смысл, если задается справочник, т.е. файл с расширением MNU).
Примеры:
…(…&unifor('+5Tfield.mnu'),' – ',&unifor('+5Ffield.mnu'),'
'…)
Вернуть номер текущего повторения в повторяющейся группе – &uf('+90…
Вид функции: +90.
Назначение: Вернуть номер текущего повторения в повторяющейся группе.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+90
Функции для работы с базой данных электронного каталога
Выдать библиографическую свертку документа – &uf('B…
Вид функции: B.
Назначение: Выдать библиографическую свертку документа.
Формат (передаваемая строка):
B
Примеры:
&unifor('B')
Контроль ISSN/ISBN – &uf('C…
Вид функции: C.
Назначение: Контроль ISSN/ISBN. Возвращаемое значение: 0 – при положительном результате, 1 – при отрицательном.
Формат (передаваемая строка):
С<ISSN/ISBN>
Примеры:
&unifor("C"v10^a)
Вернуть окончание термина – &uf('L…
Вид функции: L.
Назначение: Вернуть окончание термина.
Формат (передаваемая строка):
L<начало_термина>
Примеры:
&unifor("L"v101)
Кумуляция номеров журналов – &uf('U…
Вид функции: U.
Назначение: Кумуляция номеров журналов.
Формат (передаваемая строка):
U<strbase>,<stradd>
где:
- <strbase> – исходная кумулированная строка.
- <stradd> – кумулируемые номера.
Примеры:
&unifor("U"v909^h",12")
Декумуляция номеров журналов – &uf('V…
Вид функции: V.
Назначение: Декумуляция номеров журналов.
Формат (передаваемая строка):
V<strbase>
где: <strbase> – исходная строка для декумуляции.
Примеры:
&unifor("V"v909^h")
Контроль кумуляции – &uf('W…
Вид функции: W.
Назначение: Контроль кумуляции.
Формат (передаваемая строка):
W<strbadd>,<strbase>
где:
- <strbase> – исходная кумулированная строка.
- <stradd> – кумулируемый номер.
Возвращаемые значения:
- 0 – если <stradd> не присутствует в <strbase>.
- 1 – если <stradd> присутствует в <strbase>.
Примеры:
&unifor("W12,"v909^h)
Вывод сведений о всех экземплярах по всем местам хранения – &uf('O…
Вид функции: O.
Назначение: Вывод сведений о всех экземплярах по всем местам хранения.
Формат (передаваемая строка):
Пример:
&unifor('O')
Возвращает данные о всех свободных (не выданных) экземплярах по всем местах хранения – &uf('Y…
Вид функции: Y.
Назначение: Возвращает данные о всех свободных (не выданных) экземплярах по всем местах хранения.
Формат (передаваемая строка):
Пример:
&unifor('Y')
Функции для работы с файлами
Вернуть имя файла из заданного полного пути/имени – &uf('+91…
Вид функции: +91.
Назначение: Вернуть имя файла из заданного полного пути/имени.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+91
Вернуть путь из заданного полного пути/имени – &uf('+92…
Вид функции: +92.
Назначение: Вернуть путь из заданного полного пути/имени.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+92
Вернуть расширение из заданного полного пути/имени – &uf('+93…
Вид функции: +93.
Назначение: Вернуть расширение из заданного полного пути/имени.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+93
Вернуть имя диска из заданного полного пути/имени – &uf('+94…
Вид функции: +94.
Назначение: Вернуть имя диска из заданного полного пути/имени.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+94
Проверить наличие файла/корректность URL – &uf('+9L…
Вид функции: +9L.
Назначение: Проверить наличие файла/корректность URL.
Присутствует в версиях ИРБИС с 2013.1.
Формат (передаваемая строка):
+9L<path>,<dbname>,<filename>
где:
- <path> – определяет путь к файлу и принимает значения: 0 – папка, в которой установлена серверная часть ИРБИС (<IRBIS_SERVER_ROOT>); 1 – общая директория баз данных (по умолчанию <IRBIS_SERVER_ROOT>\DATAI); 2,3,10 – папка БД <dbname>; 11 – абсолютный путь/URL.
- <dbname> – имя БД (имеет смысл только при path=2,3,10).
- <filename> – путь и имя файла или URL.
Функция возвращает: 0 – если файл отсутствует/некорректный URL; 1 – если файл присутствует/корректный URL.
Примеры:
&uf('+9L1,,\deposit\rksu.fst') (....&uf('+9L10,',&uf('+D'),',',v951^A)....)
Вставить данные из заданного текстового файла – &uf('+9C…
Вид функции: +9C.
Назначение: Вставить данные из заданного текстового файла.
Формат (передаваемая строка):
+9С<path>,<dbname>,<filename>
где:
- <path> – определяет путь к файлу и принимает значения: 0 – основная директория системы (для ИРБИС32 – та, где находятся исполняемые модули; для ИРБИС64 – та, где находятся исполняемые модули сервера); 1 – общая директория баз данных (по умолчанию \DATAI); 10 – директория конкретной БД;
- <dbname> – имя БД (имеет смысл только при path=10). По умолчанию – предполагается текущая БД;
- <filename> – имя файла;
Вернуть размер файла в байтах. – &uf('+9A…
Вид функции: +9A.
Назначение: Вернуть размер файла в байтах..
Формат (передаваемая строка):
+9A
Сохранить заданный внутренний двоичный объект в заданном файле – &uf('+9D…
Вид функции: +9D.
Назначение: Сохранить заданный внутренний двоичный объект в заданном файле.
Присутствует в версиях ИРБИС с 2006.2.
Формат (передаваемая строка):
+9DNN#<полный путь>
где NN – номер внутреннего двоичного объекта.
Представить заданный двоичный файл в кодированном виде – &uf('+9J…
Вид функции: +9J.
Назначение: Представить заданный двоичный файл в виде: ^A<тип_файла>^B<данные файла перекодированные на основе URLEncode>.
Присутствует в версиях ИРБИС с 2010.1.
Формат (передаваемая строка):
+9J<полный путь и имя файла>
Имя файла может задаваться в виде маски, в этом случае использоваться будет первый найденный соответствующей маске файл.
Удалить заданный файл – &uf('+9K…
Вид функции: +9K.
Назначение: Удалить заданный файл. Если имя файла задано в виде маски, то удаляться будут все соответствующие маске файлы.
Присутствует в версиях ИРБИС с 2010.1.
Формат (передаваемая строка):
+9K<полный путь и имя файла>
Функции, используемые только в глобальной корректировке
Размножение экземпляров – &uf('Z…
Вид функции: Z.
Назначение: Размножение экземпляров. Функция ничего не возвращает. Можно применять только в глобальной корректировке.
Формат (передаваемая строка):
Z
Примеры:
&unifor('Z')
Отсортировать повторения заданного поля – &uf('M…
Вид функции: M.
Назначение: Отсортировать повторения заданного поля (имеется в виду строковая сортировка) – функция ничего не возвращает. Можно применять только в глобальной корректировке.
Формат (передаваемая строка):
MX<tag>^<delims>
где:
- X – вид сортировки: I – по возрастанию; D – по убыванию.
- <tag> – метка поля.
- <delims> – разделители подполей, определяющих ключ сортировки.
Примеры:
&unifor('MI910^BD')
Выполнить внешнюю программу
Выполнить формат – &uf('6…
Вид функции: 6.
Назначение: Выполнить формат.
Формат (передаваемая строка):
6<имя файла формата>
где <имя файла формата> – имя файла формата, указывается без расширения. Файл формата будет найден по заданному имени, обязательному расширению .pft и местоположению: в папке базы данных, а если там нет, то в папке <IRBIS_SERVER_ROOT>\Deposit.
Подробнее о выполнении файла формата см. в Подразделе Язык форматирования системы ИРБИС статьи Выполнение файла формата.
Выполнить внешнее приложение – &uf('+2…
Вид функции: +2.
Назначение: Выполняет внешнее приложение. Всё, что после +2 – параметры командной строки..
Формат (передаваемая строка):
Примеры:
&unifor('+2cmd')
Вызвать функцию из внешней DLL – &uf('+8…
Вид функции: +8.
Назначение: Вызвать функцию из внешней DLL.
Присутствует в версиях ИРБИС с 2006.1.
Формат (передаваемая строка):
+8<имя_DLL>,<имя_функции>,<передаваемые_данные>
Внешние функции должны ОБЯЗАТЕЛЬНО иметь следующую структуру:
- в случае Pascal
test_function1(buf1,buf2: Pchar; bufsize: integer): integer;
- в случае C
int test_function1(char *buf1, char *buf2, int bufsize)
где: buf1 – передаваемые данные (входные), buf2 – возвращаемые данные (выходные), bufsize – размер выходного буфера (buf2). В ИРБИС64 данные передаются и возвращаются в UTF8. Возврат функции: 0 – нормальное завершение; любое другое значение – ненормальное. В случае нестандартного вызова функций из DLL (по Pascal-правилам) надо указывать символ * перед именем DLL:
&unifor('+8*<имя_DLL>,<имя_функции>,....
Следует помнить, что имя функции в вызове надо указывать строго в соответствии с тем, как она экспортирована из DLL, большие и маленькие буквы различаются.
Примеры:
В вызываемую функцию передается заглавие:
&unifor('+8test_dll,test_function1,',v200^a)
Передаются повторения 910 поля:
(&unifor('+8test_dll,test_function2,',v910))
Передается вся текущая запись:
(&unifor('+8test_dll,test_function2,',&unifor('+0')))
Функции, не вошедшие в другие категории
Универсальный счетчик – &uf('S…
Вид функции: S.
Назначение: Универсальный счетчик.
Формат (передаваемая строка):
SN
где:
- N=0 – обнулить счетчик.
- N=1..9 – увеличить значение счетчика на со-отв. значение.
- N=A – вернуть значение счетчика – арабскими цифрами.
- N=X – вернуть значение счетчика – римскими цифрами.
Примеры:
&unifor('S0') &unifor('S1') &unifor('SA')
Генерация случайного числа – &uf('R…
Вид функции: R.
Назначение: Генерация случайного числа.
Формат (передаваемая строка):
RNN
где NN – кол-во знаков в случайном числе (по умолчанию – 6).
Примеры:
&unifor('R') &unifor('R4')
Чистка данных от команд контекстного выделения – &uf('[…
Вид функции: [.
Назначение: Чистка данных от команд контекстного выделения.
Присутствует в версиях ИРБИС с 2008.1.
Формат (передаваемая строка):
[
Примеры:
&unifor('[')
Вывод количества документов, найденных во внешней базе по команде G.(команда возвращает строку RESULT=[кол-во найденных по запросу документов]) – &uf('+3G…
Вид функции: +3G.
Назначение: Вывод количества документов, найденных во внешней базе по команде G.(команда возвращает строку RESULT=[кол-во найденных по запросу документов]).
Формат (передаваемая строка):
+3G[URL к внешнему сайту WEB ИРБИС, с запросом G]
Расформатирует найденные по запросу записи. Если [количество выводимых записей]=0, то возвращает только количество найденных по запросу документов – &uf('+3S…
Вид функции: +3S.
Назначение: Расформатирует найденные по запросу записи. Если [количество выводимых записей]=0, то возвращает только количество найденных по запросу документов.
Формат (передаваемая строка):
+3S[имя базы],[количество выводимых записей],[ограничитель][формат][ограничитель],[формат или @имя файла с форматом]
Функция введена для оптимизации скорости проверки наличия текста в полнотекстовой базе данных – &uf('+3C…
Вид функции: +3C.
Назначение: Функция предназначена для обрезания перед помещением в словарь базы данных значения, формируемого путём соединения префикса TXT= и содержимого подполя ^B ссылки на текстовый файл полнотекстовой базы. Подробнее см. в подразделе Префикс TXT статьи Схема полнотекстовой базы данных.
Присутствует в версиях ИРБИС с 2013.1.
Формат (передаваемая строка):
Устаревшие, не рекомендованные к использованию UNIFOR'ы
Устаревшие функции для работы с глобальными переменными
Очистить (опустошить) все глобальные переменные – &uf('+1…
Вид функции: +1.
Назначение: Очистить (опустошить) все глобальные переменные.
Формат (передаваемая строка):
+1
Примеры:
&unifor('+1')
Чтение глобальных переменных – &uf('+1R…
Вид функции: +1R.
Назначение: Чтение глобальных переменных.
Присутствует в версиях ИРБИС с 2004.1.
Формат (передаваемая строка):
+1RNNN,nnn
где:
- NNN – номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе.
- nnn – кол-во переменных (по умолчанию 1).
Примеры:
&unifor('+1R100,2')
Запись в глобальные переменные – &uf('+1W…
Вид функции: +1W.
Назначение: Запись в глобальные переменные.
Присутствует в версиях ИРБИС с 2004.1.
Формат (передаваемая строка):
+1WNNN,MMM#SSSS
где:
- NNN – номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе.
- MMM – номер переменной для сохранения кол-ва записанных переменных (по умолчанию не используется).
- SSSS – список строк (результат расформатирования). Если задан MMM – каждая строка пишется в отдельную переменную, в противном случае все пишется в одну переменную.
Примеры:
&unifor('+1W100,0#',(v910/))
Групповая мультираскодировка переменных – &uf('+1K…
Вид функции: +1K.
Назначение: Групповая мультираскодировка переменных.
Формат (передаваемая строка):
+1K<MNU>|NNN,nnn
где:
- NNN – номер первой или единственной переменной.
- nnn – кол-во переменных (по умолчанию 1).
Примеры:
&unifor('+1Kmhr.mnu|100,10')
Перемножение двух списков (групп переменных) – &uf('+1M…
Вид функции: +1M.
Назначение: Перемножение двух списков (групп переменных).
Формат (передаваемая строка):
+1MNNN,nnn#MMM,mmm
где параметры аналогичны описанным для функции Групповая мультираскодировка переменных – &uf('+1K….
Вычитание списков (групп переменных) – &uf('+1S…
Вид функции: +1S.
Назначение: Вычитание списков (групп переменных).
Формат (передаваемая строка):
+1SNNN,nnn#MMM,mmm
где параметры аналогичны описанным для функции Групповая мультираскодировка переменных – &uf('+1K…
Сложение списков (групп переменных) – &uf('+1A…
Вид функции: +1A.
Назначение: Сложение списков (групп переменных).
Формат (передаваемая строка):
+1ANNN,nnn#MMM,mmm
где параметры аналогичны описанным для функции Групповая мультираскодировка переменных – &uf('+1K…
Исключение неоригинальных значений из группы переменных – &uf('+1G…
Вид функции: +1G.
Назначение: Исключение неоригинальных значений из группы переменных.
Формат (передаваемая строка):
+1GNNN,nnn
где параметры аналогичны описанным для функции Групповая мультираскодировка переменных – &uf('+1K…
Сортировка группы переменных – &uf('+1T…
Вид функции: +1T.
Назначение: Сортировка группы переменных.
Формат (передаваемая строка):
+1TNNN,nnn
где параметры аналогичны описанным для функции Групповая мультираскодировка переменных – &uf('+1K…
Неописанные UNIFOR'ы
– &uf('Неописанный UNIFOR &unifor('11R^c?v210*2')…
Вид функции: Неописанный UNIFOR &unifor('11R^c?v210*2').
Назначение: .
Формат (передаваемая строка):
– &uf('Неописанный UNIFOR &umarci('1200#h#2')…
Вид функции: Неописанный UNIFOR &umarci('1200#h#2').
Назначение: .
Формат (передаваемая строка):
– &uf('Неописанный UNIFOR &umarci('2210#^c')…
Вид функции: Неописанный UNIFOR &umarci('2210#^c').
Назначение: .
Формат (передаваемая строка):
– &uf('Неописанный UNIFOR &umarci('3210#2#^c')…
Вид функции: Неописанный UNIFOR &umarci('3210#2#^c').
Назначение: .
Формат (передаваемая строка):
Ссылки
См. также:
- Язык форматирования системы ИРБИС
- Операторы языка форматирования ИРБИС
- Функции языка форматирования ИРБИС
Источники информации:
- Общее описание системы ИРБИС64
- Техническая документация WEB ИРБИС64 и WEB ИРБИС32. Актуальная версия документа доступна на форуме.
- История версий ИРБИС (файл RELEASE_OVERALL.doc) версии 2008.1
- Файл описания релиза 2009.1
- Файл описания релиза 2010.1
- Файл описания релиза 2011.1
- Файл описания релиза 2013.1