Функции языка форматирования ИРБИС

Материал из Wikipedia
Версия от 17:38, 3 февраля 2013; Sokv (обсуждение | вклад) (Ссылки)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Ниже описываются функции, используемые в языке форматирования систему ИРБИС. Функции классифицированы в соответствии с типом возвращаемого значения.

Запись в базе данных, используемая в примерах

Если не оговорено противное, то все примеры по форматированию в последующих разделах ссылаются на запись, используемую для тех же целей в статье Язык форматирования системы ИРБИС.

Числовые функции

Функция VAL(формат)

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

Если числовое значение не найдено, то функция возвращает значение ноль. Если аргумент содержит более, чем одно числовое значение, возвращается только первое.

Примеры использования функции VAL (предполагается, что v1^a=10, v1^b=20 и v2=30):

Формат Значение
val('15.79') 15.79
val(v1) 10
val(v1^a) 10
val(v2) 30
val("19"v1^b) 1920
val('xxxx7yyy8zzzz') 7
val('abs.5.8е-4 ml') 0.00058
val('вода') 0
val('Июль-Август 1985') 0

Функция RSUM(формат)

Функция RSUM возвращает сумму одного или более числовых значений. Как и в функции VAL, текстовое значение аргумента просматривается слева направо. В отличие от функции VAL, извлекаются и используются все найденные числовые значения. Числовые значения должны быть разделены, по крайней мере, одним нечисловым символом.

Функция RSUM может использоваться для вычисления суммы всех числовых значений, содержащихся во всех экземплярах данного повторяющегося поля. В примерах предполагается, что поле 1 имеет четыре экземпляра, содержащие числа 10, 20, 30 и 40:

Формат Значение
rsum('10,20,30') 60
rsum(v1|;|) 10
rsum(v1|,|,'48,3.5') 61.5

Функция RMIN(формат)

Функция RMIN возвращает минимальное числовое значение из заданных. Числовые значения из значения аргумента извлекаются так же, как для функции RSUM.

В примерах предполагается, что поле 1 имеет четыре экземпляра, содержащие числа 10, 20, 30 и 40:

Формат Значение
rmin('1,2,-3') -3
rmin(v1|;|) 10
rmin(v1|,|,'48,3.5') 3.5

Функция RMAX(формат)

Функция RMAX возвращает максимальное числовое значение из заданных. Используется аналогично функции RMIN.

В примерах предполагается, что поле 1 имеет четыре экземпляра, содержащие числа 10, 20, 30 и 40:

Формат Значение
rmax('1,2,-3') 2
rmax(v1|;|) 40
rmax(v1|,|,'48,3.5') 48


Функция RAVR(формат)

Функция RAVR возвращает среднее арифметическое из заданных числовых значений. Числовые значения из значения аргумента извлекаются так же, как для функции RSUM.

В примерах предполагается, что поле 1 имеет четыре экземпляра, содержащие числа 10, 20, 30 и 40:

Формат Значение
ravr('1,2,-3') 0
ravr(v1|;|) 25
ravr(v1|,|,'48,3.5') 25.25

Функция L(формат)

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

Функция L обычно используется вместе с функцией REF. Примеры использования функции L можно найти далее.

Обратим внимание, что формат, расположенный в аргументе, вычисляется с использованием текущего режима вывода. Это является существенным, так как использование неправильного режима может привести к тому, что термин не будет найден в инвертированном файле. Как правило, следует использовать тот же режим, который применяется в ТВП для инвертированного файла.

Строковые функции

Строковые функции могут использоваться как операнды строковых выражений и как команды форматирования. Когда они используются как команды, значение функции будет форматироваться так, как если бы оно было полем документа.

Функция F(выр-1, выр-2, выр-3)

Функция F преобразует числовое значение из его внутреннего представления с плавающей точкой в символьную строку. Все три аргумента являются числовыми выражениями. Первый аргумент, выр-1, является числом, которое необходимо преобразовать. Второй аргумент, выр-2, – минимальная длина выходной строки, выделяемая для результата, и третий аргумент, выр-3, – количество десятичных цифр. Второй и третий аргументы необязательны. Отметим, однако, что если присутствует выр-3, то выр-2 не может быть опущено.

Выр-2 определяет минимальную длину, т. е. значением функции будет символьная строка длиной как минимум выр-2 символов, и если преобразуемое числовое значение требует выр-2 символов или меньше, оно будет выровнено по правой границе в пределах этой длины. Если количество символов, требуемое для представления значения выр-1, больше данной длины, то используются дополнительные позиции. В этом случае выходная строка будет длиннее, чем выр-2 символов.

Выр-3 определяет количество десятичных цифр дробной части Выр-1. Если оно опущено, то результат будет представлен в экспоненциальной форме. Если при этом также опущено выр-2, то по умолчанию длина выходной строки будет равна 16 символам. Если выр-3 присутствует, то результатом будет округленное представление выр-1 с фиксированной точкой с выр-3 цифрами после десятичной точки. Если выр-3 равно нулю, то выр-1 округляется до ближайшего целого числа и результатом будет целое число без десятичной точки. Если при преобразовании целых чисел и чисел с фиксированной точкой оказывается, что целая часть числа слишком большая для ее представления, то выходная строка заменяется последовательностью символов "*".

Функция F может использоваться для выравнивания колонки чисел по десятичной точке путем выбора соответствующей длины.

Примеры использования функции F:

Выражение Значение
f(1) 1.000000000E+00
f(1, 10) 1.000E+00
f(-1, 10, 2) -1.00
f(1, 5, 2) 1.00
f(1, 8, 2) 1.00
f(mfn, 1, 0) 4
f(mfn, 2, 0) 4
f(mfn, 3, 0) 4

Функция REF(выражение, формат)

Функция REF позволяет извлечь данные из альтернативной записи файла документов той же самой БД. Первый аргумент - это числовое выражение, дающее MFN альтернативной записи, которая должна быть выбрана, а второй аргумент - это формат, который должен быть применен к этой записи. Если значение выражения не соответствует MFN ни одной из записей базы данных, то функция REF возвратит пустую строку.

Функция REF – очень мощное средство, поскольку позволяет объединить данные, хранимые в различных записях базы данных, в один выводимый документ. В большинстве случаев связывание записей непосредственно через MFN может оказаться неудобным. Более удобным является использование возможности функции L. Напомним, что функция L находит MFN, соответствующий термину доступа. Поэтому можно использовать ее для преобразования символьной строки в MFN. Для корректного использования функции L нужно установить однозначное соответствие между символьной строкой и соответствующим ей MFN. Инвертированный файл предоставляет возможность установить такое соответствие.

Система не делает никаких предположений относительно природы связей, существующих между записями. Она просто предоставляет механизм связывания записей. При конкретном практическом применении пользователь сам определяет смысл связей посредством использования языка форматирования и специального проектирования базы данных. Например, если библиографическая запись описания статьи должна быть связана с записью соответствующего номера журнала, то необходимо поле для отражения природы этой связи (шифр номера журнала).

Далее заметим, что так как второй аргумент функции REF является форматом, то имеется возможность использовать данную функцию рекурсивно с установлением многоуровневой иерархический связи.

Функция S(формат)

Функция S возвращает текст, полученный в результате вычисления ее аргумента.

Как было отмечено ранее, в системе нет явных операторов для строковых выражений. Однако, функция S может использоваться для выполнения конкатенации строк.

Она оказывается довольно удобной в логических выражениях в качестве неявного оператора OR. Такое ее применение более эффективно по сравнению с явным использованием оператора OR. Например, следующие выражения:

S(mdl, v10, v20, v30) : 'вода'
v10 : 'вода' OR v20 : 'вода' OR v30 : 'вода'

эквивалентны (они оба истинны, если хоть одно из полей 10, 20 или 30 содержит строку 'вода'), но первое будет выполнено гораздо быстрее второго.

Эта функция может также использоваться для конкатенации строк с целью последующего их вывода.

Логические функции

Функция Р(команда вывода поля/подполя)

Функция Р возвращает значение истина, если форматируемая запись содержит по крайней мере один экземпляр поля или подполя, указанного в аргументе. В противном случае функция P возвращает значение ложь.

Например:

Выражение Значение
Р(v700) Истина
P(v700^m) Ложь
P(v80) Ложь

Функция A(команда вывода поля/подполя)

Функция A возвращает значение истина, если форматируемая запись не содержит ни одного экземпляра поля или подполя, указанного в аргументе.

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

Например:

Выражение Значение
Р(v700) Ложь
P(v700^m) Истина
P(v80) Истина

Ссылки

См. также:

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