TRUE || FALSE COMPILEFILE(<sFileName>, <sFlags>, <@sError>) <CodeBlock> COMPILESTRING(<sString>, <@sError>) <cPath> DefPath() aDirectory DIRECTORY(<cDirSpec>, [<cAttributes>]) nOsCode DOSERROR([<nNewOsCode>]) bCurrentErrorHandlerERRORBLOCK([<bErrorHandler>]) nCurrentReturnCode ERRORLEVEL([<nNewReturnCode>]) nErrorCode FERROR() cString GETENV(<cEnvironmentVariable>) <CodeBlock> LOAD(<sFileName>) <CodeBlock> LOADBLOCK(<sFileName>) nKbytes MEMORY(<nExp>) lError NETERR([<lNewError>]) cWorkstationName NETNAME() cOsName OS() nLastArgumentPos PCOUNT() nSourceLine PROCLINE([<nActivation>]) cProcedureName PROCNAME([<nActivation>]) NIL QOUT([<exp list>]) --> NIL QQOUT([<exp list>]) CurrentSetting SET(<nSpecifier>, [<expNewSetting>], [<lOpenMode>]) NIL SLEEP(<nSec>) <nResultCode> SYSCMD(<sCmd>, <sStdin>, @<sResult>, @<sError>) <vOldLimitValue> ULIMIT(<sResName>, <vLimitVal>) cVersion VERSION()
COMPILEFILE(<sFileName>, <sFlags>, <@sError>) --> TRUE || FALSE
COMPILEFILE() компилирует файл <sFileName> с флагами <sFlags> и возвращает TRUE в случае успеха, иначе возвращает FALSE и <sError> содержит описание ошибки.
COMPILESTRING(<sString>, <@sError>) --> <CodeBlock>
COMPILESTRING() компилирует строку <sString> и возвращает полученный кодовый блок. <sError> содержит описание ошибки, если таковая возникла в процессе компиляции.
Исходная строка может содержать любые CLIP конструкции, команды, за исключением описания нестатических функций. <sString> должна начинаться с описания параметров (если они есть) без описания названий функции или процедуры. См пример.
DefPath() --> <cPath>
Возвращает путь, установленный по SET DEFAULT, с завершающим символом PATH_DELIM или :. Если SET DEFAULT специально не задан (пуст), то ничего не добавляет.
DIRECTORY(<шаблон поиска>,[<атрибуты>]) -> массив файлов
DIRECTORY() - это функция среды, которая возвращает информацию о файлах в текущем или заданном каталоге. Она похожа на ADIR(), но возвращает единственный массив вместо того, чтобы заносить значения в группу созданных массивов, передаваемых по ссылке.
DIRECTORY() может быть использована для обработки групп файлов. Создав блок кода, который сможет обрабатывать все файлы, выбираемые в соответствии со значением <шаблон поиска>, можно использовать DIRECTORY() в комбинации с функцией AEVAL().
Для удобства пользования элементами подмассива в комплект поставки xClipper входит файл описаний directory.ch, помещаемый в директорию \include, определяющий имена элементов подмассива.
<шаблон поиска> | - определяет устройство, директорию и спецификацию файлов для поиска. Допустимо использование произвольных символов. Если аргумент <шаблон поиска> не указан, по умолчанию принимается (*.*). Аргумент <атрибуты> определяет необходимость включения в информации о файлах со специальными атрибутами. Аргумент <атрибуты> состоит из строки, содержащей один или более символов, представленных в таблице Атрибуты функции DIRECTORY(). --------------------------------------------------------------------- Атрибут Значение --------------------------------------------------------------------- H Включаются скрытые файлы S Включаются системные файлы D Включаются имена каталогов V Ищется метка тома DOS. Все остальные файлы исключаются ---------------------------------------------------------------------Информация о файлах может присутствовать в подмассивах, только если не используется атрибут V. |
Returns : | DIRECTORY() возвращает массив, в котором каждый элемент является подмассивом, содержащим информацию об очередном файле, выбранном в соответствии с аргументом <шаблон поиска>. Подмассив имеет следующую структуру: Структура подмассивов функции DIRECTORY(). --------------------------------------------------------------------- Позиция Метасимвол Directry.ch --------------------------------------------------------------------- 1 cName F_NAME 2 nSize F_SIZE 3 dDate F_DATE 4 cTime F_TIME 5 cAttributes F_ATT ---------------------------------------------------------------------Если не найдено файлов, соответствующих <шаблон поиска>, или в <шаблон поиска> указан неверный маршрут доступа или спецификация файла, то функция DIRECTORY() возвращает пустой ({}) массив. |
See also : | AEVAL() |
DOSERROR([<новый код ошибки>]) --> код ошибки
DOSERROR() - это функция обработки ошибок, которая возвращает код последней ошибки DOS, связанный с активизацией блока ошибок времени выполнения.
При возникновении ошибки в процессе выполнения программы, если это ошибка DOS, функция DOSERROR() примет значение ее кода. Это значение сохранится до возникновения следующей ошибки. Если возникшая ошибка не является ошибкой DOS, DOSERROR() примет значение 0. При возникновении ошибок в процессе низкоуровневой обработки файлов значение функций FERROR() и DOSERROR() одинаковы.
<новый код ошибки> | - если задан, определяет значение, возвращаемое DOSERROR(). Значение должно быть числовой величиной, которая отображает номер ошибки DOS. |
Returns : | DOSERROR() возвращает номер ошибки DOS в виде целого арифметического значения. |
See also : | ERRORBLOCK() FERROR() |
ERRORBLOCK([<блок обработки ошибки>]) --> текущий блок обработки ошибки
ERRORBLOCK() - это функция обработки ошибок, определяющая обработчик ошибок, который выполняется при возникновении ошибки времени выполнения. Обработчик ошибок описывается в виде блока кода в следующей форме:
{ | <ERROR-объект> | <список выражений>, ... }
При этом <ERROR-объект> - это ERROR-объект, содержащий информацию об ошибке. Для получения информации об ошибке вместе с блоком кода в ERROR объект могут быть переданы соответствующие сообщения. Возвратив значение "истина" (.T.), блок обработки ошибки пытается повторно выполнить операцию, приведшую к ошибке, после чего возвращает значение "ложь" (.F.).
Блок кода, обрабатывающий ошибку, может быть описан как список выражений или как вызов функции пользователя. Вызов из блока кода функции пользователя более предпочтителен, так как в этом случае можно вместо выражений использовать операторы и команды xClipper для обработки ошибок.
Обычным является прием программирования, когда программа содержит управляющую структуру BEGIN SEQUENCE, и при возникновении ошибки вы хотите управление передать командой BREAK на первую команду предложения RECOVER. Предполагается, что блок обработки ошибок может использоваться с управляющей структурой BEGIN SEQUENCE...END. При помощи блока обработки ошибок можно контролировать работу устройств, обычных ошибок и ошибок низшего уровня, так как это - универсальный механизм восстановления.
Если требуются нестандартные действия по обработке ошибки, необходимо определить BEGIN SEQUENCE и затем командой BREAK передать управление на первый оператор предложения RECOVER, возвратив ERROR-объект для локальной обработки ( смотри пример ниже ).
Если при помощи ERRORBLOCK() не было определено ни одного блока кода <блок обработки ошибки> и возникла ошибка времени выполнения, выполнится блок обработки ошибок, заданный по умолчанию. При этом на экран будет выдано сообщение об ошибке, ERRORLEVEL() примет значение 1, после чего выполнится команда QUIT.
После того, как ERRORBLOCK() возвратит текущий блок обработки ошибок, появляется возможность определить блок обработки ошибок с последующим его восстановлением после того, как завершатся операции. И еще, важным свойством обработчиков ошибок, описываемых как блоки кода, является тот факт, что они могут быть переданы процедурам и функциям пользователя и могут быть их возвращаемыми значениями.
За более подробной информацией о структуре и операциях ERROR-объекта обращайтесь в раздел "Error класс" в главе " Стандартные классы".
<блок обработки ошибки> | - это блок кода, выполняющийся в случае возникновении ошибки времени выполнения. При этом <блок обработки ошибки> получает от системы в качестве аргумента ERROR-объект. |
Returns : | ERRORBLOCK() возвращает текущий блок кода обработки ошибки. Если с начала работы программы не было ни одного отправленного блока кода, ERRORBLOCK() возвращает блок кода для обработки ошибки, принятый по умолчанию. |
ERRORLEVEL([<код завершения>]) --> текущий код завершения
ERRORLEVEL() является функцией среды с двойным назначением. Она возвращает текущий код завершения xClipper и необязательно устанавливает новый код завершения. Код завершения является значением, установленным дочерним процессом, чтобы родительский процесс мог проверить состояние завершения дочернего процесса. Типичный случай - когда родительским процессом является OS, а дочерним процессом - прикладная программа. Код завершения может быть получен с помощью команды OS ERRORLEVEL или прерывания INT 21 функции 4Dh.
При завершении xClipper-программы код завершения устанавливается в 1, если процесс заканчивается фатальной ошибкой. При нормальном завершении программы код завершения устанавливается в нуль или в значение последней ERRORLEVEL(), установленное в программе.
Обычно устанавливают код завершения при помощью ERRORLEVEL(), чтобы указать тип ошибки программе, которая вызвала текущую программу xClipper. В большинстве случаев это командный файл прикладной программы. Здесь проверяется код завершения путем использования команды OS ERRORLEVEL. За более подробной информацией обращайтесь к руководству по OS.
<код завершения> | - устанавливает новый код завершения. Он может иметь значение от 0 до 255. Значение при запуске по умолчанию равно 0. Если аргумент не задан, ERRORLEVEL() сообщает текущий код завершения, не присваивая нового значения. |
Returns : | ERRORLEVEL() возвращает текущий код завершения xClipper как числовое значение, если он был установлен путем использования ERRORLEVEL() с аргументом; в противном случае она возвращает нуль. |
FERROR() --> код ошибки
FERROR() является функцией обработки файлов низкого уровня. Она используется для уточнения ошибки DOS после применения какой-либо из функций обработки файлов. К этим функциям относятся: FCLOSE(), FCREATE(), FERASE(), FOPEN(), FREAD(), FREADSTR() и FRENAME(). Функция FERROR() сохраняет свое значение до следующего выполнения вышеуказанных функций.
Предупреждение: Данная функция позволяет осуществлять доступ низкого уровня к файлам и устройствам DOS. Она должна использоваться чрезвычайно осторожно и требует хороших знаний операционной системы.
GETENV (<переменная среды OS>) --> строка
GETENV() - это функция среды, которая позволяет вам получать в прикладной программе информацию о конфигурации среды OS. Как правило, это информация о размещении файлов ( базы данных, индекса, меток или отчетов). Эта функция особенно полезна в сетевой среде.
<переменная среды OS> | - это имя переменной среды OS. При задании этого аргумента можно использовать любую комбинацию строчных и заглавных букв: GETENV() к этому нечувствительна. |
Returns : | GETENV() возвращает содержимое заданной переменной среды OS в виде символьной строки. Если переменная не может быть найдена, GETENV() возвращает пустую строку (""). |
LOAD(<sFileName>) --> <CodeBlock>
LOAD() зачитывает файл <sFileName> и возвращает кодовый блок. <sFile> это байт-код файл "filename.po" или динамическая библиотека "filename.so". Все не статик функции, объявленные в файле, становятся доступными для использования.
LOADBLOCK(<sFileName>) --> <CodeBlock>
LOADBLOCK() загружает байт-код файл <sFileName> и возвращает кодовый блок. Байт-код файл может быть создан:
clip -p filename.prg
Правила и структура файла filename.prg должны соответствовать правилам для строки из функции COMPILESTRING().
MEMORY(<арифметическое выражение>) --> к-во байтов
MEMORY() - функция среды, которая сообщает различные состояния пула свободной оперативной памяти. В этой области располагаются символьные строки и программы, вызываемые командой RUN.
<арифметическое выражение> | - арифметическое выражение, определяющее тип значения, которое возвращает MEMORY(), согласно таблице. Значения аргументов MEMORY() --------------------------------------------------------------------- Значение Описание --------------------------------------------------------------------- 0 Оценивает общий доступный объем для символьных значений 1 Наибольший непрерывный блок, доступный для символьных значений 2 Область, доступная для программ, вызываемых командой RUN --------------------------------------------------------------------- |
Returns : | MEMORY() возвращает количество доступной памяти в виде целого числа с дискретностью 1 килобайт. |
NETERR([<признак новой ошибки>]) --> признак ошибки
NETERR() - это сетевая функция. Она используется для проверки прикладной программой успешности выполнения команд USE, USE EXCLUSIVE и APPEND BLANK в сети. В следующую далее таблицу сведены условия возвращения функцией NETERR() (устанавливаемые в DefError()) значения "истина" (.T.):
Значения NETERR() - "истина" (.T.). --------------------------------------------------------------------- Команда Ситуация --------------------------------------------------------------------- USE Команда USE EXCLUSIVE в другом процессе USE EXCLUSIVE Команды USE или USE EXCLUSIVE в другом процессе APPEND BLANK FLOCK() другим пользователем или RLOCK() для записи LASTREC()+1 ---------------------------------------------------------------------
Если возвращенное функцией NETERR() значение - "ложь" (.F.), то можно выполнять следующую команду. Например, после успешного выполнения USE можно открывать индексный файл, а после успешного выполнения APPEND BLANK можно заполнять поля записи командами REPLACE или @...GET. В противном случае, необходимо обработать ошибку и либо повторить команды USE и APPEND BLANK, либо прервать операцию командами BREAK или RETURN.
<признак новой ошибки> | - если задан, устанавливает значение, возвращаемое NETERR(), в дальнейшем. <признак новой ошибки> может быть или "истина" (.T.), или "ложь" (.F.). Установка значения, возвращаемого функцией NETERR(), позволяет управлять обработчиком ошибок в некоторых ситуациях. Более подробную информацию смотрите в Errorsys.prg. |
Returns : | Значение, возвращаемое NETERR(), устанавливается функцией DefError() программы Errorsys.prg, назначаемой обработчиком исключительных ситуаций по умолчанию. Если не назначен (с помощью функции ERRORBLOCK()) другой обработчик ошибок, то NETERR() возвращает "истина" (.T.) при неудачном выполнении команд APPEND BLANK и USE. Начальное значение NETERR() - "ложь" (.F.). Если текущий процесс выполняется под управлением несетевого программного обеспечения, NETERR() всегда возвращает "ложь" (.F.). |
See also : | RLOCK() FLOCK() |
NETNAME() --> имя рабочей станции
OS() --> имя операционной системы
OS() - функция среды, которая возвращает имя дисковой операционной системы, под управлением которой работает данный компьютер. Имя, которое возвращает функция OS(), состоит из двух частей: названия операционной системы и номера версии.
PCOUNT() --> позиция последнего аргумента
PCOUNT() возвращает позицию последнего аргумента в списке аргументов, передаваемых при вызове процедуры или функции пользователя. Эта информация полезна при определении, были ли аргументы опущены в конце списка аргументов.
Аргументы, пропущенные в середине списка, из списка не исключаются, а замещаются значениями NIL.
Чтобы определить, получил ли параметр значение, необходимо проверить, имеет ли он значение NIL. Пропущенные параметры являются неинициализированными, следовательно, при обращении к ним возвращают NIL. Другой метод проверки параметров - с помощью функции VALTYPE(). Она может устанавливать, был ли аргумент передан и в то же время проверяет корректность его типа. Если параметр не был определен, то подразумевается значение по умолчанию.
Returns : | PCOUNT() возвращает позицию последнего переданного аргумента в виде целого числа. Если аргументы не были переданы, PCOUNT() возвращает ноль. |
See also : | VALTYPE() |
PROCLINE([<номер вызова>]) --> номер строки исходной программы
PROCLINE() запрашивает стек вызова xClipper для определения последней выполняемой строки в текущей процедуре, функции пользователя или блоке кода. Стек вызова - это внутренняя структура, которая поддерживает запись каждого вызова процедуры, функции пользователя, блока кода. Номер строки считывается относительно начала исходного файла программы. Строка содержит в себе комментарии, пустые строки, директивы компилятору и препроцессору, продолжение строки. Строка может содержать несколько операторов.
Текущий вызов - это номер строки вызова PROCLINE().
Предыдущий вызов - это номер строки процедуры или функции пользователя, откуда была вызвана процедура или функция пользователя, содержащая функцию PROCLINE().
Если вызов требует вычисления блока кода, то PROCLINE() возвращает номер строки процедуры, где этот блок кода был определен. PROCLINE() используется в сочетании с функцией PROCNAME() для выдачи отладочной информации.
<номер вызова> | - числовое значение, которое задает, какой вызов запрашивается. Ноль - указывает на текущий вызов, 1 - предыдущий и т.д. Если аргумент не определен, по умолчанию принимается ноль. |
Returns : | PROCLINE() возвращает номер строки последней выполняемой команды в текущей процедуре, функции пользователя или блоке кода в виде целого числа. Если при компиляции была использована опция /L компилятора, то функция PROCLINE() всегда возвратит ноль. |
See also : | PROCNAME() |
PROCNAME([<номер вызова>]) --> имя процедуры
PROCNAME() запрашивает стек вызовов активации xClipper для определения имени выполняемых в текущий момент процедуры, функции пользователя или блока кодов. Стек вызовов активации - это внутренняя структура, хранящая запись о каждом вызове процедуры, функции или блока кодов.
Для текущего вызова PROCNAME() возвращает имя текущей процедуры или функции пользователя. Для предыдущего вызова PROCNAME() возвращает имя процедуры или функции пользователя, вызвавшей текущую процедуру.
Если запрошенный вызов является блоком кода, то PROCNAME() возвращает имя процедуры или функции пользователя, которые определили этот блок кода.
PROCNAME() используется в комбинации с функцией PROCLINE() для выдачи отладочной информации.
<номер вызова> | определяет, какой вызов следует запросить. Значение нуля относится к текущему вызову, значение 1 - к предыдущему и т.д. Если аргумент не определен, то значение по умолчанию - ноль. |
Returns : | PROCNAME() возвращает имя процедуры, выполняемой в текущий момент, функции или блока кода в виде символьной строки. |
See also : | PROCLINE() |
QOUT([<список выражений>]) --> NIL QQOUT([<список выражений>]) --> NIL
QOUT() и QQOUT() - это консольные функции. Они являются функциональными примитивами для создания соответственно команд ? и ??. Подобно командам ? и ?? они используются для того, чтобы вывести на консоль результаты расчета одного или более выражений. QOUT() перед выводом значений аргумента <список выражений> посылает управляющие символы "перевод строки/возврат каретки".
QQOUT() выводит значение аргумента <список выражений> начиная с текущей позиции ROW() и COL(). При выводе на консоль с помощью QOUT() и QQOUT() значения ROW() и COL() обновляются.
Если SET PRINTER установлен в режим (ON), то обновляются PROW() и PCOL(). Если аргумент <список выражений> задан, то и QOUT() и QQOUT() выводят пробел между результатами каждого выражения.
QOUT() и QQOUT() могут быть использованы для вывода на консоль внутри выражения. Это особенно полезно для блоков итерационных функций, таких как AEVAL() и DBEVAL(), и в списке операторов в выходном шаблоне команд, определенных пользователем.
<список выражений> | - это разделенный запятыми список выражений (какого-либо типа данных, кроме массива или блока), который должен быть выведен на консоль. Если задано QOUT() без аргументов, выводится пара управляющих символов "возврат каретки/перевод строки". Если задана QQOUT() без аргументов, то ничего не выводится. |
Returns : | QOUT() и QQOUT() всегда возвращают NIL. |
SET(<режим>, [<новое значение режима>], [<признак режима добавления>]) --> текущее значение режима
SET() является системной функцией, которая разрешает проверку или изменение значений глобальных режимов xClipper. Для получения информации о смысловом значении и диапазоне допустимых значений для конкретного режима обратитесь к соответствующей команде или функции.
Режим, подлежащий проверке или изменению, задается путем использования явной константы. Эти константы определяются в файле описаний Set.ch.
Этот файл описаний должен быть включен в начало любого исходного файла, использующего функцию SET().
Файл Set.ch определяет также константу, названную _SET_COUNT. Ее значение - количество режимов, которые могут быть изменены или проверены при помощи функции SET(), позволяя осуществить построение функции, сохраняющей все режимы (см. пример, приведенный ниже).
Примечание: Числовые значения явных констант в файле Set.ch зависят от версии, и они никогда не должны использоваться прямо. Допускается использование только явных констант.
Если значения аргументов <режим> или <новое значение режима> являются недопустимыми, вызов SET() игнорируется.
Значения режимов, устанавливаемых функцией SET() и определенных в файле Set.ch. --------------------------------------------------------------------- Константа Тип значения Соответствующая команда или функция --------------------------------------------------------------------- _SET_EXACT Логическое SET EXACT _SET_FIXED Логическое SET FIXED _SET_DECIMALS Числовое SET DECIMALS _SET_DATEFORMAT Символьное SET DATE _SET_EPOCH Числовое SET EPOCH _SET_PATH Символьное SET PATH _SET_DEFAULT Символьное SET DEFAULT _SET_EXCLUSIVE Логическое SET EXCLUSIVE _SET_SOFTSEEK Логическое SET SOFTSEEK _SET_UNIQUE Логическое SET UNIQUE _SET_DELETED Логическое SET DELETED _SET_CANCEL Логическое SETCANCEL() _SET_DEBUG Логическое ALTD() _SET_COLOR Символьное SETCOLOR() _SET_CURSOR Числовое SETCURSOR() _SET_CONSOLE Логическое SET CONSOLE _SET_ALTERNATE Логическое SET ALTERNATE _SET_ALTFILE Символьное SET ALTERNATE TO _SET_DEVICE Символьное SET DEVICE _SET_PRINTER Логическое SET PRINTER _SET_PRINTFILE Символьное SET PRINTER TO _SET_MARGIN Числовое SET MARGIN _SET_BELL Логическое SET BELL _SET_CONFIRM Логическое SET CONFIRM _SET_ESCAPE Логическое SET ESCAPE _SET_INSERT Логическое READINSERT() _SET_EXIT Логическое READEXIT() _SET_INTENSITY Логическое SET INTENSITY _SET_SCOREBOARD Логическое SET SCOREBOARD _SET_DELIMITERS Логическое SET DELIMITERS _SET_DELIMCHARS Символьное SET DELIMITERS TO _SET_WRAP Логическое SET WRAP _SET_MESSAGE Числовое SET MESSAGE _SET_MCENTER Логическое SET MESSAGE ---------------------------------------------------------------------
<режим> | - является числовым значением, которое задает режим, подлежащий проверке или изменению. Значение аргумента <режим> должно задаваться в виде явной константы (см. ниже). |
<новое значение режима> | является необязательным параметром, который задает новое значение для заданного режима. Тип аргумента <новое значение режима> зависит от значения аргумента <режим>. |
<признак режима добавления> | логическое значение, которое указывает, будут ли файлы, открытые для следующих установок: _SET_ALTFILE,_SET_PRINTFILE,_SET_EXTRAFILE обрезаться до нулевой длины или открываться в режиме добавления. Значение "ложь" (.F.) означает, что файл должен быть обрезан до нулевой длины. Значение "истина" (.T.) означает, что файл должен быть открыт в режиме добавления. В любом случае, если файл не существует, то он создается. При отсутствии этого аргумента по умолчанию принимается режим добавления. |
Returns : | SET() возвращает текущее значение заданного режима. |
SLEEP(<nSec>) --> NIL
SLEEP() останавливает программу на время, пока не истекли указанные секунды.
SYSCMD(<sCmd>, <sStdin>, @<sResult>, @<sError>) --> <nResultCode>
SYSCMD() выполняет системную команду <sCmd>, посылая ей на входной стандартный поток строку <sStdin>. Весь stdout будет записан в буфер <sResult>, а весь stderr - в <sErr>.
<sResult> и <sError> не могут быть объявлены как константы.
ULIMIT(<sResName>, <vLimitVal>) --> <vOldLimitValue>
ULIMIT() устанавливает новое значение <vLimitVal> на использование системного ресурса с именем <sResName> и возвращает старое значение этого ресурса.
Список возможных значений ресурсов см. в ulimit.ch
Пред. | Начало | След. |
CLIP Functions by categories | Уровень выше | C-API |