Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Встроенные функции ⇐ ПредыдущаяСтр 7 из 7
В Caché имеется набор предопределенных (встроенных) функций, которые можно использовать для различных целей. Встроенные функции могут использоваться в любых выражениях. Вызов функции заменяется ее значением, вычисляемым в зависимости от аргументов. Функции в Caché являются рекурсивными, т.е. могут содержать в виде аргументов самих себя. Имена встроенных функций начинаются со знака $. Вызов имеет следующий синтаксис: $Function(Arg1, Arg2, …). Имена функций пишутся строчными или прописными буквами. В табл.3 приведен список наиболее часто используемых встроенных функций. Функции можно разделить на шесть групп: § общие функции, используемые для самых разнообразных целей; § функции, имеющие отношение к многомерным переменным Cache ObjectScript; § строковые функции; § функции, форматирующие числа; § функции обработки списков; § функции обработки транзакций; § Z-функции. Для начала сделаем обзор наиболее важных общих функций, представив их в виде таблицы. Заметим, что функция $Stack содержит контекстную информацию о программе, когда в последней возникает ошибка. $Stack детально рассматривается в разделе, посвященном обработке ошибок (см. следующий номер журнала). Таблица Обзор наиболее важных функций.
Функция $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> ]) Функция позволяет читать содержимое оперативной памяти и обычно используется в случае возникновения ошибки для получения внутрисистемной информации
|