UNIFOR — различия между версиями

Материал из Wikipedia
Перейти к: навигация, поиск
(Функции для работы с глобальными переменными)
(Функции для работы с датой и временем)
 
(не показано 95 промежуточных версий 6 участников)
Строка 1: Строка 1:
UNIFOR – программная функция (также говорят ''формат-программа'' или ''форматный выход''), предназначенная для вызова из [[Язык форматирования системы ИРБИС#Понятие формата|форматов]]. UNIFOR реализует выполнение таких операций по форматированию, которые не могут быть выполнены с помощью собственно [[Язык форматирования системы ИРБИС|языка форматирования]].
+
UNIFOR – [[Язык форматирования системы ИРБИС#Форматные выходы. UNIFOR|''форматный выход'']], реализующий множество функций вне базовых рамок [[Язык форматирования системы ИРБИС|языка форматирования]].
 +
 
 +
В статье для удобства перечень форматных выходов UNIFOR разбит на категории.
  
 
==Использование UNIFOR==
 
==Использование UNIFOR==
  
Обращение к программной функции UNIFOR в формате производится в полной или сокращённой форме:
+
UNIFOR имеет следующий синтаксис в языке форматирования (в полной или сокращённой форме):
 
  &unifor(формат)
 
  &unifor(формат)
 
  &uf(формат)
 
  &uf(формат)
 
где:
 
где:
* '''<tt>&</tt>''' – идентификатор вызова формат-программы;
+
* '''<tt>&</tt>''' – идентификатор вызова форматного выхода,
* '''<tt>unifor</tt>''' – имя формат-программы (соответственно '''<tt>uf</tt>''' – сокращённое имя формат-программы);
+
* '''<tt>unifor</tt>''' – имя форматного выхода (соответственно '''<tt>uf</tt>''' – сокращённое имя),
 
* '''<tt>формат</tt>''' – аргумент.
 
* '''<tt>формат</tt>''' – аргумент.
  
Рекомендуется использовать сокращённую форму вызова программной функции UNIFOR. Сокращённая форма по действию ничем не отличается от полной формы, зато позволяет сократить размер формата и повысить его читаемость.
+
Рекомендуется использовать сокращённую форму вызова UNIFOR. Сокращённая форма по действию ничем не отличается от полной формы, зато позволяет сократить размер формата и повысить его читаемость.
 +
 
 +
Вид реализуемой функции определяется первыми символами строки, которая формируется в результате выполнения формата, передаваемого в качестве аргумента.
 +
 
 +
===Передача параметров===
 +
 
 +
Во многих функциях, которые позволяет реализовать форматный выход UNIFOR, для передачи параметра неизвестной длины используется уникальный разделитель. Значение параметра должно быть окружено таким уникальным разделителем слева и справа.
  
Вид реализуемой функции определяется первыми символами строки, которая формируется в результате выполнения формата, передаваемого в качестве аргумента формат-программы.
+
Например, если исходная строка
 +
!AAAA!BBBB
 +
то в качестве уникального разделителя выступает символ
 +
!
 +
значение параметра
 +
AAAA
 +
а оставшаяся часть исходной строки
 +
BBBB
  
==Перечень функций формат-программы UNIFOR с примерами их применения==
+
==Перечень функций UNIFOR с примерами их применения==
  
 
===Функции для обработки строк===
 
===Функции для обработки строк===
Строка 24: Строка 39:
 
|name=+95
 
|name=+95
 
|title=Вернуть длину исходной строки
 
|title=Вернуть длину исходной строки
 +
|versionFilename=RELEASE_6_1.doc
 +
|versionText=2006.1
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
Строка 32: Строка 49:
 
|name=+96
 
|name=+96
 
|title=Вернуть часть строки
 
|title=Вернуть часть строки
 +
|versionFilename=RELEASE_6_1.doc
 +
|versionText=2006.1
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
Строка 42: Строка 61:
  
 
'''Примеры:'''
 
'''Примеры:'''
  &unifor("G0#"v700)
+
  &uf('+960*0.4#'v100)
  &unifor("G1-"v700^a)
+
  &uf('+960*5.4#'v100)
 
+
  &uf('+961*0.4#'v100)
{{Описание функции UNIFOR
 
|name=G
 
|title=Вернуть часть строки до или начиная с заданного символа
 
|sectionLevel======
 
}}
 
 
 
GNA<строка>
 
где:
 
* N=0 если ДО заданного символа (не включая его); N=1 если начиная С заданного символа (включая его).
 
* А – заданный символ (# – обозначает цифру; $ – обозначает букву).
 
 
 
'''Примеры:'''
 
  &unifor("G0#"v700)
 
&unifor("G1-"v700^a)
 
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
Строка 74: Строка 79:
 
|name=+97
 
|name=+97
 
|title=Вернуть заданную строку в верхнем регистре
 
|title=Вернуть заданную строку в верхнем регистре
 +
|versionFilename=RELEASE_6_1.doc
 +
|versionText=2006.1
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
Строка 83: Строка 90:
 
|title=Заменить в заданной строке один символ на другой
 
|title=Заменить в заданной строке один символ на другой
 
|description=Заменить в заданной строке один символ на другой (регистр учитывается)
 
|description=Заменить в заданной строке один символ на другой (регистр учитывается)
 +
|versionFilename=RELEASE_7_2.doc
 +
|versionText=2007.2
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
Строка 90: Строка 99:
 
* a – заменяемый символ;
 
* a – заменяемый символ;
 
* b – заменяющий символ.
 
* b – заменяющий символ.
 +
 +
'''Примеры:'''
 +
 +
В результате выполнения формата
 +
&uf('+98 0',f(1,5,0))
 +
получится значение
 +
00001
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
 
|name=+9F
 
|name=+9F
 
|title=Вернуть ANSI-символ с заданным кодом
 
|title=Вернуть ANSI-символ с заданным кодом
 +
|versionFilename=RELEASE_8_1.doc
 +
|versionText=2008.1
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
  
 
  +9F<код>
 
  +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> – уникальный разделитель, отсутствующий в искомой подстроке.
  
 
====Функции для работы со словами====
 
====Функции для работы со словами====
Строка 129: Строка 182:
 
|name=+9G
 
|name=+9G
 
|title=Преобразовать заданную строку в список слов
 
|title=Преобразовать заданную строку в список слов
 +
|versionFilename=RELEASE_8_1.doc
 +
|versionText=2008.1
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
  
 
  +9G<строка>
 
  +9G<строка>
 +
 +
Границы слов определяются на основе [[Файлы ИРБИС#Таблица алфавитных символов|таблицы алфавитных символов]].
  
 
====Дополнительные функции для обработки строк====
 
====Дополнительные функции для обработки строк====
Строка 139: Строка 196:
 
|name=+3E
 
|name=+3E
 
|title=Кодирование данных для представления в URL
 
|title=Кодирование данных для представления в URL
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
|sectionLevel======
 
|sectionLevel======
 
}}
 
}}
Строка 150: Строка 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
Строка 166: Строка 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
Строка 188: Строка 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<арабское_число>
  
 
===Функции для работы с датой и временем===
 
===Функции для работы с датой и временем===
Строка 198: Строка 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>3СГГГГММДД/ГГГГММДД</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
 
}}
 
}}
  
Строка 231: Строка 467:
 
|name=+7R
 
|name=+7R
 
|title=Чтение глобальной переменной
 
|title=Чтение глобальной переменной
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 247: Строка 485:
 
|name=+7W
 
|name=+7W
 
|title=Запись глобальной переменной
 
|title=Запись глобальной переменной
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 260: Строка 500:
 
|name=+7U
 
|name=+7U
 
|title=Добавление повторений глобальной переменной
 
|title=Добавление повторений глобальной переменной
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 270: Строка 512:
 
|name=+7M
 
|name=+7M
 
|title=Логическое перемножение повторений двух переменных
 
|title=Логическое перемножение повторений двух переменных
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 278: Строка 522:
 
|name=+7S
 
|name=+7S
 
|title=Логическое вычитание повторений двух переменных
 
|title=Логическое вычитание повторений двух переменных
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 286: Строка 532:
 
|name=+7A
 
|name=+7A
 
|title=Логическое сложение повторений двух переменных
 
|title=Логическое сложение повторений двух переменных
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 294: Строка 542:
 
|name=+7G
 
|name=+7G
 
|title=Исключение неоригинальных повторений переменной
 
|title=Исключение неоригинальных повторений переменной
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 302: Строка 552:
 
|name=+7T
 
|name=+7T
 
|title=Сортировка повторений переменной
 
|title=Сортировка повторений переменной
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 308: Строка 560:
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
|name=+1
+
|name=+99
|title=Очистить (опустошить) все глобальные переменные
+
|title=Групповая установка глобальных переменных
 +
|description=Групповая установка глобальных переменных. Применяется для ИРБИС-Навигатора. Исходная строка закодирована с помощью URL-кодировки. После раскодировки рассматривается как список строк (аналогично <tt>TStringList.Text</tt> в Delphi). Каждая строка этого списка имеет структуру: <tt>NNN#<значение_глобальной_переменной_NNN><tt>
 +
|versionFilename=RELEASE_6_1.doc
 +
|versionText=2006.1
 
}}
 
}}
  
  +1
+
  +99
  
'''Примеры:'''
+
===Функции для работы с базой данных===
&unifor('+1')
 
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
|name=+1R
+
|name=0
|title=Чтение глобальных переменных
+
|title=Выдать содержимое документа полностью в формате RTF
 +
|description=Выдать содержимое документа полностью (формат ALLl)
 
}}
 
}}
 
+
  0
  +1RNNN,nnn
 
где:
 
* NNN – номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе.
 
* nnn – кол-во переменных (по умолчанию 1).
 
 
 
  
 
'''Примеры:'''
 
'''Примеры:'''
  &unifor('+1R100,2')
+
  &unifor('0')
  
{{Описание функции UNIFOR
+
'''Результат расформатирования:'''
|name=+1W
+
  \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
|title=Запись в глобальные переменные
 
}}
 
 
 
  +1WNNN,MMM#SSSS
 
где:
 
* NNN – номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе.
 
* MMM – номер переменной для сохранения кол-ва записанных переменных (по умолчанию  не используется).
 
* SSSS – список строк (результат расформатирования). Если задан MMM – каждая строка пишется в отдельную переменную, в противном случае все пишется в одну переменную.
 
 
 
'''Примеры:'''
 
&unifor('+1W100,0#',(v910/))
 
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
|name=+1K
+
|name=+0
|title=Групповая мультираскодировка переменных
+
|title=Выдать содержимое документа полностью во внутреннем представлении
 +
|description=Выдать содержимое документа полностью (формат ALLl)
 
}}
 
}}
 +
+0
  
  +1K<MNU>|NNN,nnn
+
'''Результат расформатирования:'''
где:
+
0
* NNN – номер первой или единственной переменной.
+
2#0
* nnn – кол-во переменных (по умолчанию 1).
+
0#1
 
+
  910#^YДА^PНЮАУ - каф. кримінального права
'''Примеры:'''
+
920#ATHRA
  &unifor('+1Kmhr.mnu|100,10')
+
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=+1M
+
|name=++0
|title=Перемножение двух списков (групп переменных)
+
|title=Выдать содержимое документа полностью – только содержимое полей
 +
|description=Выдать содержимое документа полностью (формат ALLl)
 
}}
 
}}
 +
++0
  
+1MNNN,nnn#MMM,mmm
 
где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}}
 
 
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
|name=+1S
+
|name=+@
|title=Вычитание списков (групп переменных)
+
|title=Выдать содержимое документа полностью в формате JSON
 +
|versionFilename=RELEASE_2014_1.doc
 +
|versionText=2014.1
 +
|sectionLevel=====
 
}}
 
}}
 
+
  +@
  +1SNNN,nnn#MMM,mmm
 
где параметры аналогичны описанным для функции {{Описание функции UNIFOR (ссылка)|name=+1K|title=Групповая мультираскодировка переменных}}
 
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
|name=+1A
+
|name=+N
|title=Сложение списков (групп переменных)
+
|title=Выдать количество повторений поля
}}
+
|description=Выдать количество повторений поля, метка которого указана после идентификатора функции
 
 
+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
 
|name=+99
 
|title=Групповая установка глобальных переменных
 
|description=Групповая установка глобальных переменных. Применяется для ИРБИС-Навигатора. Исходная строка закодирована с помощью URL-кодировки. После раскодировки рассматривается как список строк (аналогично <tt>TStringList.Text</tt> в Delphi). Каждая строка этого списка имеет структуру: <tt>NNN#<значение_глобальной_переменной_NNN><tt>
 
}}
 
 
 
+99
 
 
 
===Функции для работы с базой данных===
 
 
 
{{Описание функции UNIFOR
 
|name=0
 
|title=Выдать содержимое документа полностью
 
|description=Выдать содержимое документа полностью (формат ALLl)
 
 
}}
 
}}
0
+
+N
  
 
'''Примеры:'''
 
'''Примеры:'''
  &unifor('0')
+
  &unifor('+N910')
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
Строка 444: Строка 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
Строка 512: Строка 744:
 
|title=Расформатирование группы связанных документов из другой БД
 
|title=Расформатирование группы связанных документов из другой БД
 
|description=Расформатирование группы связанных документов из другой БД (отношение «от одного к многим»)
 
|description=Расформатирование группы связанных документов из другой БД (отношение «от одного к многим»)
 +
Функция обеспечивает возможность связать запись с рядом других записей по какому бы то ни было общему признаку. К примеру, можно отобрать все записи с определенным заглавие, индексом УДК/ББК, ключевым словом.
 +
|versionFilename=RELEASE_4_1.doc
 +
|versionText=2004.1
 
}}
 
}}
  
Строка 522: Строка 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
Строка 527: Строка 764:
 
|title=Команда постредактуры: очистить результат расформатирования от двойных разделителей
 
|title=Команда постредактуры: очистить результат расформатирования от двойных разделителей
 
|description=Команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. – >). Имеет смысл использовать один раз в любом месте формата
 
|description=Команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. – >). Имеет смысл использовать один раз в любом месте формата
 +
|versionFilename=RELEASE_4_1.doc
 +
|versionText=2004.1
 
}}
 
}}
  
Строка 538: Строка 777:
 
|title=Команда постредактуры: очистить результат расформатирования от RTF-конструкций
 
|title=Команда постредактуры: очистить результат расформатирования от RTF-конструкций
 
|description=Команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата
 
|description=Команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата
 +
|versionFilename=RELEASE_4_1.doc
 +
|versionText=2004.1
 
}}
 
}}
  
Строка 577: Строка 818:
 
|name=+I
 
|name=+I
 
|title=Формирования ссылки (гиперссылки)
 
|title=Формирования ссылки (гиперссылки)
 +
|versionFilename=RELEASE_4_1.doc
 +
|versionText=2004.1
 
}}
 
}}
  
Строка 601: Строка 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
 
}}
 
}}
  
Строка 618: Строка 935:
 
|name=+5
 
|name=+5
 
|title=Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы
 
|title=Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы
 +
|versionFilename=RELEASE_5_2.doc
 +
|versionText=2005.2
 
}}
 
}}
  
Строка 629: Строка 948:
 
|name=+90
 
|name=+90
 
|title=Вернуть номер текущего повторения в повторяющейся группе
 
|title=Вернуть номер текущего повторения в повторяющейся группе
 +
|versionFilename=RELEASE_6_1.doc
 +
|versionText=2006.1
 
}}
 
}}
  
 
  +90
 
  +90
 
{{Описание функции UNIFOR
 
|name=+6
 
|title=Выдать статус записи
 
|description=Выдать статус записи. Если запись логически удаленная, возвращается 0, в противном случае – 1
 
}}
 
 
+6
 
 
'''Примеры:'''
 
… if &unifor('+6')='0' then 'запись логически удаленная' fi …
 
  
 
===Функции для работы с базой данных электронного каталога===
 
===Функции для работы с базой данных электронного каталога===
Строка 717: Строка 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<полный путь и имя файла>
  
 
===Функции, используемые только в глобальной корректировке===
 
===Функции, используемые только в глобальной корректировке===
Строка 745: Строка 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')))
  
 
===Функции, не вошедшие в другие категории===
 
===Функции, не вошедшие в другие категории===
Строка 774: Строка 1263:
  
 
'''Примеры:'''
 
'''Примеры:'''
  &unifor('R10')
+
  &unifor('R')
 +
&unifor('R4')
 +
 
 +
{{Описание функции UNIFOR
 +
|name=[
 +
|title=Чистка данных от команд контекстного выделения
 +
|versionFilename=RELEASE_8_1.doc
 +
|versionText=2008.1
 +
}}
  
 +
[
 +
 +
'''Примеры:'''
 +
&unifor('[')
  
 
{{Описание функции UNIFOR
 
{{Описание функции UNIFOR
|name=+9
+
|name=+3G
|title=Группа технических форматных выходов
+
|title=<nowiki>Вывод количества документов, найденных во внешней базе по команде G.(команда возвращает строку RESULT=[кол-во найденных по запросу документов])</nowiki>
 
}}
 
}}
  
  +9T<исходные_данные>
+
  +3G[URL к внешнему сайту WEB ИРБИС, с запросом G]
T – определяет тип и принимает следующие значения:
+
 
* 0 вернуть номер текущего повторения в повторяющейся группе (исходные данные не задаются);
+
{{Описание функции UNIFOR
* 1 – вернуть имя файла из заданного полного пути/имени;
+
|name=+3S
* 2 – вернуть путь из заданного полного пути/имени;
+
|title=<nowiki>Расформатирует найденные по запросу записи. Если [количество выводимых записей]=0, то возвращает только количество найденных по запросу документов</nowiki>
* 3 – вернуть расширение из заданного полного пути/имени;
+
}}
* 4 – вернуть имя диска из заданного полного пути;
+
 
* 5 – вернуть длину исходной строки;
+
+3S[имя базы],[количество выводимых записей],[ограничитель][формат][ограничитель],[формат или @имя файла с форматом]
* 6 – вернуть фрагмент строки:
+
 
  +96A*SSS.NNN#<строка>
+
{{Описание функции 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
 
где:
 
где:
** A – направление: 0 с начала строки; 1 – с конца;
+
* NNN номер первой или единственной переменной, возможна конструкция *+-<число>. * – номер текущего повторения в повторяющейся группе.
** SSS смещение;
+
* MMM номер переменной для сохранения кол-ва записанных переменных (по умолчанию  не используется).
** NNN – кол-во символов;
+
* SSSS список строк (результат расформатирования). Если задан MMM – каждая строка пишется в отдельную переменную, в противном случае все пишется в одну переменную.
* 7 вернуть строку в верхнем регистре;
+
 
* 8 – заменить в заданной строке один символ на другой (регистр учитывается):
+
'''Примеры:'''
  +98ab<строка>
+
&unifor('+1W100,0#',(v910/))
 +
 
 +
{{Описание функции UNIFOR
 +
|name=+1K
 +
|title=Групповая мультираскодировка переменных
 +
}}
 +
 
 +
  +1K<MNU>|NNN,nnn
 
где:
 
где:
** a заменяемый символ;
+
* NNN номер первой или единственной переменной.
** b – заменяющий символ;
+
* nnn кол-во переменных (по умолчанию 1).
* 9 групповая установка глобальных переменных (для ИРБИС-Навигатора). Исходная строка закодирована через URLEncode (&unifor('+3E....). После раскодировки рассматривается как список строк(TStringList.Text). Каждая строка этого списка имеет структуру: NNN#<значение_глобальной_переменной_NNN>;
+
 
* C – вставить данные из заданного текстового файла:
+
'''Примеры:'''
  +9С<path>,<dbname>,<filename>
+
&unifor('+1Kmhr.mnu|100,10')
** <path> – определяет относительный путь к файлу в рамках ИР-БИС и принимает значения: 0 – основная директория системы (для ИРБИС32 – та, где находятся исполняемые модули; для ИРБИС64 – та, где находятся исполняемые модули сервера); 1 – общая директория баз данных (по умолчанию \DATAI); 10 – директо-рия конкретной БД;
+
 
** <dbname> – имя БД (имеет смысл только при path=10). По умолчанию – предполагается текущая БД;
+
{{Описание функции UNIFOR
** <filename> – имя файла;
+
|name=+1M
* D – сохранить заданный внутренний двоичный объект в заданном файле: +9DNN#<полный путь>, где NN – номер внутреннего двоичного объекта;
+
|title=Перемножение двух списков (групп переменных)
* F – вернуть ANSI-символ с заданным кодом;
+
}}
* G – преобразовать заданную строку в список слов.
+
 
 +
+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 разбит на категории.

Содержание

Использование 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.
  • – НЕ РЕАЛИЗОВАН. По сведениям об имеющихся когда то реализациях - выдать номер текущего дня от начала года. Предположительно, мог присутствовать в версиях ИРБИС с 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').

Назначение: .

Формат (передаваемая строка):

Ссылки

См. также:

Источники информации: