Функции общего назначения

Функции управления вычислениями

call(name,p1,p2,...,pN) - вызвать модуль с именем name и передать ему параметры p1,p2,...,pN
prevcont() - возвращает имя вызвавшего модуля или 0, если программа выполняется в секции .do
return(value) - вернуться в вызвавший модуль и вернуть значение value. Если value не задано, возвращается %null
die(text) - вывести строку text и завершить обработку документа (аварийное завершение).
debug(mode) - установить режим mode вывода отладочной информации.
trace(mode) - вывод информации о состоянии переменных или установка параметров.
expr2ppn(expr,trace) - возвращает массив, содержащий формализованное представление обратной польской записи для выражения expr. Если trace=0 сведения о промежуточных шагах процесса преобразования выражения в обратную польскую запись не выводятся. При trace=1 - выводятся в документ в виде комментариев (скрыты от пользователя в HTML-коде документа). При trace=2 - выводятся прямо в выходной документ.
ppncalc(ppn_stack) - вычисляет значения выражения по его обратной польской записи, полученной ранее от expr2ppn().
sif(cond,v1,v2) - если cond истинно, возвращает значение v1, в противном случае значение v2. cond, v1 и v2 могут быть любыми выражениями и вычисляются ДО вызова функции.
cif(cond,e1,e2) - если cond истинно, вычисляет выражение e1, в противном случае - вычисляет выражение e2. cond является произвольным выражением и вычисляется до вызова функции. e1 и e2 являются строками, содержащими выражения и вычисляются самой функцией cif в зависимости от значения cond (то есть вычисляется либо e1, либо e2).

Функции доступа к переменным

kill(where,vars_list) - удаляет переменные, имена которых содержатся в vars_list, в указанном в where контексте. vars_list может быть массивом, каждый элемент которого содержит имя одной переменной, либо строкой, содержащей имена переменных, разделенные пробелами. Переменные в списке vars_list следует задавать в нижнем регистре. Если where=0, переменные уничтожаются в контексте текущего модуля. Если where=1, то уничтожаются временные копии переменных в контексте документа. При этом постоянные постоянные (сохраненные) копии переменных не удаляются. Если where=2, то уничтожаются не только временные, но и постоянные копии указанных переменных. Массив может быть удален только целиком. Удалить отдельные элементы массива нельзя.
hold(where,vars_list) - сохраняет только указанный в vars_list список переменных, в указанном в where контексте. Содержание переменных where и vars_list то же, что и в функции kill().
copy(direction,vars_list,module) - копирует переменные, заданные списком vars_list в направлении, задаваемом direction. Если direction=1, то переменные контекста документа копируются в контекст модуля module. Если module не задан или равен %null, то копирование производится в контекст текущего модуля. Если модуль module не существует, копирование не производится. Если direction=2, то переменные копируются из контекста модуля module в контекст документа. Если module не задан или равен %null, то копирование производится из контекста текущего модуля. Если модуль module не существует, копирование не производится. Если direction=3, то переменные копируются из контекста модуля module в контекст текущего модуля. Если модуль module не существует или функция выполняется на уровне контекста документа, копирование не производится. Если direction=4, то переменные копируются из контекста текущего модуля в контекст модуля module. Если модуль module не существует или функция выполняется на уровне контекста документа, копирование не производится. Если direction=7, то в контекст текущего модуля копируются внешние переменные, сформированные при работе пользователя с другими документами или установленные при работе с "Калькулятором". Если параметр module не задан, то поиск переменных производится по всему множеству внешних преременных. Если при этом разными документами установлены переменные с одинаковыми именами, то в контексте модуля происходит их последовательное замещение в порядке возрастания номеров документов. В противном случае параметр module интерпретируется как номер документа и поиск переменных производится только среди переменных, заданных этим документом. Переменные, установленные при работе с "Калькулятором" считаются установленными документом с номером 0.
dvget(name) - возвращает значение переменной name из контекста документа.
dvput(name,value) - присваивает переменной name в контексте документа значение value.
evget(doc,name) - возвращает значение переменной name, установленной документом с номером doc.
xvget(name) - если переменная name установлена в контексте документа, то возвращает ее значение, в противном случае ищет переменную name среди переменных, установленных другими документами. Если переменная не установлена никакими документами, то возвращается %null.
mvget(name,module) - возвращает значение переменной name из контекста модуля module или %null, если переменной не существует.
mvput(name,module,value) - присваивает переменной name модуля module значение value.
load() - загружает все переменные пользователя. Обычно выполнение функции не требуется, поскольку все переменные данного пользователя загружаются автоматически при открытии документа.
save(vars_list) - сохраняет постоянные копии переменных из vars_list для данного документа и данного пользователя. Если vars_list пуст - сохраняет все переменные, установленные в контексте текущего модуля. Если функция выполняется в контексте документа, то сохраняются переменные из контекста документа.
compact(vars_list) - объединяет переменные из vars_list в один массив, индексами которого являются имена переменных.
extract(pack) - функция, обратная compact(). Раскрывает массив pack таким образом, что индексы первого измерения становятся именами переменных, а соответствующие им значения - значениями создаваемых переменных.
dump(mode) - вывод списка значений переменных. Если mode=0, то выводятся значения переменных из всех существующих на данный момент контекстов, а также перенные установленные сторонними документами. Вывод структурируется по контекстам. Если mode=1, то выводятся значения переменных из контекста документа. Если mode=2, то выводятся значения всех переменных, установленные сторонними документами. Если mode=3, то выводятся значения всех переменных из контекста всех модулей. Если mode является именем конкретного модуля, то выводятся значения всех переменных из контекста данного модуля.
getconf(key) - возвращает значение параметра конфигурации, определяемое ключом key. Параметр key состоит из элементов, разделенных точкой (.) и должен в точности соответствовать имени параметра конфигурации (см. раздел "Конфигурирование узлов").
setconf(key,value) - присваивает параметру key конфигурации значение value.

Функции идентификации среды выполнения

user() - возвращает имя текущего пользователя.
role() - возвращает статус текущего пользователя (0 - неавторизованный, 1 - Читатель, 2 - Писатель, 3 - Эксперт, 6 - Редактор, 7 - Администратор).
null() - возвращает %null (записи null() и %null эквивалентны)
uid() - возвращает номер пользователя из таблицы имен пользователей.
vip() - возвращает 1, если пользователь имеет vip-статус и 0 в противном случае.
maindoc() - возвращает номер главного документа. Если функция вызывается в документе, вставляемом командой :paste - возвращает номер документа из которого инициирован рекурсивный процесс вставки.
docid() - возвращает номер текущего документа. Как правило, maindoc()=docid(). Это не так только при обработке данных, вставляемых командой :paste. Если функция выполняется при обработке вставляемого :paste документа docid() возвращает номер именно этого документа, а maindoc() вернет номер документа самого верхнего уровня (того, из которого выдана первая команда :paste).

Функции проверки и приведения типов

isnum(x) - возвращает 1, если x - число и 0 в противном случае. Числовые последовательности состоят из дополнительного знака, любого числа цифр, дополнительной десятичной части и дополнительной показательной части. Таким образом +0123.45e6 - действительное числовое значение. Можно использовать шестнадцатеричное представление (0xFF), но только без знака, десятичной и показательной части.
isarr(x) - возвращает 1, если x - массив и 0 в противном случае.
isstr(x) - возвращает 1, если x - строка и 0 в противном случае.
isdate(x) - возвращает 1, если x - корректная дата, заданная в формате YYYY-MM_DD, и 0 в противном случае.
ston(x) - преобразование строки в действительное число. Обычно не требуется, поскольку все преобразования выполняются автоматически.

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

len(string) - возвращает длину строки string.
Пустые символы:
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
ltrim(str) - возвращает строку str с удаленными из начала строки пустыми символами.
rtrim(str) - возвращает строку str с удаленными в конце строки пустыми символами.
trim(str) - возвращает строку str с удаленными в начале и конце строки пустыми символами.
replace(search,replace,subject) - возвращает строку subject, в которой все вхождения search заменены на replace.
strcmp(str1,str2) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны. Функция учитывает регистр символов.
strcmpx(str1,str2) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны. Функция НЕ учитывает регистр символов.
strncmp(str1,str2,n) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны. Функция учитывает регистр символов и сравнивает только первые n символов.
strpos(haystack,needle,offset) - возвращает позицию первого вхождения подстроки needle в строку haystack. Если подстрока needle не найдена, возвращает %null. Если задан, то поиск начинается с символа с номером offset (нумерация символов строк, начинается с нуля).
substr(string,start,length) - возвращает подстроку строки string длиной length, начинающегося со start символа по счету. Если length не задан, то выбираются все символы до конца строки.
string(x1,x2,...,xN) - возвращает строку, которая получается сцеплением всех переданных параметров. Если какой-либо из параметров - массив, то он преобразуется в строку путем сцепления всех элементов с разделением их пробелом.
cyrconv(str,from,to) - преобразует строку str из одной кириллической кодировки в другую. Аргументы from и to задают входную и выходную кодировки, соответственно, и состоят из одного символа. Поддерживаются следующие кодировки:
k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillic
Структура данных, навигация и основные манипуляции с данными
Функции вычислений с датами и временем
Команды первой позиции
Поля переменных данных
Функции доступа к базе данных