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

Материал из Wikipedia
Версия от 00:35, 26 сентября 2011; Sokv (обсуждение | вклад) (Новая страница: «'''''Функция''''' вычисляет ''значение'' (называемое '''''значением функции''''' или '''''возвращаемы…»)

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

Функция вычисляет значение (называемое значением функции или возвращаемым значением), которое затем подставляется вместо функции при вычислении выражения.

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

Аргументы могут быть следующих трех типов: формат, числовое выражение, команда вывода поля.

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

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

В качестве аргумента могут быть команды вывода поля или подполя. Не допускается использовать в команде спецификацию смещение/длина.

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

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

Функция 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 можно найти далее.

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

Подключение программ к формату (форматные выходы)

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

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

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

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

где:

  • & – идентификатор вызова формат-программы;
  • имя – имя формат-программы;
  • формат – аргумент.

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

Ссылки

См. также: