Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Встроенные функции






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

Функции в Caché являются рекурсивными, т.е. могут содержать в виде аргументов самих себя. Имена встроенных функций начинаются со знака $. Вызов имеет следующий синтаксис:

$Function(Arg1, Arg2, …).

Имена функций пишутся строчными или прописными буквами. В табл.3 приведен список наиболее часто используемых встроенных функций.

Функции можно разделить на шесть групп:

§ общие функции, используемые для самых разнообразных целей;

§ функции, имеющие отношение к многомерным переменным Cache ObjectScript;

§ строковые функции;

§ функции, форматирующие числа;

§ функции обработки списков;

§ функции обработки транзакций;

§ Z-функции.

Для начала сделаем обзор наиболее важных общих функций, представив их в виде таблицы. Заметим, что функция $Stack содержит контекстную информацию о программе, когда в последней возникает ошибка. $Stack детально рассматривается в разделе, посвященном обработке ошибок (см. следующий номер журнала).


Таблица Обзор наиболее важных функций.

Класс функций Типичные представители
Общие функции $Ascii, $CASE, $Char, $Random, $Select, $Stack, $Text, $View
Операции с переменными и базой данных $Data, $Get, $Order, $Name, $Query, $QSubscript, $QLength
Обработка строк $Extract, $Find, $Length, $Piece, $Reverse, $Translate
Форматирование чисел $FNumber, $Justify, $Inumber, $NUMBER
Обработка списков $List, $ListBuild, $ListData, $ListFind, $ListGet, $ListLength
Обработка транзакций $Increment
Z-функции
Математические функ ции $ZABS, $ZEXP, $ZLN, $ZSIN
Дата, время $ZDate, $ZDateTime, $ZDateH, ZTime, ZtimeH
Общие функции $ZWAscii, $ZWChar, $ZF, $ZHex, $ZLAscii, $ZLChar, $ZSEArch, $ZSEEK
Строковые функции $ZCONVert, $ZCyc, $ZSTRIP
Обработка битовых строк $ZBitAND, $ZbitCount, $Zboolean

Функция $Case

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

Синтаксис функции $Case:

$Case(< перем>, < знач1>: < выр1> [, < знач2>: < выр2>...][,: < знач по умолч> ]))

В первом случае сначала вычисляется первое выражение. Следующая пара < lit>: < expr> состоит из константы (числовой или строковой) с последующим выражением. Если константа соответствует значению первого выражения, то следующее за ним выражение вычисляется и используется в качестве значения функции. Если ни одна константа не соответствует значению первого выражения, используется значение по умолчанию, если, конечно, оно существует. В противном случае возникает ошибка.

Если $CASE используется в качестве аргумента команд do или goto, тогда, как показано во втором примере, вместо выражения ожидается имя программы, управление которой будет передано при выполнении условия.

$Case может возвращать литерал, имя процедуры или подпрограммы, например:

READ " Введите число от 1 до 3: ", x

SET multi = $CASE(x, 1: " единица", 2: " двойка", 3: " тройка",: " ошибка ввода")

write multi

do $case(surv, 1: celebrate^survivor(),: complain^survivor())

Yippee! I won! // результат выполнения подпрограммы celebrate^survivor()

$S[elect]

Синтаксис функции:

$S [elect] (< log expr>: < expr> [, < log expr>: < expr> ]...)

Каждый аргумент функции $Select – это упорядоченная пара, состоящая из логического выражения и произвольного выражения, отделенных друг от друга двоеточием. Интерпретация аргумента производится слева направо до тех пор, пока не встретится истинное выражение. Функция $select возвращает значение выражения справа от двоеточия. Как минимум одно логическое выражение должно быть истинным, иначе возникает ошибка.

Функция $Select очень напоминает функцию $Case.

Функция $SELECT просматривает выражения слева направо и возвращает значение соответствующее первому истинному выражению. Например: Start

READ!, " Задайте номер уровня: ", a

QUIT: a=" "

SET x=$SELECT(a=1: " Level1", a=2: " Level2", a=3: " Level3")

GOTO @x

> Set a = 1

> Write $Select (a = 1: 5, a > 1: 0)

> Write $S (a = 2: 5, 1: 0)

> Set min = $S(s < t: s, 1: t)

$A[scii]

Синтаксис функции: $A[scii] (< expr>)

$Ascii выбирает из строки (первый аргумент) символ и возвращает код ASCII этого символа. Второй аргумент задает позицию символа в строке. Если он отсутствует, то берется первый символ строки. Если строка символов является пустой строкой, либо второй аргумент меньше единицы или больше, чем длина строки символов, $Ascii выдает значение -1

Write $Ascii(" A")

> Write $Ascii(" ABC", 3)

> Write $Ascii(" ")

-1

$C[har]

Синтаксис функции: $C[har] (< int expr> [, < int expr>,... ])

$Char является обратной по отношению к функции $Ascii и переводит число в соответствующий символ ASCII. Отрицательные аргументы допустимы и порождают пустую строку. Базисом является соответствующий основной набор символов. См. также $ZLChar и $ZWChar, > Write $Char(65, 66)

AB

> Write $Char(-1)

(пустая строка)

$R[andom]

Синтаксис функции: $R[andom] (< int expr>)

Если аргумент функции $Random равняется n, то функция возвращает целое случайное число в диапазоне от 0 до n-1.

> Write $Random(10)

$T[ext]

Синтаксис функции: $T[ext] (+ < int expr> [^routine])

$ T[ext] (метка строки [^имя программы])

$Text возвращает текст строки программы – разумеется при условии, что та имеется в исходном коде (если строка отсутствует в исходном коде, $Text выдает пустую строку; если же отсутствует весь исходный код, то функция возвращает лишь содержимое строк комментария, начинающихся с двух точек с запятой).

В первой форме $Text ссылается на относительный номер строки (например, +3 для третьей строки). Если это число равно 0, возвращается имя программы.

В следующем примере показана вторая форма, когда задается имеющаяся в программе метка строки, которая далее (с меткой) и возвращается в качестве результата. Если имя программы отсутствует, то метка ищется в загруженной программе.

> Write $Text(+3)

Read " Eingabe: ", x

> Write $Text(+0)

P1Spec

> Write $Text(Label)

Label Set a = 1, b = 2

$V[iew]

Синтаксис функции: $V[iew] (< expr> [, Mode, < num expr> ])

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.