Система автоматизации библиотек ИРБИС


Подключение программ к формату


В формате вывода можно использовать программные функции (написанные пользователем и включенные в библиотеку FORMAT32.DLL) и предназначенные для выполнения таких операций по форматированию, которые не могут быть выполнены с помощью языка форматирования. Такие функции, подключаемые к формату, называются форматные выходы или формат-программы. По сути данные функции выходят за рамки собственно языка форматирования, а сама система просто предоставляет некоторый стандартный интерфейс передачи данных для таких функций.

С точки зрения языка форматирования формат-программы являются строковыми функциями с форматом в качестве аргумента. При этом сначала вычисляется аргумент, а затем он передается функции. Формат-программа возвращает строку символов, с которой система обращается так, как если бы она была полем форматируемого документа.

Обращение к формат-программе в формате производится следующим образом:

&имя(формат),

где:

&

Идентификатор вызова формат-программы;

Имя



Имя формат-программы;

Формат

Аргумент.

 

Система предлагает для использования комплексную формат-программу UNIFOR, реализующую различные специфические функции. Вид реализуемой функции определяется первым символом строки, которая формируется в результате выполнения формата, передаваемого в качестве аргумента формат-программы.

Перечень функций формат-программы UNIFOR и примеры их применения приведены в Таблице 1.

Таблица 1

п/п

Вид функции

Назначение

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

Пример

1

0

Выдать содержимое документа полностью (формат ALLl)

0

….&unifor('0')….

2

3

Выдать дату/время в виде ГГММДДЧЧММСС

3

…..&unifor('3')….

3

9

Удалить двойные кавычки из заданной строки

9<исх.строка>

….&unifor("9"v200^a)….

4

А

Выдать заданное повторение поля

AV<tag>^<delim>*

<ofset>.<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')…..



Содержание раздела