ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 20

Перевод всей документации выполнил Сергей АгАрков. Если возникли
какие-либо вопросы или  предложения по качеству  перевода, обра-
щайтесь:

Jew Smile MO Station 2:5040/22.3 Serg Agarkoff +7-(421)-626-8486
время работы станции с 15:00  до 23:30 по московскому времени  в
будние дни и круглосуточно в  выходные и праздники. По этому  же
телефону меня можно застать с 3:00 до 12:00 по московскому  вре-
мени. Спросить капитана Агаркова.

Домашний телефон +7-(421)-626-8486 чс 13:00 до 0:30 по москве.


	ГЛАВА 13 - ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

Математические функции.................................... 13-1
     ABS (абсолютное значение)............................ 13-1
     INRANGE (попадает ли число в заданный диапазон)...... 13-1
     INT (отсекает дробную часть)......................... 13-2
     LOGE (натуральный логарифм).......................... 13-2
     LOG10 (десятичный логарифм).......................... 13-3
     RANDOM (случайное число)............................. 13-3
     ROUND (округление числа)............................. 13-4
     SORT (квадратный корень)............................. 13-4

Тригонометрические функции................................ 13-5
     SIN (синус).......................................... 13-5
     COS (косинус)........................................ 13-6
     TAN (тангенс)........................................ 13-6
     ASIN (арксинус)...................................... 13-7
     ACOS (арккосинус).................................... 13-7
     ATAN (арктангенс).................................... 13-8

Строковые функции......................................... 13-9
     ALL (строка из повторяющихся символов)............... 13-9
     CENTER (центрирование строки)........................ 13-9
     CHR (переводит ASCII-код символа в символ)........... 13-10
     CLIP (строка без хвостовых пробелов)................. 13-10
     DEFORMAT (удаляет форматирование из числовых строк).. 13-11
     FORMAT (форматирует число по шаблону)................ 13-11
     INSTRING (позиция подстроки в строке)................ 13-12
     LEFT (строка, выравненная влево)..................... 13-13
     LEN (длина строки)................................... 13-13
     LOWER (нижний регистр)............................... 13-14
     NUMERIC (состоит ли строка только из цифр?).......... 13-14
     RIGHT (строка, выравненная вправо)................... 13-15
     SUB (возвращает подстроку строки).................... 13-15
     UPPER (верхний регистр).............................. 13-16
     VAL (код символа).................................... 13-16

Битовые функции........................................... 13-17
     BAND (побитовое И - AND)............................. 13-17
     BOR (побитовое ИЛИ - OR)............................. 13-18
     BXOR (побитовое Исключающее ИЛИ - XOR)............... 13-19
     BSHIFT (побитовый сдвиг)............................. 13-20

Процедуры и функции даты и времени........................ 13-21
     Стандартная дата..................................... 13-21
     Стандартное время.................................... 13-21
     TODAY (системная дата)............................... 13-21
     SETTODAY (установка системной даты).................. 13-22
     CLOCK (системное время).............................. 13-22
     SETCLOCK (установка системного времени).............. 13-22
     DATE (стандартная дата).............................. 13-23
     DAY (день месяца для заданной даты).................. 13-23
     MONTH (месяц для заданной даты)...................... 13-24
     YEAR (год для заданной даты)......................... 13-24
     AGE (возраст от базовой даты)........................ 13-25

Процедуры и функции ДОС................................... 13-26
     COMMAND (командная строка)........................... 13-26
     MEMORY (доступная память)............................ 13-28
     PATH (текущий диск и каталог)........................ 13-28
     RUNCODE (код завершения ДОС)......................... 13-29
     SETCOMMAND (установить параметры командной строки)... 13-30
     SETPATH (изменить текущий диск и каталог)............ 13-30

Вспомогательные процедуры и функции....................... 13-31
     ADDRESS (адрес памяти)............................... 13-31
     ERROR (сообщение об ошибке).......................... 13-31
     ERRORCODE (номер кода ошибки)........................ 13-32
     ERRORFILE (имя ошибочного файла)..................... 13-32
     IN (читать данные из порта).......................... 13-33
     MAXIMUM (максимальное значение индекса массива)...... 13-33
     NAME (досовское имя файла или устройства)............ 13-34
     OMITTED (проверка пропущенных параметров)............ 13-35
     OUT (записать данные в порт)......................... 13-36
     PEEK (прочитать память по адресу).................... 13-37
     POKE (записать в память по адресу)................... 13-38
     STATUS (состояние принтера/файла/диска/клавиатуры)... 13-39

		    МАТЕМАТИЧЕСКИЕ ФУНКЦИИ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ABS                                        (абсолютное значение)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ABS(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение           Константа, переменная или выражение.

Функция ABS возвращает абсолютное значение ВЫРАЖЕНИЯ. Абсолютное
значениевсегда положительно (или ноль).

Возвращаемый тип данных: REAL

Пример:

  C = ABS(A - B)   !C - абсолютное значение разницыe между A и B
  IF B < 0 THEN B = ABS(B).   !Если B отрицательно,  то  сменить
			      ! его знак

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INRANGE                  (попадает ли число в заданный диапазон)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	INRANGE(выражение,нижний_предел,верхний_предел)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение           Числовая константа,переменная или выражение.

нижний_предел       Числовая константа, переменная или выражение
                    задающее нижнюю границу диапазона.

верхний_предел      Числовая константа, переменная или выражение
		    задающее верхнюю границу диапазона.

Функция INRANGE сравнивает ВЫРАЖЕНИЕ с включительным  диапазоном
чисел. Если значение ВЫРАЖЕНИЯ попадает в этот диапазон, то фун-
кция  возвращает  единицу  ("ИСТИНУ").  Если же ВЫРАЖЕНИЕ больше
ВЕРХНЕГО_ПРЕДЕЛА  или  меньше  НИЖНЕГО_ПРЕДЕЛА,  то возвращается
ноль ("ЛОЖЬ").

Возвращаемый тип данных: LONG

Пример:

  IF INRANGE(Date % 7,1,5)     !Если день - рабочий
    DO WeekdayRate             !  то оплата обычная
  ELSE                         !Иначе
    DO WeekendRate             !  плата за работу в выходные
  .                            !конец условия

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INT                                     (отсекает дробную часть)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             INT(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение.

Функция INT возвращает целую часть числового ВЫРАЖЕНИЯ. Знак ре-
зультата не меняется и округления не производится.

Возвращаемый тип данных: REAL

Пример:

    INT(8.5)   вернет  8
    INT(-5.9)  вернет -5

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LOGE                                      (натуральный логарифм)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             LOGE(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение.
                   Если значение ВЫРАЖЕНИЯ меньше нуля, то  воз-
                   вращается ноль, поскольку натуральный   лога-
                   рифм не определен для отрицательных чисел.

Функция LOGE (произносится  как "loge"(ЛОУГ) )  возвращает нату-
ральный логарифм числового  ВЫРАЖЕНИЯ. Натуральный логарифм  это
показатель степени, в которую надо возвести число е, чтобы полу-
чилось заданное число. Значение e мы приняли за 2.71828182846.

Возвращаемый тип данных: REAL

Пример:

  LOGE(2.71828182846)  вернет 1
  LOGE(1)              вернет 0

  LogVal = LOGE(Val)   !Получить натуральный логарифм от VAL.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LOG10                                      (десятичный логарифм)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             LOG10(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение.
                   Если значение ВЫРАЖЕНИЯ меньше нуля, то  воз-
                   вращается ноль, поскольку десятичный логарифм
                   не определен для отрицательных чисел.

Функция LOG10 (произносится как "log ten"(ЛОГ ТЭН) )  возвращает
десятичный  логарифм  числового  ВЫРАЖЕНИЯ. Десятичный логарифм,
это показатель степени, в которую надо возвести 10, чтобы  полу-
чить заданное число.

Возвращаемый тип данных: REAL

Пример:

   LOG10(10)   вернет 1
   LOG10(1)    вернет 0

   LogStore = LOG10(Var)   !Сохранить десятичный логарифм от VAR

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
RANDOM                                         (случайное число)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             RANDOM(нижний_предел,верхний_предел)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

нижний_предел      Числовая константа, переменная или выражение,
                   задающее нижнюю границу диапазона.

верхний_предел     Числовая константа, переменная или выражение,
		   задающее верхнюю границу диапазона.

Функция RANDOM возвращает случайное целое между НИЖНИМ и ВЕРХНИМ
ПРЕДЕЛАМИ включительно. Параметры нижний_предел и верхний_предел
могуь быть любыми числовыми выражениями, но в диапазон включает-
только их целая часть.

Возвращаемый тип данных: LONG

Пример:

   LOOP X# - 1 TO 6
     LottoNbr[X#] = RANDOM(1,49)     !Выбираем числа для 6 из 49
   .

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ROUND                                         (округление числа)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ROUND(выражение,точность)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение.

точность           Числовое выражение, являющееся степенью деся-
                   ти, как то: 1, 10, 100, 0.1, 0.001 и т.д. Ес-
                   ли значение не является точной степенью деся-
                   ти, то используется ближайшая меньшая степень
                   т.е. 0.55 заменится на 0.1, а 155 - на 100.

Функция ROUND возвращает значение ВЫРАЖЕНИЯ, округленное до  за-
данного ТОЧНОСТЬЮ знака.

Возвращаемый тип данных: REAL

Пример:

   ROUND(5163,100)      вернет 5200
   ROUND(657.50,1)      вернет 658
   ROUND(51.63594,.O1)  вернет 51.64

  Commission = ROUND(Price / Rate,.01)
                       !Округляем комиссионные до целых копеек

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SQRT                                         (квадратный корень)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SQRT(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение.
                   Если значение ВЫРЖЕНИЯ  меньше нуля, то  воз-
                   вращается 0.

Функция SORT возвращает квадратный корень из ВЫРАЖЕНИЯ. Если Х -
это любое положительное вещественное число, то корень квадратный
из Х, это такое число, которое, будучи умноженным само на  себя,
даст Х.

Возвращаемый тип данных: REAL

Пример:

  Length = SORT(X^2 + Y^2)
           !По теореме Пифагора находим расстояние от 0,0 до X,Y


		  ТРИГОНОМЕТРИЧЕСКИЕ ФУНКЦИИ

Тригонометрические функции  возвращают значения,  представляющие
углы и соотношения сторон прямоугольного треугольника  (содержа-
щего угол в 90ш). Гипотенуза, это сторона трегульника,  противо-
стоящая его прямому углу. (Остальные подробности можно узнать из
любого нормального учебника тригонометрии, что по-гречески озна-
чает "измерение треугольников").

Углы выражаются  в радианах.  PI (ПИ)  - это  константа, которая
представляет соотношение между длиной окружности и ее  радиусом.
В окружности есть 2*Pl радиан (или 360 градусов).

Ниже приведены более или менее точное значение ПИ и коэффициенты
преобразований между радианами и градусами.

 Pi       EQUATE(3.1415926535898) !Значение ПИ
 Rad2Deg  EQUATE(57.295779513082) !Градусов в радиане
 Deg2Rad  EQUATE(.0174532925199)  !Радиан в градусе

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SIN                                                      (синус)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SIN(радиан)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

радиан             Числовая константа, переменная или выражение,
                   задающее угол в радианах.

Функция SIN возвращает тригонометрический синус угла, выраженно-
го в радианах. Синус - это соотношение между длиной стороны про-
тивоположной углу и длиной гипотенузы.

Возвращаемый тип данных: REAL

Пример:

  Angle = 45 * Deg2Rad    !Переводим 45ш в радианы
  SineAngle = SIN(Angle)  !Получаем синус угла в 45ш

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
COS                                                    (косинус)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             COS(радиан)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

радиан             Числовая константа, переменная или выражение,
                   задающее угол в радианах.

Функция COS возвращает тригонометрический косинус угла, выражен-
ного в радианах. Косинус  - это отношение стороны  прилегающей к
углу и гипотенузы.

Возвращаемый тип данных: REAL

Пример:

  Angle = 45 * Deg2Rad     !Переводим 45ш в радианы
  CoSineAngle = SIN(Angle) !Получаем косинус угла в 45ш

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
TAN                                                    (тангенс)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             TAN(радиан)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

радиан             Числовая константа, переменная или выражение,
                   задающее угол в радианах.

Функция TAN возвращает тригонометрический тангенс угла, выражен-
ного в радианах. Тангенс - это отношение стороныы  противополож-
ной углу и стороны прилегающей к углу.

Возвращаемый тип данных: REAL

Пример:

  Angle = 45 * Deg2Rad      !Переводим 45ш в радианы
  TangentAngle = SIN(Angle) !Получаем тангенс угла в 45ш

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ASIN                                                  (арксинус)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ASIN(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение,
                   задающее синус угла.

Функция ASIN возвращает ОБРАТНЫЙ синус. "Обратить синус" означа-
ет "получить угол, имеющий заданный синус". Возвращается угол  в
радианах.

Возвращаемый тип данных: REAL

Пример:

  InvSine = ASIN(SineAngle)                   !Получить арксинус

См. также: SIN

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ACOS                                                (арккосинус)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ACOS(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение,
                   задающее косинус угла.

Функция  ACOS  возвращает  ОБРАТНЫЙ  косинус. "Обратить косинус"
означает "найти  угол, имеющий  заданный косинус".  Возвращается
угол в радианах.

Возвращаемый тип данных: REAL

Пример:

  InvCosine = ACOS(CosineAngle)             !Получаем арккосинус

См. также: COS

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ATAN                                                (арктангенс)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ATAN(выражение)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

выражение          Числовая константа, переменная или выражение,
                   задающее тангенс угла.

Функция  ATAN  возвращает  ОБРАТНЫЙ  тангенсю "Обратить тангенс"
означает "найти  угол, имеющий  заданный тангенс".  Возвращается
угол в радианах.

Возвращаемый тип данных: REAL

Пример:

  InvTangent = ATAN(TangentAngle)           !Получить арктангенс

См. также: TAN


		       СТРОКОВЫЕ ФУНКЦИИ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ALL                           (строка из повторяющихся символов)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ALL(строка[,длина])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка              Строковое выражение,  содержащее  последова-
                    тельность символов для повторения.

длина               Длина  возвращаемой строки. Если  пропущена,
                    то будет возвращена строка из 255 символов.

Функция ALL  возвращает строку,  содержащую СТРОКУ,  повторенную
несколько раз.

Возвращаемый тип данных: STRING

Пример:

   Starline = ALL('*',25)   !Получить 25 звездочек
   Dotline = ALL('.')       !Получить 255 точек

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CENTER                                    (центрирование строки)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             CENTER(строка[,длина])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка            Строковая константа, переменная или выражение.

длина             Длина результирующей строки.  Если  пропущена,
                  то используется длина параметра СТРОКА.

Функция CENTER  сначала удаляет  ведущие и  хвостовые пробелы из
СТРОКИ, затем дополняет ее ведущими и хвостовыми пробелами  так,
чтобы строка отцентрировалась в пределах ДЛИНЫ и затем возвраща-
ет полученный результат.

Возвращаемый тип данных: STRING

Пример:

   CENTER('ABC',5)   вернет  ' ABC '
   CENTER('ABC   ')  вернет  ' ABC '
   CENTER('   ABC')  вернет  ' ABC '

  Message = CENTER(Message)                 !Сообщение - в центр
  Rpt:Title = CENTER(Name,60)               !Имя - в центр

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CHR                       (переводит ASCII-код символа в символ)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             CHR(код)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

код                     Числовое выражение, содержащее числовой
			ASCII-код символа.

Функция CHR возвращает символ, представленный его ASCII-кодом.

Возвращаемый тип данных: STRING

Пример:

   Stringvar = CHR(122)    !Строчная "z"
   Stringvar = CHR(239)    !Строчная "я"

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CLIP                             (строка без хвостовых пробелов)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             CLIP(строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка              Строковое выражение.

Функция CLIP удаляет  хвостовые пробелы из  строки. Возвращаемая
строка - это подстрока СТРОКИ без хвостовых пробелов. CLIP часто
используется вместе с оператором конкатенации (слияния) в  стро-
ковых выражениях.

Возвращаемый тип данных: STRING

Пример:

  Name = CLIP(Last) &','& CLIP(First) & Init & '.'
                                    !ФИО по военному образцу,
				    ! типа "Agarkoff, Serg P."

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DEFORMAT              (удаляет форматирование из числовых строк)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             DEFORMAT(строка[,шаблон])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка             Строковое выражение, содержащее строку цифр.

шаблон             Шаблон формата или метка данного типа STRING,
                   CSTRING  или  PSTRING,  описанного как шаблон
                   формата. Если пропущено, то используется шаб-
                   лон,  использованный  для  СТРОКИ.  (?)  Если
                   СТРОКА описана без параметра ШАБЛОН, то  воз-
                   вращаемое значение будет содержать только  те
                   символы, которые  разрешены в  числовых конс-
                   тантах.

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

Возвращаемый тип данных: STRING

Пример:

  DialString = 'ATDT1' & DEFORMAT(Phone,@P(###)###-####P) & |
                '@13,10)'   !Составляем номер для набора модемом

  ClarionDate = DEFORMAT(dBaseDate,@D1)
              !Получаем стандартную дату из строки вида mm/dd/yy

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
FORMAT                            (форматирует число по шаблону)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             FORMAT(значение,шаблон)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

значение            Числовое выражение, содержащее значение  для
                    форматирования.

шаблон              Шаблон формата или метка STRING, CSTRING или
		    PSTRING описанной с параметром ШАБЛОН.

Функция FORMAT возвращает числовую строку, отформатированную со-
гласно параметру ШАБЛОН.

Возвращаемый тип данных: STRING

Пример:

  Rpt:SocSecNbr = FORMAT(Emp:SSN,@P###-##-####P)
         !Форматируем под номер карточки социального страхования

  Phone=FORMAT(DEFORMAT(Phone,@P###-###-####P),@P(###)###-####P)
                   !Заменяем в номере некоторые дефисы на скобки

  DateString = FORMAT(DateLong,@D1)   !Преобразуем дату в строку

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INSTRING                            (позиция подстроки в строке)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
	   INSTRING(подстрока,строка[,шаг][,старт])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

подстрока         Строковая константа, переменная или выражение,
                  содержащее искомую строку.

строка            Метка  переменной  типа  STRING,  CSTRING  или
		  PSTRING, в которой искать.

шаг               Числовая константа, переменная или  выражение,
                  задающее размер  шага поиска.  ШАГ=1 означает,
                  что ПОДСТРОКА будет искаться с каждого символа
                  СТРОКИ, ШАГ=2  - с  каждого второго  символа и
                  так далее. Если пропущен, то по умолчанию  ра-
                  вен длине ПОДСТРОКИ.

старт             Числовая константа, переменная или  выражение,
                  задающее начальную  точку, номер  символа, для
                  поискаring.  Если  пропущен,  поиск начнется с
                  первого символа СТРОКИ.

Функция INSTRING  проходт по  СТРОКЕ, отыскивая  в ней вхождения
ПОДСТРОКИ. Если ПОДСТРОКА найдена, то возвращается номер символа
в СТРОКЕ, с которого начинается вхождение в нее ПОДСТРОКИ.  Если
же ПОДСТРОКА не найдена, то INSTRING возвращает 0.

Возвращаемый тип данных: LONG

Пример:

     INSTRING('DEF','ABCDEFGHIJ',1,1)   вернет  4
     INSTRING('DEF','ABCDEFGHIJ',2,1)   вернет  0
     INSTRING('DEF','ABCDEFGHIJ',2,2)   вернет  2
     INSTRING('DEF','ABCDEFGHIJ',3,1)   вернет  2

  Extension = SUB(FileSpec,INSTRING('.',FileSpec) + 1,3)
               !Выделяем расширение из полной спецификации файла

  IF INSTRING(Search.Cus:Notes,1,1)    !Если искомая переменная
				       ! найдена, то
    Scr:Message = 'Есть такая буква!'  !  сообщить об этом
  .

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LEFT                                 (строка, выравненная влево)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             LEFT(строка[,длина])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка            Строковая константа, переменная или выражение.

длина             Числовая константа, переменная или  выражение,
                  задающее длину возвращаемой строки. Если  опу-
                  щена, то длина результата равна длине СТРОКИ.

Функция LEFT фозвращает СТРОКУ, выравненную влево. Ведущие  про-
белы удаляются из СТРОКИ.

Возвращаемый тип данных: STRING

Пример:

  CompanyName = LEFT(CompanyName) !Название фирмы сдвинуть влево

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LEN                                               (длина строки)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             LEN(строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка            Строковая константа, переменная или выражение.

Функция LEN  возвращает длину  СТРОКИ. Если  параметр СТРОКА это
метка переменной, то LEN вернет ЗАДАННУЮ ПРИ ОПИСАНИИ длину этой
переменной. Числовые значения автоматически преобразуются в про-
межуточные строковые.

Возвращаемый тип данных: LONG

Пример:

  IF LEN(CLIP(Title) &' '& CLIP(First) &' '& CLIP(Last)) > 30
              !Если полное ФИО не укладывается в заданную длину,
    Rpt:Name = CLIP(Title) &' '& SUB(First.1.1) &'.'& Last
              ! то вместо отчества используем инициал.
  ELSE
    Rpt:Name = CLIP(Title) &' '& CLIP(First) &' '& CLIP(Last)
              ! ну а если все в порядке, то поставим полное ФИО
  .

  Rpt:Title = CENTER(Cus:Name,LEN(Rpt:Title))
                                   !Центрируем имя в заголовке

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LOWER                                           (нижний регистр)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             LOWER(строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка             Строковая константа, переменная или выражение
                   для преобразования.

Функция LOWER возвращает строку, в которой все буквы - строчные.

(А.С.П. - Что не совсем верно для русского текста,с которым CLA-
RION SoftWare ну никак не хочет дружить :( )

Возвращаемый тип данных: STRING

Пример:

  Name = SUB(Name,1,1) & LOWER(SUB(Name,2,19))
               !Все буквы имени, кроме первой, сделаем строчными

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
NUMERIC                      (состоит ли строка только из цифр?)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             NUMERIC(строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка            Строковая константа, переменная или выражение.

Функция NUMERIC возвращает 1 (ИСТИНУ) если строка содержит  раз-
решенное числовое значение. Она вернет 0 (ЛОЖЬ) если строка  со-
держит нецифровые символы. Разрешенные  символы, это цифры от  0
до 9, ведущий знак минус и десятичная точка.

Возвращаемый тип данных: LONG

Пример:

  IF NOT NUMERIC(PartNumber)    !Если номер запчасти - не число,
    DO ChkValidPart             !то проверим его на допустимость
  .                             !конец условия

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
RIGHT                               (строка, выравненная вправо)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             RIGHT(строка[,длина])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка            Строковая константа, переменная или выражение.

длина             Числовая константа, переменная или  выражение,
                  задающее длину возвращаемой строки. Если  про-
                  пущена, то длина результата равна длине  СТРО-
                  КИ.

Функция RIGHT возвращает  строку, выравненную вправо.  Хвостовые
пробелы удаляются, затем строка дополняется слева ведущими  про-
белами до ДЛИНЫ.

Возвращаемый тип данных: STRING

Пример:

  Message = RIGHT(Message)            !Сообщение сдвинуть вправо

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SUB                                (возвращает подстроку строки)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SUB(строка,позиция,длина)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка            Строковая константа, переменная или выражение.

позиция           Целочисленная константа, переменная или  выра-
		  жение. Ели ПОЗИЦИЯ положительна, то она задает
                  номер символа от  начала СТРОКИ, если  отрица-
                  тельная, то от конца СТРОКИ.

длина             Числовая константа, переменная или  выражение,
                  задающая количество возвращаемых символов.

Функция SUB возвращает ДЛИНА  символов из СТРОКИ, начиная  с за-
данной ПОЗИЦИИ.

Возвращаемый тип данных: STRING

Пример:

  SUB('ABCDEFGHI',1,1)   вернет  'A'
  SUB('ABCDEFGHI',-1,1)  вернет  'I'
  SUB('ABCDEFGHI',4,3)   вернет  'DEF'

  Extension = SUB(FileName,INSTRING('.',FileName,1,1),3)
                                      !Получаем расширение файла

См. также: INSTRING

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
UPPER                                          (верхний регистр)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             UPPER(строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

строка             Строковая константа, переменная или выражение
                   для преобразования.

Функция UPPER возвращает СТРОКУ, в которой все символы - заглав-
ные.

(А.С.П. - Что не совсем верно для русского текста,с которым CLA-
RION SoftWare ну никак не хочет дружить :( )

Возвращаемый тип данных: STRING

Пример:

   Name = UPPER(Name)       !Все имя вывести на верхнем регистре

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
VAL                                                (код символа)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             VAL(символ)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

символ              Однобайтная строка, содержащая СИМВОЛ.

Функция VAL возвращает ASCII-код СИМВОЛА.

Возвращаемый тип данных: LONG

Пример:

  VAL('я')  вернет  239
  VAT('z')  вернет  122

  CharVal = VAL(StrChar)
                    !Получить ASCII-код символа из StrChar


			БИТОВЫЕ ФУНКЦИИ

JOKE:
- Что такое бит?
- Это байт за вычетом налогов.
- Что такое байт?
- [восемь раз объясняется, что такое бит]
- А что же такое килобайт?
- Ну, это очень долго объяснять...

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BAND                                         (побитовое И - AND)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             BAND(значение,маска)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

значение           Числовая константа, переменная или выражение,
                   задающее битовое значение, на которое  накла-
                   дывается МАСКА. ЗНАЧЕНИЕ, при  необходимости,
                   преобразуется к типу LONG перед операцией.

маска              Числовая константа, переменная или выражение,
                   задающее  битовую  маску.  При необходимости,
                   МАСКА преобразуется к типу LONG перед  выпол-
                   нением операции.

Функция BAND сравнивает ЗНАЧЕНИЕ с МАСКОЙ, выполняя оперцию  ЛО-
ГИЧЕСКОЕ И над каждым битом. Возвращается длинное целое, в кото-
ром единицы будут только в тех местах, где они были и в ЗНАЧЕНИИ
и в МАСКЕ, в остальных местах будут нули.

BAND обычно используется для  выяснения значения одного или  не-
скольких бит (0 или 1) в переменной.

Возвращаемый тип данных: LONG

Пример:

  BAND(0110b,0010b)     вернет 0010b     !0110b = 6, 0010b = 2

RateType  BYTE                 !Тип оклада
Female    EQUATE(0001b)        !Маска для женщин
Male      EQUATE(0010b)        !Маска для мужчин
Over25    EQUATE(0100b)        !Маска для тех, кто старше 25 лет

       CODE
  IF BAND(RateType,Female) |       !Если женщина
      AND BAND(RateType,Over25     ! старше 25 лет,
    DO BaseRate                    ! то премия - обычная
  ELSIF BAND(RateType,Male)        !Если мужчина,
    DO AdjBase                     ! то подправить размер премии
  .                                !End if

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BOR                                         (побитовое ИЛИ - OR)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             BOR(значение,маска)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

значение           Числовая константа, переменная или выражение,
                   задающее битовое значение, на которое  накла-
                   дывается МАСКА. ЗНАЧЕНИЕ, при  необходимости,
                   преобразуется к типу LONG перед операцией.

маска              Числовая константа, переменная или выражение,
                   задающее  битовую  маску.  При необходимости,
                   МАСКА преобразуется к типу LONG перед  выпол-
                   нением операции.

Функция BOR сравнивает ЗНАЧЕНИЕ с МАСКОЙ, выполняя операцию  ЛО-
ГИЧЕСКОЕ ИЛИ над каждым битом. Возвращается длинное целое, в ко-
тором единице будут равны те биты, которые были единицами либо в
ЗНАЧЕНИИ, либо в  МАСКЕ либо и  там и там,  остальные биты будут
нулями.

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

Возвращаемый тип данных: LONG

Пример:

  BOR(0110b,0010b)  вернет 0110b  !0110b = 6, 0010b = 2

RateType  BYTE                 !Тип оклада
Female    EQUATE(0001b)        !Маска для женщин
Male      EQUATE(0010b)        !Маска для мужчин
Over25    EQUATE(0100b)        !Маска для тех, кто старше 25 лет

      CODE
      RateType = BOR(RateType,Over25) !Установить признак "стар-
                                      ! ше 25 лет"
      RateType = BOR(RateType,Male)   !Установить признак "оклад
				      ! мужчин"

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BXOR                           (Побитовое Исключающее ИЛИ - XOR)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             BXOR(значение,маска)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

значение           Числовая константа, переменная или выражение,
                   задающее битовое значение, на которое  накла-
                   дывается МАСКА. ЗНАЧЕНИЕ, при  необходимости,
                   преобразуется к типу LONG перед операцией.

маска              Числовая константа, переменная или выражение,
                   задающее  битовую  маску.  При необходимости,
                   МАСКА преобразуется к типу LONG перед  выпол-
                   нением операции.

Функция BXOR сравнивает ЗНАЧЕНИЕ с МАСКОЙ, выполняя операцию ЛО-
ГИЧЕСКОЕ ИСКЛЮЧАЮЩЕЕ ИЛИ над каждым битом. Возвращается  длинное
целое, в котором в единицу будут установлены только те биты, ко-
торые были единицами и в ЗНАЧЕНИИ и в МАСКЕ. Те биты, которые не
совпали в МАСКЕ  и ЗНАЧЕНИИ, а  также те, которые  были нулями и
там и там, будут нулями.

BXOR обычно используется для переключения из 1 в 0 или  наоборот
одного или нескольки битов переменной.

Возвращаемый тип данных: LONG

Пример:

  BXOR(0110b,0010b)  вернет  0100b    !0110b=6, 0100b=4, 0010b=2

RateType  BYTE                 !Тип оклада
Female    EQUATE(0001b)        !Маска для женщин
Male      EQUATE(0010b)        !Маска для мужчин
Over25    EQUATE(0100b)        !Маска для тех, кто старше 25 лет
Over65    EQUATE(1100b)        !Маска для тех, кто старше 65 лет

       CODE
  RateType = BXOR(RateType,Over65) !Инвертировать признак "стар-
				   ! ше 65 лет"

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
BSHIFT                                         (побитовый сдвиг)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             BSHIFT(значение,счетчик)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

значение           Числовая константа, переменная или выражение.
                   При необходимости, преобразуется к типу LONG
		   перед операцией.

счетчик            Числовая константа, переменная или выражение,
                   задающее на сколько бит нужно сдвинуть ЗНАЧЕ-
                   НИЕ. Если СЧЕТЧИК положителен, значение сдви-
                   гается ВЛЕВО, если отрицателен - то ВПРАВО.

Функция BSHIFT сдвигает биты ЗНАЧЕНИЯ на СЧЕТЧИК битов. ЗНАЧЕНИЕ
может быть сдвинуто ВЛЕВО (от младших битов к старшим) или ВПРА-
ВО (от старших к младшим), освобождающиеся места заполняются ну-
лями.

(А.С.П. - можно сказать, что BSHIFT умножает (СЧЕТЧИК>0) или де-
лит (СЧЕТЧИК<0) ЗНАЧЕНИЕ на  2 в степени СЧЕТЧИК.  Скажем, чтобы
умножить Х на 16 можно выполнить либо А=Х*16 либо А=BSHIFT(X,4),
причем последнее выражение выполнится быстрее первого, поскольку
обычно реализуется на уровне процессорной команды сдвига. В ФОР-
ТЕ используется именно этот принцип)

Возвращаемый тип данных: LONG

Пример:

  BSHIFT(0110b,1)   вернет 1100b
  BSHIFT(0110b,-1)  вернет 0011b

  Varswitch = BSHIFT(20,3)           !Умножаем на 8
  Varswitch = BSHIFT(Varswitch,-2)   !Делим на 4

(А.С.П. - когда я писал свое примечание, я еще не смотрел на две
предыдущие строки :)


	      ПРОЦЕДУРЫ И ФУНКЦИИ ДАТЫ И ВРЕМЕНИ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Стандартная дата
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

Стандартная дата Кларион - это число дней, прошедших с 28  дека-
бря 1800 года. Доступны даты в диапазоне от 1 января 1801 (стан-
дартная дата 4)  до 31 декабря  2099 (стандартная дата  109211).
Функции работы с датой  не могут вернуть правильных  результатов
для значений,  выходящих за  эти пределы.  Календарь стандартной
даты  подстраивается  для  високосных  лет в диапазоне доступных
дат.

Обычно,в качестве стандартной даты используются данные типа LONG
описанные в  шаблоне даты  (@D). Типа  данных DATE  - это формат
данных, используеммый менеджером записей Btrieve. Поля DATE пре-
образуются в LONG, содержащее стандартную дату Кларион перед вы-
полнением любых  математических операций  или операций  работы с
датами. Таким образом, DATE стоит использовать для файловой сов-
местимости с Btrieve, а LONG - для других файловых систем.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Стандартное время
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН

Стандартное время Кларион - это число сотых долей секунды,  про-
шедших с полуночи. Допустимые пределы:  от 1 (что мы приняли  за
полночь) до  8,640,00 (23:59:59:99).  Стандартное время  1 точно
соответствует полуночи. Хотя время  и выражается с точностью  до
сотых долей секунды, системный  таймер обновляется  только  18.2
раза в секунду (приблизительно каждые 5.5 сотых секунды).

Обычно, в качестве стандартного времени используются данные типа
LONG описаные в шаблоне времени (@T). Тип данных TIME  использу-
ется в менеджере записей Btrieve. Поля типа TIME преобразуются в
LONG, содержащее стандартное время Кларион перед выполнением лю-
бых математических операций или операций со временем. Таким  об-
разом, DATE имеет смысл использовать для файловой  совместимости
с Btrieve, а LONG - во всех остальных случаях.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
TODAY                                           (системная дата)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             TODAY()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция TODAY возвращает системную дату DOS в формате  стандарт-
ной даты Кларион.

Возвращаемый тип данных: LONG

Пример:

  SETTODAY(TODAY() + 1)    !Установить завтрашнюю дату
  OrderDate = TODAY()      !Проставить на счете сегодняшнюю дату

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SETTODAY                              (установка системной даты)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SETTODAY(дата)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

дата               Числовая константа, переменная или выражение,
                   содержащее стандартную дату.

Оператор SETTODAY устанавливает системную дату ДОС.

Пример:

   SETTODAY(TODAY() + 1)             !Установим завтрашнюю дату

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
CLOCK                                          (системное время)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             CLOCK()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция CLOCK возвращает время дня, исходя из системного времени
ДОС.

Возвращаемый тип данных: LONG

Пример:

  Time = CLOCK()                      !Сохраняем системное время
  SHOW(1,1,CLOCK(),@T4)               !Показать системное время

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SETCLOCK                          (установка системного времени)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SETCLOCK(время)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

время              Числовая константа, переменная или выражение,
                   содержащее  стандартное  время,  выраженное в
                   стоых долях секунды).

Оператор SETCLOCK останавливает системное время ДОС.

Пример:

  SETCLOCK(1)                           ! Да настанет полночь!!!

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DATE                                          (стандартная дата)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             DATE(месяц,число,год)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

месяц              Числовая константа, переменная или выражение,
                   задающее месяц.

число              Числовая константа, переменная или выражение,
                   задающее число месяца.

год                Числовая константа, переменная или выражение,
                   задающее год,  в диапазоне  от 00  до 99 (что
                   означает годы 1900-1999) либо от 1801 до 2099

Функция DATE  возвращает стандартную  дату для  заданных месяца,
числа и года. Параметры МЕСЯЦ и ДЕНЬ могут иметь значения, выхо-
дящие за  пределы разумного.  Скажем, 13й  месяц рассматривается
как январь следующего года. А день 32 января рассматривается как
1е  февраля.  Соответственно,  DATE(12,32,87),  DATE(13,1,87)  и
DATE(1,1,88) означают один и тот же день.

Возвращаемый тип данных: LONG

Пример:

  HireDate = DATE(Hir:Month,Hir:Day,Hir:Year) !Вычисляем дату
					      ! приема на работу

См. также: Стандартная дата

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DAY                              (день месяца для заданной даты)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             DAY(дата)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

дата                Числовая  константа,  переменная,  выражение
                    или  метка  переменной  типа STRING, CSTRING
		    или PSTRING, описанной в шаблоне даты.  ДАТА
                    должна быть  стандартной датой.  Переменная,
                    описанная в шаблоне даты, автоматически пре-
                    образуется в промежуточное значение -  стан-
                    дартную дату.

Функция DAY вычисляет число месяца (1..31) для заданной стандар-
тной даты.

Возвращаемый тип данных: LONG

Пример:

  OutDay = DAY(TODAY())           !Какое у нас сегодня число?
  DueDay = DAY(TODAY()+2)         !Вычисляем день выплат

См. также: Стандартная дата

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
MONTH                                  (месяц для заданной даты)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             MONTH(дата)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

дата                Числовая  константа,  переменная,  выражение
                    или  метка  переменной  типа STRING, CSTRING
		    или PSTRING, описанной в шаблоне даты.  ДАТА
                    должна быть  стандартной датой.  Переменная,
                    описанная в шаблоне даты, автоматически пре-
                    образуется в промежуточное значение -  стан-
                    дартную дату.

Функция MONTH возвращает месяц года (1..12) для заданной стандар
тной даты.

Возвращаемый тип данных: LONG

Пример:

  PayMonth = MONTH(DueDate)         !Месяц выплаты

См. также: Стандартная дата

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
YEAR                                     (год для заданной даты)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             YEAR(дата)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

дата                Числовая  константа,  переменная,  выражение
                    или  метка  переменной  типа STRING, CSTRING
		    или PSTRING, описанной в шаблоне даты.  ДАТА
                    должна быть  стандартной датой.  Переменная,
                    описанная в шаблоне даты, автоматически пре-
                    образуется в промежуточное значение -  стан-
                    дартную дату.

Функция YEAR  возвращает четыре  цифры номера  года для заданной
стандартной даты (1801 to 2099).

Возвращаемый тип данных: LONG

Пример:

  IF YEAR(LastOrd) < YEAR(TODAY())
                     !Если дата последнего счета не в этом году,
    DO StartNewYear  !  то начнем новый год
  .

См. также: Стандартная дата

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
AGE                                    (возраст от базовой даты)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             AGE(дата_рождения,базовая_дата)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

дата_рождения       Числовое выражение для стандартной даты.

базовая_дата        Числовое выражение для стандартной даты. Ес-
                    ли пропущена, то для вычислений берется сис-
                    темная дата ДОС.

Функция AGE возвращает строку, содержащую время, прошедшее между
двумя датами. Возвращаемая строка имеет тако формат:

   1..60 дней           - 'nn DAYS'
   61 день..24 месяца   - 'nn MOS'
   2 года..999 лет      - 'nnn YRS'

Возвращаемый тип данных: STRING

Пример:

  Message = 'Работнику ' & Emp:Name & 'на сегодняшний день' |
  & AGE(Emp:DOB.TODAYo)
                          !Выводим возраст работника в сообщении

См. также: Стандартная дата

		    ПРОЦЕДУРЫ И ФУНКЦИИ ДОС

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
COMMAND                                       (командная строка)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             COMMAND(флаг[,операция])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

флаг         Строковая константа или переменная, содержащая  ис-
             комый  параметр  или  номер  параметра  в командной
             строке.

операция     Целочисленная константа или переменная в  диапазоне
             от 0 до 3. Если пропущена, то по умолчанию 0.

Функция COMMAND возвращает значение параметра ФЛАГ из  командной
строки, файла конфигурации  или переменной окружения.  Если ФЛАГ
не найден,  COMMAND возвращает  пустую строку.  Если ФЛАГ описан
многократно, то возвращается его первое значение.

ОПЕРАЦИЯ указывает где искать:

       3      в командной строке
       2      в файле конфигурации
       1      в окружении
       0      во всех трех предыдущих, в порядке 3-2-1

COMMAND ищет выраженние ФЛАГ=VALUE и возвращает VALUE. Не должно
быть пробелов между ФЛАГОМ, знаком равенства и VALUE. Из  конфи-
гурационного файла или окружения возвращается все, что находится
справа от знака равенства. VALUE, получаемое из командной строки
считывается до первой запятой или пробела. Если пробел или запя-
тая являются значением ФЛАГА, то все, что стоит справа от  знака
равенства, должно заключаться в двойные кавычки (ФЛАГ="VALUE").

Также, COMMAND ищет в командной строке ФЛАГ, перед которым стоит
слэш (/).  Если такое  найдено, то  COMMAND возвращает  значение
ФЛАГА без  слэша. Если  ФЛАГ содержит  только число,  то COMMAND
возвращает параметр командной тсроки, номер которого  содержится
в ФЛАГЕ. Если ФЛАГ - пустая строка ('') и ОПЕРАЦИЯ=3, то возвра-
щается вся командная строка, к которой добавлен ведущий пробел.

Файл конфигурации позволяет подстраивать программу во время  ис-
полнения. Это текстовй файл, который содержит любые желаемые па-
раметры, которые имют смысл во время исполнения. Каждый параметр
должен занимать отдельную строку. По умолчанию, имя файла конфи-
гурации, это  имя программы,  к которой  этот файл  относится, с
расширением .INI. Это имя можно изменить из командной строки па-
раметром CLAINI=новое_имя_фалй. CLAINI не утанавливается  коман-
дой SETCOMMAND.

Возвращаемый тип данных:  STRING

Пример:

C:\>MYPROG CLAVM="EMS ... 16,3,6"
                   !Параметр в командной строке содержит запятые

C:\>MYPROG CLAINI=INITFILE.INI
                      !Вместо MYPROG.INI используем INITFILE.INI

  RUN(COMMAND('COMSPEC',1) & '/C DIR /P')
                             !Находим местоположение command.com
                             ! и выполняем команду ДОС

  IF COMMAND('/N',3)                !В командной строке есть /N?
    DO SomeProcess
  .

  IF UPPER(COMMAND('CLAVM',0)) = 'OFF'
                        !Неужели виртуальная память отключена?
    DO NoVirtualMem     ! ну тогда придется обойтись без нее :-(
  ELSE
    DO VirtualMem       ! делаем нечто, интенсивно использущее
			!  память.
  .

  CommandString = COMMAND(",3)    !Получаем всю командную строку

  SecondParm = COMMAND('2'.3)
                   !Получаем из командной строки второй параметр

См. также: SETCOMMAND

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
MEMORY                                        (доступная память)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             MEMORY([n])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

n     Числовая константа,  переменная  или выражение.  Допустимы
      значения 0..4, включительно. Если пропущено, то по умолча-
      нию - 0.

Функция MEMORY возвращает количество доступной свободной  памяти
в байтах. Если n=0 или n=1, то возвращается доступная  стандарт-
ная (conventional) память, при n=2 возвращается количество  сво-
бодной EMS, при n=3 возвращается общее количество свободной вир-
туальной памяти, и при n=4 возвращается размер максимального до-
ступного блока памяти. Если n не в диапазоне 1..4, то  возвраща-
ется ноль.

Возвращаемый тип данных: LONG

Пример:

 SysMem = MEMORY()  !Возвращается количество
 SysMem = MEMORY(0) ! свободной
 SysMem = MEMORY(1) ! стандартной памяти
 SysMem = MEMORY(2) !Возвращается количество свободной EMS
 SysMem = MEMORY(3) !Возвращается общее количество свободной
 		    ! виртуальной памяти
 SysMem = MEMORY(4) !Возвращается наибольший виртуальный блок

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
PATH                                    (текущий диск и каталог)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             PATH()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция PATH возвращает строку, содержащую текущий диск и  ката-
лог

Возвращаемый тип данных: STRING

Пример:

  IF PATH() = 'C:\'                            !Если мы в корне
    SHOW(12,12,'Мы сейчас в корневом каталоге')! то сообщим об
					       ! этом
См. также: SETPATH

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
RUNCODE                                     (код завершения ДОС)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             RUNCODE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция RUNCODE возвращает код завершения, переданный в ДОС  ко-
мандой, выполненной оператором  RUN. Этот код  выхода передается
оператором HALT в  программах на Кларион,  и он же  является ER-
RORLEVEL в  DOS. Значение,  возвращаемое функцией  RUNCODE имеет
тип LONG и может иметь любое значение, переданное в ДОС как  код
завершения порожденного процесса.

Порожденный процесс  может передать  в DOS  только значение типа
BYTE в качестве кода  завершения, поэтому, в качестве  кодов за-
вершения не могут использоваться отрицательные числа.  Этот факт
позволяет  функции  RUNCODE  зарезервировать некоторые значения,
чтобы обрабатывать ситуации, в которых код выхода недоступен:

        0  нормальное завершение
       -1  программа прервана по Ctri-C
       -2  программа прервана из-за критической ошибки
       -3  TSR завершил работу
       -4  программа не запустилась (проверь функцию ERROR())

Возвращаемый тип данных: LONG

Пример:

   RUN('Nextprog.exe')            !Запускаем следующую программу
   IF RUNCODE() = -4
     IF ERROR() = 'Not Enough Memory'
            !Если программа не запустилась из-за нехватки памяти
       SHOW(25,10,'Insufficient memory') ! то сообщить об этом
       RETURN                      ! и завершить процедуру
     ELSE
       STOP(ERROR())               ! прервать нашу программу
   . .

См. также: RUN, RUNSMALL, HALT

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SETCOMMAND               (установить параметры командной строки)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SETCOMMAND(командная_строка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

командная_строка  Строковая константа, переменная или выражение,
                  содержащее новые параметры командной строки.

SETCOMMAND позволяет программе "изнутри" задать параметры коман-
дной строки, которые может получить функция COMMAND.  SETCOMMAND
перекрывает любые параметры командной строки с такими же  имена-
ми. Чтобы отменить параметр, начинающийся со слэша, добавь к не-
му знак равенства (=) в новой командной строке.

SETCOMMAND нельзя использовать для установки параметров  систем-
ного уровня,  которые задаются  в командной  строке при загрузке
программы. Эти  параметры, как  виртуальная память  (CLAVM=) или
файл конфигурации программы (CLAINI=) должны быть заданы при за-
грузке и не могут быть изменены с помощью SETCOMMAND. Но каталог
для временных  файлов (CLATMP=)  можно переопределить  в SETCOM-
MAND.

Пример:

  SETCOMMAND(' /N')                       !Добавляем параметр /N
  SETCOMMAND(' /N=')                      !Отключаем параметр /N

См. также: COMMAND

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
SETPATH                        (изменить текущий диск и каталог)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             SETPATH(диск_и_путь)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

диск_и_путь  Строковая   константа  или  метка  переменной  типа
	     STRING, CSTRING или PSTRING, содержащей  специфика-
	     цию нового диска и пути. Если пропущена буква диска
	     и двлеточие после  нее, то подразумевается  текущий
	     диск.

SETPATH изменяет текущий диск и каталог ДОС. Если диск или ката-
лог заданы неправильно, возвращается ошибка "Путь не существует"
(Path Not Found) и текущий каталог не меняется.

Возвращаемые ошибки:
	  03 Путь не существует

Пример:

  SETPATH('C:\LEDGER')   !Переходим в каталог бухгалтерских книг
  SETPATH(UserPath)      !Переходим в пользовательский каталог


	      ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ADDRESS                                           (адрес памяти)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ADDRESS(переменная)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

переменная          Метка элемента данных.

Функцйя ADDRESS возвращает длинное целое (LONG), содержащее  ад-
рес ПЕРЕМЕННОЙ в памяти в стандартном формате  сегмент:смещение.
Эта функция позволяет передать адрес ПЕРЕМЕННОЙ внешним  библио-
текам, которы могут  быть написаны на  других языках. Если  про-
грамма оверлейная, то после завершения процедуры, в которой  ис-
пользовалась значение ADDRESS, это значение не будет  соответст-
вовать истине. Это происходит из-за того, что загрузчик оверлеев
выпоняет автоматическую подкачку и выгрузку сегментов.

Возвращаемый тип данных: LONG

Пример:

  MAP
    MODULE('External.Obj')      !Внешняя библиотека
      SomeProc(LONG),C          !Передаем параметры как в С
  . .

Varl   CSTRING(10)              !Строка, завершающаяся нулем
       CODE
       SomeProc(ADDRESS(Varl))
                     !Передаем адрес Varl во внешнюю процедуру

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ERROR                                      (сообщение об ошибке)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ERROR()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция ERROR возвращает  строку, содержащую описание  возникшей
ошибки? Если ошибок не было, то ERROR вернет пустую строку.

Возвращаемый тип данных: STRING

Пример:

  PUT(NameQueue)                            !Пишем запись
  IF ERROR() = 'Queue Entry Not Found'      !Если не найдена
    ADD(NameQueue)                          ! то добавим новую
      IF ERRORCODE() THEN STOP(ERROR()).
                                     !Может еще какие-то ЕГГОГИ?
  .

См. также: ПРИЛОЖЕНИЕ B

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ERRORCODE                                    (номер кода ошибки)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ERRORCODE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция ERRORCODE возвращает номер (код) возникшей ошибки.  Если
ошибок не было, то ERRORCODE возвращает ноль.

Возвращаемый тип данных:  LONG

Пример:

  ADD(Location)                !Добавим новую запись
  IF ERRORCODE() = 8          !Не хватает памяти?
    SHOW(1,5,'Памяти мало!')  !  сообщим об этом вопиющем факте
  .

См. также: ПРИЛОЖЕНИЕ B

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ERRORFILE                                 (имя ошибочного файла)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             ERRORFILE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Функция ERRORFILE возвращает  имя файла, при  обработке которого
возникла ошибка.  Если файл  открыт, то  возвращается его полная
спецификация в формате ДОС. Если файл не открыт, то возвращается
содержимое атрибута NAME оператора  FILE. Если файл не  открыт и
оператор FILE был без атрибута NAME, то возвращается метка  опе-
ратора FILE. Если ошибок не было, или возникшая ошибка не связа-
на с файлами, то ERRORFILE возвращает пустую строку.

Возвращаемый тип данных: STRING

Пример:

  ADD(Location)                       !Добавляем новый элемент
  IF ERRORCODE()
    SHOW(1,5,'Проблема с файлом ' & ERRORFILE())
                                 !Вывести сообщение
    ASK                          ! и подождать нажатия на кнопку
  .

См. также: ПРИЛОЖЕНИЕ B

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
IN                                      (читать данные из порта)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             IN(порт,данные)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

порт     Числовая константа, переменная или выражение,  задаюшее
         номер порта.  Список разрешенных  номеров портов  можно
         найти в Техническом Руководстве по IBM PC.

данные   Метка переменной типа BYTE, SHORT или USHORT. Если ДАН-
         НЫЕ типа BYTE, то из порта читается младший байт  через
         регистр AL. Если  же ДАННЫЕ типа  SHORT или USHORT,  то
         читаются два байта через регистр AX.

Оператор IN читает данные из порта ввода, исполняя машинную  ко-
манду IN.

Пример:

    IN(61h,SavePPI)                      !Сохраняем PPI
    IN(62h,PError)                       !Нет ли ошибок четности

См. также: OUT

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
MAXIMUM                  (максимальное значение индекса массива)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             MAXIMUM(переменная,индекс)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

переменная   Метка переменной, описанной с атрибутом DIM.

индекс       Числовая константа, переменная или выражение, зада-
             ющее номер индекса. ИНДЕКС определяет, какое  изме-
             рение массива передается этой функции.


Функция MAXIMUM возвращает  максимальное значение заданного  ИН-
ДЕКСА для переменной-массива. Обычно это используется для  опре-
деления размера массива, переданного в процедуру или функцию.

Возвращаемый тип данных: LONG

Пример:

Array  BYTE,DIM(10,12)           !Описываем двумерный массив

Для массива выше:  MAXIMUM(Array,1)  вернет  10
                   MAXIMUM(Array,2)  вернет  12

  LOOP X# = 1 TO MAXIMUM(Array,1)
                           !Цикл до конца первого измерения
    LOOP Y# = 1 TO MAXIMUM(Array,2)
                           ! Цикл до конца второго измерения
      Array[X#,Y#] = 27    !  Каждый элемент = 27
  . .                      !Конец циклов

См. также: DIM, Массивы как параметры ПРОЦЕДУР и ФУНКЦИЙ

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
NAME                        (досовское имя файла или устройства)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             NAME(метка)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

метка               Метка описания отчета или файла.

Функция NAME возвращает строку,  содержащую имя в стандарте  ДОС
для структуры,  заданной МЕТКОЙ.  Для файлов,  если файл открыт,
возвращается полная спецификация файла в DOS (диск, путь, имя  и
расширение). Если файл закрыт, то возвращается содержимое  атри-
бута NAME для этого файла.

Для отчетов, возвращается  имя, заданное атрибутом  DEVICE. Если
отчет выводится в файл и файл открыт, то NAME вернет полную спе-
цификацию этого файла. В  противном случае, NAME вернет  то, что
записано в атрибуте DЕVICE. Если этого атрибута нет, то  возвра-
щается PRN.

Возвращаемый тип данных: STRING

Пример:

  OpenFile = NAME(Customer)      !Сохраняем имя открытого файла
  OutputDevice = NAME(AcctRpt)
                 !Сохраняем имя устройства, куда выводится отчет

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
OMITTED                        (проверка пропущенных параметров)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             OMITTED(номер)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

номер   Целочисленная  константа или переменная, задающая  номер
        проверяемого параметра.

Функция OMITTED проверяет был ли передан тот или иной параметр в
процедуру или функцию. Если  искомый параметр пропущен, то  воз-
вращается ИСТИНА (1). Если параметр с заданным НОМЕРОМ  передан,
то возвращается ЛОЖЬ (0). Любой НОМЕР после последнего  передан-
ного параметра соответствует пропущенному параметру.

Разрешается пропускать только те  параметры, чей тип данных  за-
ключен в угловые скобки ( <> ) в прототипе процедуры или функции
в MAP-структуре.

Возвращаемый тип данных: LONG

Пример:
   SomeProc(Fieldl,,Field4)

Для вышеприведенного примера:
     OMITTED(1)   вернет  0
     OMITTED(2)   вернет  1
     OMITTED(3)   вернет  0
     OMITTED(4)   вернет  1

    PROGRAM
    MAP
      SomeFunction(строка,),STRING     !Прототип функции
    .
    CODE
    :
    :

SomeFunction FUNCTION(Fieldl,Date)
    CODE
    IF OMITTED(2)                 !Если не задана дата,
      Date = TODAY()              ! то подставляем системную.

См. также: Прототипы процедур и функций

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
OUT                                     (записать данные в порт)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             OUT(порт,данные)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

порт     Числовая константа, переменная или выражение,  задаюшее
         номер порта.  Список разрешенных  номеров портов  можно
         найти в Техническом Руководстве по IBM PC.

данные   Целочисленная константа, не более чем 65,535 (64К)  или
	 метка переменной типа BYTE, SHORT или USHORT. Если ДАН-
	 НЫЕ типа BYTE, то  в порт выводится младший  байт через
	 регистр AL. Если же ДАННЫЕ имеют тип SHORT или  USHORT,
	 то через регистр AX в порт записываются два байта.

Оператор OUT записывает даннеы в порт вывода, выполняя  машинную
команду OUT.

Пример:

  OUT(43h.Control)    !Посылаем байт управления в таймер
  OUT(61h,Speaker)    !Включаем динамик

См. также: IN

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
PEEK                                       (read memory address)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             PEEK(сегмент:смещение,приемник)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

сегмент:смещение  Числовая константа, переменная или  выражение,
		  задающее адрес памяти.  СЕГМЕНТ должен быть  в
		  двух старших байтах,  а СМЕЩЕНИЕ в  двух млад-
		  ших. Если этот параметр типа REAL, то в проме-
		  жуточное значение преобрзуется только его  це-
		  лая часть, чтобы получить 32-хбитное целое.

приемник          Метка переменной.

Оператор PEEK читает данные из памяти по адресу СЕГМЕНТ:СМЕЩЕНИЕ
и записывает  их в  переменную ПРИЕМНИК.  PEEK считывает столько
байт, чколько нужно, чтобы заполнить ПРИЕМНИК.

Пример:

Segment       USHORT
Offset        USHORT
Destl         BYTE
Dest2         SHORT
Dests         REAL
KeyboardFlag  BYTE
   CODE
   PEEK(Segment*(256.0*256.0)+Offset,Destl)  !Читаем 1 байт
   PEEK(BSHIFT(Segment,16)+Offset,Dest2)     !Читаем 2 байта
   PEEK(BSHIFT(Segment,16)+Offset,Dest3)     !Читаем 8 байт
   PEEK(00400017h,KeyboardFlag)
   	!Читаем байт состояния клавиатуры

См. также:  POKE

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
POKE                               (записать в память по адресу)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             POKE(сегмент:смещение,источник)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

сегмент:смещение  Числовая константа, переменная или  выражение,
		  задающее адрес памяти.  СЕГМЕНТ должен быть  в
		  двух старших байтах,  а СМЕЩЕНИЕ в  двух млад-
		  ших. Если этот параметр типа REAL, то в проме-
		  жуточное значение преобрзуется только его  це-
		  лая часть, чтобы получить 32-хбитное целое.

источник          Метка переменной.

Оператор POKE записывает содержимое переменной ИСТОЧНИК в ука-
занный дрес памяти. POKE пишет столько байт, сколько их в ИСТОЧ-
НИКЕ.

Пример:
Segment       USHORT
Offset        USHORT
Destl         BYTE
Dest2         SHORT
Dests         REAL
KeyboardFlag  BYTE
   CODE
   PEEK(Segment*(256.0*256.0)+Offset,Source1)  !Пишем 1 байт
   PEEK(BSHIFT(Segment,16)+Offset,Source2)     !Пишем 2 байта
   PEEK(BSHIFT(Segment,16)+Offset,Source2)     !Пишем 8 байт
   POKE(00400017h,KeyboardFlag)   !читаем состояние клавиатуры
   KeyboardFlag = BOR(KeyboardFlag,40h)      ! включаем CAPS
   POKE(00400017h,KeyboardFlag)   !и перезаписываем состояние

См. также:    PEEK

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
STATUS               (состояние принтера/файла/диска/клавиатуры)
НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН
             STATUS(і принтер  і)
                    і   диск   і
                    і   файл   і
                    іклавиатураі
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

принтер      Строковая константа или переменная, содержащая  до-
             постимое в  ДОС название  принтерного порта:  LPT1,
             LPT2 или LPT3.

диск         Строковая константа или переменная, содержащая  до-
             пустимое в ДОС имя диска: A:, B:, C:, . . ., Z:.

файл         Метка оператора FILE.

клавиатура   Строковая константа или переменная, содержащая  имя
             устройства: CON.

Функция  STATUS  возвращает  текущее  состояние принтера, диска,
файла или клавиатуры.

STATUS(принтер)    Возвращает 0, если принтер не готов и 1, если
                   с принтером все в порядке.

STATUS(диск)       Возвращает 0, если диск не готов или  свобод-
                   ное место на диске в байтах, если диск в  по-
                   рядке.

STATUS(файл)       Возвращает 0, если файл не открыт и режим до-
                   ступа к файлу,  если он открыт.  Если текущий
                   режим доступа -  0 (только для  чтения, любой
                   доступ), то возвращается  код 40h (Read  Only
		   Deny None) (см. OPEN).

STATUS(клавиатура) Возвращает  флаг  состояния  клавиатуры. Этот
                   флаг рассматривается в виде совокупности  би-
                   тов в длинном целом. Значения битов приведены
                   ниже (** означает, что бит установлен  только
                   пока клавиша нажата):

 x....... ........ Ins **
 .x...... ........ Caps Lock **
 ..x..... ........ Num Lock **
 ...x.... ........ Scroll Lock **
 ....x... ........ Режим паузы (Ctrl-Num Lock или Pause) **
 .....x.. ........ Sys Req **
 ......x. ........ Left Alt **
 .......x ........ Left Ctrl **
 ........ x....... Режим вставки
 ........ .x...... Caps Lock
 ........ ..x..... Num Lock
 ........ ...x.... Scroll Lock
 ........ ....x... Alt **
 ........ .....x.. Ctrl **
 ........ ......x. Left Shift **
 ........ .......x Right Shift **

Возвращаемый тип данных:   LONG

Пример:

  IF STATUS(DataFile) % 16 = 0   !Файл открыт только для чтения?
    RETURN                       ! ну тогда отваливаем
  ELSE                           !В противном случае
    EXECUTE DiskAction           ! пишем запись на диск
      ADD(DataFile)
      PUT(DataFile)
      DELETE(DataFile)
  . .

  LOOP
    IF STATUS('A:') = 0            !Проверяем состояние диска А:
      SHOW(1,1,'Вставьте, пожалуйста, диск в дисковод A:')
      BEEP
      ASK
    ELSE
      BREAK
  . .

  LOOP
    IF STATUS('LPT1') = 0           !Проверка состояния принтера
      SHOW(1,1,'Проверьте, пожалуйста, принтер.')
      BEEP
      ASK
    ELSE
      BREAK
  . .

  LOOP
    IF BAND(STATUS('CON'),00100000b)         !Проверяем Num Lock
      SHOW(1,1,'Выключите, пожалуйста, Num Lock')
      BEEP
      ASK
    ELSE
      BREAK
  . .

См. также:    OPEN



Яндекс цитирования