Формат-программа UNIFOR |
Перечень функций формат-программы UNIFOR и примеры их применения |
Таблица 1. Перечень функций формат-программы UNIFOR и примеры их применения.
п/п |
Вид функции |
Назначение |
Формат (передаваемая строка) |
Пример |
|
1 |
0 |
Выдать содержимое документа полностью (формат ALLl) |
0 |
….&unifor('0')…. |
|
2 |
3 |
Выдача данных, связанных с ДАТОЙ и ВРЕМЕНЕМ
|
3… Имеются следующие подфункции: 3 - выдать текущую дату в виде ГГГГММДД 30 - выдать теекущий год в виде ГГГГ 31 - выдать текущий месяц в виде ММ (с лидирующим нулем) 32 - выдать текущий день в виде ДД (с лидирующим нулем) 33 - выдать текущий год в виде ГГ 34 - выдать текущий месяц в виде М (без лидирующего нуля) 35 - выдать текущий день в виде Д (без лидирующего нуля) 36MM - выдать по заданному номеру месяца его название на русском языке в именительном падеже 37MM - выдать по заданному номеру месяца его название на русском языке в родительном падеже 38MM - выдать по заданному номеру месяца его название на английском языке 39 - выдать текущее время 3А - выдать номер текущего дня от начала года 3BГГГГММДД/ддд - прибавить/вычесть из заданной даты в виде ГГГГММДД заданное количество дней (ддд – м.б. с минусом) и вернуть полученную дату в виде ГГГГММДД; 3СГГГГММДД/ГГГГММДД - вычесть из одной даты в виде ГГГГММДД другую дату в виде ГГГГММДД и вернуть разницу в виде количества дней; 3JГГГГММДД - который переводит заданную юлианскую дату ГГГГММДД в грегорианскую. (&uf('3JГГГГММДД') ) |
...&unifor('36',&unifor('34')).... |
|
2.1 |
4 |
4N,Format где N - номер копии (в обратном порядке), Format - формат (или в виде @имя_формата). |
&unifor('41,@brief') (...&unifor('4,v200^a')...) &unifor('4*,(v910/)') |
||
2.2 |
6 |
|
|
|
|
3 |
9 |
Удалить двойные кавычки из заданной строки |
9<исх.строка> |
….&unifor("9"v200^a)…. |
|
4 |
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')…. |
|
5 |
P |
Выдать заданное оригинальное повторение поля |
то же самое |
то же самое |
|
6 |
B |
Выдать библиографическую свертку документа |
B |
…..&unifor('B')….. |
|
7 |
C |
Контроль ISSN/ISBN При положительном результате - 0 При отрицательном - 1 |
С<ISSN/ISBN> |
….&unifor("C"v10^a)…. |
|
8 |
E |
Вернуть заданное количество первых слов в строке |
EN<строка> где N - кол-во слов (одна цифра) |
…..&unifor("E3"v200^a)…. |
|
9 |
F |
Вернуть конец строки после заданного кол-ва первых слов |
FN<строка> где N - кол-во слов (одна цифра) |
…..&unifor("F3"v200^a)…. |
|
10 |
G |
Вернуть часть строки до или начиная с заданного символа |
GNA<строка> где: N=0 если ДО заданного символа (не включая его); N=1 если начиная С заданного символа (включая его); А - заданный символ (# - обозначает цифру; $ - обозначает букву) |
….&unifor("G0#"v700)… ….&unifor("G1-"v700^a)… |
|
11 |
S |
Универсальный счетчик |
SN где: N=0 - обнулить счетчик; N=1..9 - увеличить значение счетчика на соотв.значение} N=A - вернуть значение счетчика - арабскими цифрами} N=X - вернуть значение счетчика - римскими цифрами |
….&unifor('S0')….. ….&unifor('S1')…… ….&unifor('SA')…… |
|
12 |
L |
Вернуть окончание термина |
L<начало_термина> |
…..&unifor("L"v101)…. |
|
13 |
U |
Куммуляция номеров журналов |
U<strbase>,<stradd> где: <strbase> - исходная куммулированная строка <stradd> - куммулируемые номера |
…..&unifor("U"v909^h",12")….. |
|
14 |
V |
Декуммуляция номеров журналов |
V<strbase> где: <strbase> - исходная строка для декуммуляции |
…..&unifor("V"v909^h")….. |
|
15 |
W |
Контроль куммуляции |
W<strbadd>,<strbase> где: <strbase> - исходная куммулированная строка <stradd> - куммулируемый номер. Возврат: 0 - если <stradd> не присутствует в <strbase> 1 - если <stradd> присутствует в <strbase> |
…..&unifor("W12,"v909^h)….. |
|
16 |
Z |
Размножение экземпляров (функция ничего не возвращает). Можно применять только в глобальной корректировке |
Z |
…..&unifor('Z')…… |
|
17 |
R |
Генерация случайного числа |
RNN где: NN- кол-во знаков в случайном числе (по умолчанию - 6) |
…..&unifor('R10')…… |
|
18 |
K |
Раскодировка через справочник (меню) |
K<имя_меню>\<исх_значение> |
….&unifor("Kjz.mnu\"v101) |
|
19 |
I |
Вернуть параметр из INI-файла |
I<SECTION>,<PAR_NAME>,<DEFAULT_VALUE> |
….&unifor('IPRIVATE,NAME,NONAME')…. |
|
20 |
1 |
Вернуть заданный подэлемент |
1NCXY?V<tag>^<delim>*<offset>.<length>#<occur> где: N - номер повторения подэлемента; если указана * - номер подэлемента совпадает со счетчиком повторяющейся группы; ХY - разделители между подэлементами; С - принимает значения: R - разделители справа от каждого подэлемента, кроме последнего; L - разделители слева от каждого подэлемента; D - каждый подэлемент заключен слева разделителем Х и справа - Y; ? - символ-разделитель. Остальные параметры аналогичны параметрам для функции А (см. выше) |
….(/&unifor('1*R; ?v910^h#1')).. |
|
21 |
T |
Транслитерирование кириллических символов с помощью латиницы |
TN<строка> где N - вид таблицы транслитерирования (0 или 1) |
….&unifor("T0"V200)….. |
|
22 |
J |
Вернуть кол-во ссылок для заданного термина |
J<dbn>,<термин> <dbn> - имя БД; по умолчанию используется текущая. |
.&unifor('JBOOK,',"A="v200^a). |
|
23 |
D |
Форматирование документа из другой БД (REF на другую БД – отношение «от одного к одному») |
D<dbn>,<@mfn|/termin/>,<@имя_формата|формат|*> Передаются три параметра, разделенные запятой: Первый - имя БД; Второй - или непосредственно MFN с предшествующим символом @ или термин, ссылающийся на документ (термин - заключается в ограничительные символы); Третий - или имя формата с предшествующим символом @ или непосредственно формат. Если задается *, данные выводятся по прямой ссылке (метка поля, номер повторения) |
..&unifor('DBOOK,/K=AAA/,v200') |
|
24 |
X |
Удаление из заданной строки фрагментов, выделенных угловыми скобками <> |
X<строка> |
…&unifor("X"v200)…. |
|
25 |
Q |
Вернуть заданную строку в нижнем регистре |
Q<строка> |
….&unifor("Q"v200)…. |
|
26 |
M |
Отсортировать повторения заданного поля (имеется в виду строковая сортировка) - функция ничего не возвращает. Можно применять только в глобальной корректировке. |
MX<tag>^<delims> X - вид сортировки: I - по возрастанию; D - по убыванию. <tag> - метка поля. <delims> - разделители подполей, определяющих ключ сортировки. |
…&unifor('MI910^BD')….. |
|
27 |
7 |
Расформатирование группы связанных документов из другой БД (отношение «от одного к многим»). |
7<имя_БД>,</termin/>,<@имя_формата|формат|*> имя_БД - имя базы данных, из которой будут браться связанные документы; по умолчанию используется текущая БД. /termin/ - ключевой термин, на основе которого отбираются связанные документы; термин заключается в уникальные ограничители (например. /), в качестве которых используется символ, не входящий (гарантированно) в термин. @имя_формата|формат|* - имя формата или формат в явном виде, в соответствии с которым будут расформатироваться связанные документы. Если задается имя формата, то он берется из директории БД, заданной параметром <имя_БД>. Если задается *, данные выводятся по прямой ссылке (метка поля, номер повторения) |
...&unifor('7TEST,',"/T="v200^a"/",',v903"\par "').... |
|
28 |
! |
Команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. - >). Имеет смысл использовать один раз в любом месте формата |
! |
…&unifor(‘!’)…. |
|
29 |
+F |
Команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата |
+F |
…&unifor(‘+F’)… |
|
30 |
+1 |
Очистить (опустошить) все глобальные переменные |
+1 |
….&unifor('+1')…. |
|
31 |
+1R |
Чтение глобальных переменных |
+1RNNN,nnn где: NNN – номер первой или единственной переменной, возможна конструкция *+-<число> * - номер текущего повторения в повторяющейся группе; nnn – кол-во переменных (по умолчанию 1) |
…&unifor(‘+1R100,2’)…. |
|
32 |
+1W |
Запись в глобальные переменные |
+1WNNN,MMM#SSSS где: NNN – номер первой или единственной переменной, возможна конструкция *+-<число> * - номер текущего повторения в повторяющейся группе; MMM – номер переменной для сохранения кол-ва записанных переменных (по умолчанию не используется); SSSS – список строк (результат расформатирования). Если задан MMM – каждая строка пишется в отдельную переменную, в противном случае все пишется в одну переменную |
…&unifor(‘+1W100,0#’,(v910/))…. |
|
33 |
+1O |
Групповая мультираскодировка списка |
+1O<MNU>|SSSS где: <MNU> имя справочника (с расширением); SSSS – список строк (результат расформатирования |
…&unifor(‘+1Omhr.mnu|’,(v910^m/)) |
|
34 |
+1K |
Групповая мультираскодировка переменных |
+1K<MNU>|NNN,nnn где: NNN – номер первой или единственной переменной,; nnn – кол-во переменных (по умолчанию 1) |
…&unifor(‘+1Kmhr.mnu|100,10’)… |
|
35 |
+1M |
Перемножение двух списков (групп переменных) |
+1MNNN,nnn#MMM,mmm |
|
|
36 |
+1S |
Вычитание списков (групп переменных) |
+1SNNN,nnn#MMM,mmm |
|
|
37 |
+1A |
Сложение списков (групп переменных) |
+1ANNN,nnn#MMM,mmm |
|
|
38 |
+1G |
Исключение неоригинальных значений из группы переменных |
+1GNNN,nnn |
|
|
39 |
+1I |
Исключение неоригинальных значений из списка |
+1ISSSS |
|
|
40 |
+1T |
Сортировка группы переменных |
+1TNNN,nnn |
|
|
41 |
+1V |
Сортировка списка |
+1VSSSS |
|
|
42 |
+I |
(см. Формирование ссылки (гиперссылки)) |
|
….&unifor('+I?0,,'v951^i'?',v951^t,|INTERNET|n951^t)…. ….&unifor(|+I?1,,,,I=|v421^w|?|,v421^a)….. |
|
43 |
+3E |
Кодирование данных для представления в URL |
+3E<данные> |
…&unifor(‘+3E’,v1007)… |
|
44 |
+3D |
Декодирование данных из URL |
+3D<данные> |
|
|
45 |
+4 |
Выдача метки, порядкового номера и значения поля в соответствии с индексом (номером повторения) повторяющейся группы. |
+4XY |
…(…..&unifor(‘+4T1’),’_’ &unifor(‘+4N1’),’: ‘, &unifor(‘+4F1’),’<br>’….) |
|
46 |
+5 |
Выдача элемента списка/справочника в соответствии с индексом (номером повторения) повторяющейся группы. |
+5Х<имя_справочника/списка> |
…(…..&unifor(‘+5Tfield.mnu’),’ - ’,&unifor(‘+5Ffield.mnu’),’<br>’….) |
|
47 |
+6 |
Выдать статус записи. Если запись логически удаленная, возвращается 0, в противном случае - 1 |
+6 |
…if &unifor(‘+6’)=’0’ then ‘запись логически удаленная’ fi… |
|
48 |
+7 |
(см. Подкоманды UNIFOR) |
|
|
|
49 |
+8 |
+8<имя_DLL>,<имя_функции>,<передаваемые_данные> |
|||
50 |
+9 |
+9T<исходные_данные> |
|||
|
+9L |
Проверить наличие файла/корректность URL |
&unifor('+9L',<path>,<dbname>,<filename>)
<path> - условный путь к файлу, принимает значения: 0 - основная папка IRBIS64 на сервере (\irbis64\); 1 - папка DATAPATH (\irbis64\datai\) 2,3,10 - папка БД <dbname> 11 - абсолютный путь/URL <dbname> - имя БД, имеет смысл только при path=2,3,10 <filename> - имя файла (в случае path=11 - полный путь и имя файла ИЛИ URL) Функция возвращает: 0 - если файл отсутствует/некорректный URL 1 - если файл присутствует/корректный URL |
&uf('+9L1,,\deposit\rksu.fst') (....&uf('+9L10,',&uf('+D'),',',v951^A)....) |
|
51 |
= |
(см. сравнение по маске) |
&uf(‘=!<маска>!<значение>’)
|
|
|
52 |
+E |
возвращает порядковый номер заданного поля в записи. |
&uf('+Etag#occ'), где: tag - метка поля occ - номер повторения поля (по умолчанию - 1). Может принимать значение * - что означает: номер текущего повторения в повторяющейся группе. При отсутствии в записи заданного поля возвращается пустота. |
|
|
53 |
++B.. |
|
|
|
См. также:
Глобальные переменные индивидуальные
Подключение функций пользователя
Группа технических форматных выходов
ФОРМАТИРОВАНИЕ ПРЕДЫДУЩЕЙ КОПИИ ТЕКУЩЕЙ ЗАПИСИ