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



 

ОПИСАНИЕ КОМАНД И ФУНКЦИЙ

                             - 120 -
     
                                               Ч А С Т Ь  III
 _____________________________________________________________
      
     О П И С А Н И Е    К О М А Н Д     И      Ф У Н К Ц И Й
 _____________________________________________________________
     
      Глава 9.  Команды
                  Перечень команд
                  Команды PALa по категориям
                  Описание команд
                              
      Глава 10. Функции
                  Перечень функций
                  Функции PALa по категориям
                  Описание функций
     
     
.

                             - 121 -
      
                 СПРАВКА ПО КОМАНДАМ И ФУНКЦИЯМ
      
      Главы  9  и 10 содержат полный перечень данных обо всех
 PAL  командах  и  функциях Для описания синтаксиса команд и
 функций используются следующие традиционные обозначения:
     >> Имена команд и функций даются заглавными буквами
        ATAN, ATAN2
     >> Угловые  скобки применяются для обозначения парамет-
 ров, требующихся пользователю, как
        ?? <выражение 1>
 Угловые скобки не являются частью  синтаксиса  команды  или
 функции.
     >> Двойные   угловые скобки применяются для обозначения
 необязательных пунктов, которые могут как включаться, так и
 не выключаться.
        LOCATE <> 
     
.

                             - 122 -

                                                 Г Л А В А  9
 ____________________________________________________________
         
                          К О М А Н Д Ы
 ____________________________________________________________
 
                        ПЕРЕЧЕНЬ КОМАНД
     
 =         присвоение значений переменным, масивам или полям
 ?         запись в строку ниже курсора на канве PALa
 ??        запись в строку на канве PALa над курсором
 @         позиция курсора на канве
 ACCEPT    принять значения с клавиатуры
 ADD       добавить записи из одной таблицы в другую
 ARRAY     определение массива
 BACKSPACE уничтожает символы слева от курсора.
 BEEP      звуковой сигнал
 CANCELEDIT отменяет режим редактирования
 СHECK     размещает или стирает метку в выбранном поле формы
           [F6]
 СHECKPLUS размещает или стирает метку с  в выбранном поле
           формы [Alt][F6]
 CLEAR     очистка канвы PALa
 CLEARALL [Alt] [F8] Очищает все изображения в рабочем прос-
                      транстве ПАРАДОКСА
 CLEARIMAGE [F8] удаляет текущее изображение
 CLOSE PRINTER закрывает ранее открытый канал устройства пе-
               чати
 COEDIT позволяет многим пользователям производить изменения
           в текущей таблице
 COEDITKEY  [Alt] [F9] включает режим совместного редактиро-
                       вания
 COPY      копирование записей из одной таблицы в другую
 COPYFROMARRAY  копирование элементов массива в поля текущей
           записи текущего образа.
 COPYTOARRAY  копирует  поля  текущей  записи  в  массив.


                             - 123 -
 CREATE    создание новой таблицы.
 CREATLIB  создание новой библиотеки
 CTRLBACKSPACE [Ctrl] [Backspase] стирает содержимое текуще-
                                  го поля
 CTRLBREAK [Ctrl] [Break] прерывает выполнение текущей зада-
                          чи
 CTRLEND   моделирует нажатие [Ctrl] [End]
 CTRLHOME  моделирует нажатие [Ctrl] [Home]
 CTRLLEFT  моделирует нажатие [Ctrl] [<--]
 CTRLPGDN  моделирует нажатие [Ctrl] [PgDn]
 CTRLPGUP  моделирует нажатие [Ctrl] [PgUp]
 CTRLRIGHT моделирует нажатие [Ctrl] [Right]
 CURSOR    переключает изображение курсора
 DEBUG     прекращение  выполнения скрипта и передача управле-
           ния отладчику (D).
 DEL       нажатие [Del]
 DELETE    удаление таблицы
 DELETELINE [Ctrl] [Y] удаляет информацию от позиции курсора
                       до конца строки
 DO_IT!    [F2]
 DITTO     [Ctrl] [D] копирует поле из предыдущей записи
 DOS       запуск DOS без выхода из ПАРАДОКСА
 DOSBIG    выход в DOS без выхода из ПАРАДОКСА
 DOWN      моделирует нажатие клавиши "стрелка вниз"
 DOWNIMAGE [F4] перемещает курсор вниз к следующему  изобра-
           жению в рабочем пространстве
 ECHO      открывает  или блокирует вывод на дисплей внутреннюю
           работу скрипта.
 EDIT      редактирование таблиц.
 EDITKEY   [F9] включение режима редактирования
 EMPTY     очистка таблицы от всех записей.
 ENTER     [Enter]
 ESC       [Esc]
 EXAMPL    [F5] вводит пример в текущее поле запроса
 EXECPROC  вызывает процедуру, не имеющую аргументов
 EXECUTE   выполняет последовательность команд
 EXIT      выход  в DOS.


                             - 124 -
 FIELDVIEW [Alt] [F5] или [Ctrl] [F] включает режим просмот-
           ра поля
 FIRSTSHOW делает текущее изображение первым видимым изобра-
           жением
 FOR       выполняет последовательность команд заданное число
           раз
 FORMKEY   [F7] переключает изображение табличного вида и фор-
           мы
 HELP      [F1] выводит подсказку на экран
 HOME      [Home]
 IF        проверка условия
 IMAGERIGHTS устанавливает или удаляет право доступа
 INDEX     создание вторичной индексации таблицы
 INFOLIB   вывод на экран имен процедур в библиотеке
 INS       [Ins]
 INSTSNTPLAY [Alt] [F4] служит для запуска instant скрипта
 INSTANTREPORT [Alt] [F7] печатает отчет для текущей таблицы
 KEYLUCUP  ищет запись с заданным ключом
 KEYPRESS  пропуск любого символа в PARADOXe
 LEFT      [стрелка влево]
 LOCATE    расположение записи в таблице
 LOCK      блокирует одну или несколько таблиц
 LOCKKEY   [Alt] [L] переключение блокировки
 LOCKRECORD блокирует текущую запись
 LOOP      передача контроля в вершину цикла
 MENU      [F10] высвечивает текущее меню
 MESSAGE   высветить сообщение
 MOVETO    делает поле или запись текущими
 OPEN PRINTER открывает канал текущего устройства печати
 PASSWORD  позволяет получить доступ к защищенной таблице
 PICKFORM  выбор формы
 PGDN      [PgDn]
 PGUP      [PgUP]
 PLAY      проигрывание скрипта
 PRINT     посылает значения на печать или в файл
 PRINTER   разрешение вывода на печать
 PRIVTABLES запоминает таблицы в личном директории пользова-


                             - 125 -
           теля
 PROC      создание процедуры
 PROMPT    помещает собщение ПАРАДОКСА в две верхние строки
           экрана
 PROTECT   защита таблиц
 QUERY     помещает запрос в рабочую область
 QUIT      конец скрипта
 QUIT LOOP выход из цикла
 READLIB   делает записанные процедуры доступными для скрипта
 REFRESH [Alt] [R] модифицирует изображение в рабочем прост-
           ранстве
 RELEASE   освободить память от используемых переменных
 RENAME    изменение имени таблицы
 REPORT    печать отчета
 REQUIREDCHECK включает и выключает режим ограничения целос-
           тности
 RESET     возвращает PARADOX в состояние MAIN
 RETURN    возврат из скрипта или процедуры
 REVERSETAB  [Shift]  [Tab]  перемещает курсор к предыдущему
           полю изображения
 RIGHT     [стрелка вправо]
 RUN       запуск программ DOS
 ROTATE    [Ctrl] [R] вращает вправо
 SAVEVARS  сохранение значений переменных, массивов в файл
 SCAN      шагать по таблице запись за записью
 SELECT    сделать выбор меню
 SETDIR    сменить текущий директорий
 SETKEY    определить макро клавиатуру
 SETMAXSIZE устанавливает максимальный размер таблицы
 SETPRINTER устанавливает порт для принтера
 SETPRIVDIR устанавливает частный  директорий  для  текущего
           сеанса
 SETRETRYPERIOD устанавливает период автоматического повтора
 SETSWAP   устанавливает минимальный объем памяти
 SETUSERNAME устанавливает текущее имя пользователя
 SHOWARRAY создает меню на основе двух массивов
 SHOWFILES показывает имена файлов в виде меню


                             - 126 -
 SHOWMENU  генерация меню тима PARADOXa
 SLEEP     сделать паузу
 SORT      сортировка таблиц
 STYLE     установка признаков для вывода в канву PALa
 SUBTRACT  удаление одинаковых записей из двух таблиц
 SWITCH    контроль структуры
 SYNCCURSOR  устанавливает курсор на канву PALa в то же мес-
           то, что и в рабочем поле
 TAB       [Tab] служит для перехода в следующее поле образа
 TEXT      вывод текста на PAL канву
 TYPEIN    печать строки символов в PARADOX
 UNLOCK    снимает блокировку с одной или нескольких таблиц
 UNLOCKRECORD снимает блокировку с текущей записи
 UNPASSWORD изменить возможность доступа к защищенной таблице
 UP        [Up]
 UPMAGE [F3] перемещает курсор вверх к предыдущему изобра-
            жению
 VERTRULER [Ctrl] [V] переключает счетчик строк
 VIEW      просмотр таблиц на экране
 WAIT      способствует вводу/выводу в форму или таблицу
 WHILE     контроль структуры
 WRITELIB  запись процедуры в библиотеку
 ZOOM [Ctrl] [Z] передвигает курсор к первой записи с ука-
            занными величинами в изображении
 ZOOMNEXT [Alt] [Z] переносится курсор к следующему  полю  с
           указанной величиной
.

                             - 127 -
                   
                   КОМАНДЫ PALa ПО КАТЕГОРИЯМ
 
  Команды сокращенного меню
  -------------------------
 
 ADD              Команды управления библиотекой  процедурой
 CANCELEDIT       ------------------------------------------
 COPY             CREATLIB
 CREATE           INFOLIB
 DELETE           READLIB
 DOS              WRITELIB
 EDIT             Команды для работы с переменными, массивами
 EMPTY            -------------------------------------------
 EXIT             =
 INDEX            ARRAY
 PASSWORD         COPYTOARRAY
 PICKFORM         COPYFROMARRAY
 PLAY             RELEASE
 PROTECT          SAVEVARS
 QUERY            Команды для работы с областью
 RENAME           -----------------------------
 REPORT           KEYPRESS
 SETDIR           LOCATE
 SORT             MOVETO
 SUBTRACT         SELECT
 UNPASSWORD       TYPEIN
 VIEW             Команды PAL или PARADOX системного контроля
                  -------------------------------------------
                  DEBUG, EXECUTE, RESET, RUN, SETKEY,SLEEP
 Команды ввода вывода
 --------------------
 ?                 MESSAGE
 ??                PRINT
 @                 PRINTER
 ACCEPT            SHOWMENU
 BEEP              STYLE


                             - 128 -
 CLEAR             TEXT
 ECHO              WAIT
     
 Программный контроль структуры
 ------------------------------
 IF                RETURN
 LOOP              SCAN
 PROC              SWITCH
 QUIT              WHILE
 QUITLOOP
.

                             - 129 -
  
                       ОПИСАНИЕ КОМАНД
         
   =     присваивает значения переменным, элементам массива  или
         полям в изображении на рабочей области.
     
         синтаксис:
                <переменная>=<выражение> или
                <элемент массива>=<выражение> или
                <спецификатор поля>=<выражение>
         Все  формы хранят значения выражения располагаясь с
         левой стороны от знака = . Предыдущее значение, ес-
         ли  оно имелось, теряется. Первая форма присваивает
         значение   переменной,   вторая-элементу   массива,
         третья-спецификатору поля. Значение <выражениe> мо-
         жет  быть любого типа. Необходимо принять во внима-
         ние, что в случае присваивания значения  полю,  тип
         значения должен быть типом поля. Вы не можете прис-
         воить  число  буквенному  полю,  (однако  вы можете
         превратить число в строку, используя  STRVAL  функ-
         цию). Пример: у=01.05.60 - переменная
                 x[20] = 27 * y  - элемент массива
                 [NAME]= x+3     - поле
   ?     Высвечивает значение непосредственно ниже   курсора
         на строке.
         Синтаксис: ? <выражение 1>  <выражение 2>...
         <выражение n>
         Эта команда выводит значение выражения  на  экран с
         начала  строки, которая располагается ниже курсора.
         Значения  выводятся  последовательно  без  пробелов
         между ними. Курсор перемещается к последнему высве-
         ченному  значению  и устанавливается за ним. Если ?
         занимает всю строку, то курсор просто  перемещается
         к следующей строке.
         Режимы  и  атрибуты  экрана (яркость, цвет, и т.п.)
         выбираются с помощью команды STYLE.


                             - 130 -
         Пример: предположим, что текущее значение х=1.5.60
                 команда  ? "The value of x is: ", x
                 перемещает курсор к следующей строке и выс-
                 вечивает The value of x is: 1.5.60
         Необходимо отметить, что часто предпочтительнее ис-
         пользовать команду TEXT для вывода текста на экран.
         
   ??    Высвечивает  значения выражений на канве PALа начи-
         ная с текущей позиции курсора.
         Синтаксис: ?? <выражение 1>  <выражение 2>...
         <выражение n>
         Эта  команда работает в в точности, как и ?, но на-
         чинает вывод на экран с  текущей  позиции  курсора,
         перемещаясь затем на следующую строку.
         Пример:  @10,10 - располагая курсор на 10 строке 10
                           столбца.
                  ?? "Enter you name"- приглашает пользова -
                           теля ввести имя.
                  ACCEPT " NAME " ввод переменной имя.
         
   @     Дает установку курсора в заданную позицию координат
         экрана.
         Синтаксис: @ <номер строки>, <номер столбца>
         Экран имеет 24 строки и 80 столбцов. Строки нумеру-
         ются сверху вниз, начиная с 0 и заканчивая 79.  На-
         чало  экрана  имеет координаты 0,0 и, следовательно
         находится в  левом  верхнем  углу.  Любое  значение
         строки вне интервала 0...24 и столбца вне интервала
         0...79 будут давать ощибку.
         Эта  команда  относится только к режиму PAla, но не
         PARADOXa.
         Пример: @0,0 - устанавливает курсор в начало (0,0).
                 @ROW(),COL()+1 -перемещает курсор в следую-
                 щий столбец.


                             - 131 -
  ACCEPT Принимает значения, вводимые с клавиатуры, обеспечи-
         вая поддержку ввода данных и контроль.
         Синтаксис: ACCEPT 
                           < >>
                           < >>
                           < >>
                           < >>
                           < >>
                           <>
                    TO 
         где  и  строковые выражения;
         ,, - выражения
         со  значением такого же типа имени, как 
         и .
         Эта команда позволяет пользователю вводить значения
         определенных типов данных. Когда ACCEPT выполняется
         управление  переходит к пользователю который должен
         ввести данные. Когда пользователь нажимает [ENTER],
         введенные   значения    присваиваются    переменной
         , и управление возвращается к программе.
         В  процессе  ввода  пользователь может использовать
         [BackSpace] для уничтожения  последнего  набранного
         символа,  и  [Ctrl][BackSpase] для уничтожения всех
         набранных символов.  Добавим,  что  при  завершении
         ввода, если вводится ошибочное значение, то PARADOX
         дает сигнал.
         Услуга выбора PICTURE может быть использоваться для
         ввода  новых типов данных (например, телефонных но-
                                                                                                меров), для  обеспечения  автоматической  конверсии
         набранных символов в верхний регистр, для автомати-
         чесгого заполнения обязательных символов. Выбор МIN
         и MAX задает интервал данных, а LOOKUP используется
         для того, чтобы проверить, есть ли  значения,  наб-
         ранные  пользователем,  в  таблице, заданной опцией
         LOOKUP.
         Выбор  использования DEFAULT может быть использован
         для установки значения  "  по  умолчанию  ".  Выбор
         REQUIRED  используется для того, чтобы пользователю


                             - 132 -
         необходимо перед  игрой  скрипта  ввести  значение,
         чтобы  он мог продолжаться. Если пользователь в от-
         вет на ACCEPT введет значение, то специальной пере-
         менной retval присвоится значение  "истинно".  Если
         пользователь нажмет [Esc] в ответ на ACCEPT, retval
         будет "ложно". Если используется PICTURE, выражение
            должно  содержать  строковое  значение,
         представленное  правильной  спецификацией   picture
         (см.  6  Главу).  Пример: предлагается пользователю
         ввести дату между  сегодняшним  днем  и  1  январем
         1999г.  Сегодняшняя  дата принимается как начальное
         значение.
         @10,10  ;позиция курсора
         ?? "Введите дату: "
         ACCEPT "D"
            MIN today()
            MAX 1/1/99
            DEFAULT today()
         TO X
         Пример: ACCEPT "A13"
                  PICTURE "[(###) ]###-###"
                 TO telnum
         
   ADD   Команда добавляет записи из одной таблицы в другую.
         Синтаксис: ADD <исходная табл.> <добавляемая табл.>
         Для того, чтобы исполнить ADD, PARADOX должен нахо-
         диться  в  состоянии  MAIN.  Результирующая таблица
         должна быть назначена с левой стороны  рабочей  об-
         ласти. Если не определена какая либо из таблиц, вы-
         дается  сообщение  об  ошибке.  Пример:  ADD  "TAN"
         "TAN1" Эта команда эквивалентна  следующему  выбору
         из меню: MENU {TOOLS}{MORE}{ADD}{TAN}{TAN1}
         
   ARRAY Cоздает массив с данным именем и размерностью.
         Синтаксис: ARRAY <имя массива> [размерность]
         Размерность  может быть от 1 до 15000, а любые дру-
         гие значения не из этого интервала дадут ошибку.
         В скрипте PALa  элементу  массива  можно  присвоить
         значения  любого типа. Вы можете присвоить значение


                             - 133 -
         различных типов разным элементам в одном и  том  же
         массиве.
         Пример: x=25
                 ARRAY  A[x+3] ; обьявляет массив из 28 эле-
                                 ментов
                 MESSAGE "Array a  has:",ARRAYSIZE(A),"elem"
         
   BACKSPACE  аналогична   использованию клавиши [BackSpase].
         Уничтожает символы слева от курсора.
         
   BEEP  выдача сигнала
         Пример:CLEAR
                BEEP BEEP BEEP
                 TEXT
                  " Внимание!!! "
                 ENDTEXT
   CANCELEDIT команда сокращенного меню, которая заканчивает
         сеанс редактирования без сохранения изменений.  Эта
         команда  эквивалентна последовательности, выбранной
         из меню:
         MENU{CANCEL}{YES}
         Если PARADOX во время выполнения этой команды нахо-
         дится в состоянии MAIN, то все изменения, сделанные
         в таблицах, находящихся в рабочей области, анулиру-
         ются. Если система находится не в состоянии  редак-
         тирования,  то  регистрируется  ошибка.  Пример: IF
         STATUS ="emegency" THEN CANCELEDIT
                 END IF
     
   CLEAR или CLEAR EOL или CLEAR EOS. Очищает полностью канву
         PALa, или от курсора до конца строки или прямоуголь-
         ный блок от курсора до нижнего правого угла экрана.
         Ни одна из этих трех форм команды CLEAR не  изменяет
         положение  курсора на канве. Отметим, что с запуском
         скрипта экран не очищается  автоматически.  Скрипты,
         которые  производят  экранный  ввод/вывод обычно ис-
         пользуют команду CLEAR для инициализации экрана.
         CLEAR  не  перемещает  образ  из   рабочей   области


                             - 134 -
         PARADOXa.  Специальные команды CLEAR IMAGE [Alt][F8]
         и CLEAR ALL [F8] производят эти действия.
         Пример ниже стирает канву, устанавливает курсор в  7
         ряд 19 колонку и высвечивает сообщение.
         CLEAR @7,19 ?? "Нажмите любую клавишу для"
                        "продолжения"
     
   CLEARALL команда моделирует нажатие клавиш [ALT][F8] (об-
         щая  очистка), для того, чтобы очистить все изобра-
         жения в рабочем пространстве ПАРАДОКСА.
         Синтаксис: CLEARALL
         В Главном режиме команда CLEARALL очищает все изоб-
         ражения, включая формы запросов, из рабочего прост-
         ранства ПАРАДОКСА. Во всех других  режимах  команда
         не работает.
         Использование: Если ВЫ не хотите работать с изобра-
         жениями, которые уже существуют в рабочем простран-
         стве ПАРАДОКСА, то эта команда обычно помещается  в
         начало  скрипта, использующего рабочее пространство
         ПАРАДОКСА.
         Примеры: Этот пример  представляет  собой  короткий
         фрагмент  начала  большого приложения, где произво-
         дится инициализация рабочего пространства.
         
         
          CLEARALL ;очистить рабочее пространство ПАРАДОКСА
          CLEAR    ;очистить канву ПАЛА
          @ 4,1    ;установить позицию курсора
          title=format("w80,ac","The XYZ Company  Accounting
          System")
          STYLE REVERSE
          ? title  ;высветить заголовок
          VIEW "orders" ;высветить таблицу "orders"
         Смотрите  также команды: CLEAR, CLEARIMAGE и Раздел
         "Взаимодействие с пользователем"  для  того,  чтобы
         понять  разницу  между канвой ПАЛА и рабочим прост-
         ранством ПАРАДОКСА.


                             - 135 -
         
   CLEARIMAGE моделирует нажатие клавши [F8] (очистить изоб-
         ражение)  для того, чтобы удалить текущее изображе-
         ние из рабочего пространства ПАРАДОКСА.
         Синтаксис: CLEARIMAGE
         В Главном режиме команда CLEARIMAGE удаляет текущее
         изображение oбъекта (в котором находится курсор)  из
         рабочего пространства ПАРАДОКСА. Во всех других ре-
         жимах  команда CLEARIMAGE не работает. При исполне-
         нии команды, все объекты, расположенные ниже удаля-
         емого, перемещаются вверх, заполняя  собой  освобо-
         дившиеся  пространство, и верхний из них становится
         текущим.
         Примеры: Данный пример помещает три объекта в рабо-
         чее пространство ПАРАДОКСА и затем удаляет второй.
                VIEW "orders"   ;первый объект
                VIEW "parts"    ;второй объект
                VIEW "custs" ;третий объект(он  же  является
                             ;текущим)
                UPIMAGE      ;перевод курсора ко второму объ-
                             ;екту
                CLEARIMAGE   ;удаляет таблицу с именем "parts"
                             ;таблица "custs" стала текущей
         Смотрите  также  команды  CLEAR,  CLEARALL и раздел
         Взаимодействие с прользователем.
         
   CLOSE PRINTER закрывает ранее открытый канал текущего ус-
         тройства печати.
         Синтаксис: CLOSE PRINTER
         Эта  команда  используется  для того, чтобы закрыть
         канал устройства печати,  ранее  открытый  командой
         OPEN PRINTER.
         Использование: Всякий раз когда Вы завершаете вывод
         информации на устройство печати (ранее  открытое  с
         помощью  команды OPEN PRINTER), Вы должны быть уве-
         рены в том, что закрыли его командой CLOSE PRINTER.
         Эти две команды обычно используются  при  работе  в


                             - 136 -
         сети. Смотрите описание команды  OPEN  PRINTER  для
         того,  чтобы получить полную информацию об этих ко-
         мандах.
         Версия: Команда CLOSE PRINTER была введена в  ПАРА-
         ДОКС  версии 2.0. Использование этой команды в пре-
         дыдущих версиях будет  приводить  к  синтаксической
         ошибке.
         Пример:
              SETPRINTER LPT2
              VIEW "orders"
              OPEN PRINTER
              PRINT "Large Orders Through "+ STRVAL(TODAY())
              SCAN FOR [Quan]>1000
                 printline="Customer:"+ STRVAL([Cust ID]
                 PRINT printline + "\n"
              ENDSCAN
              CLOSE PRINTER
              CLEARALL
         Смотрите также команды OPEN PRINTER, PRINT, PRINTER
         и SETPRINTER.
         
   COEDIT позволяет двум или нескольким пользователям однов-
         ременно производить изменения в таблице.
         Синтаксис: COEDIT 
         Команда   COEDIT   является   эквивалентом   услуги
         Modify/CoEdit основного меню ПАРАДОКСА и  позволяет
         многим пользователям производить изменения в табли-
         це ПАРАДОКСА одновременно.
         Для  того, чтобы испльзовать команду, ПАРАДОКС дол-
         жен находиться в Главном режиме; в противном случае
         результатом будет ошибка  скрипта.  При  выполнении
         команды,  система  переходит  в  режим COEDIT и все
         таблицы, находящиеся в рабочем  пространстве  можно
         редактировать. Благодаря своей способности работать
         со многими пользователями (автоматически захватыва-
         ет  записи, пока пользователь изменяет данные), ре-
         жим COEDIT дополняет режим EDIT сетевыми возможнос-


                             - 137 -
         тями. Однако, что не так очевидно, он по своим воз-
         можностям превосходит режим EDIT, также в однополь-
         зовательских приложениях.
         Например,  в  режиме COEDIT изменения каждой записи
         посылаются непосредственно (не пакетом, как в режи-
         ме  EDIT)  и  все необходимые индексы при изменении
         настраиваются  автоматически.  Кроме  того,   режим
         COEDIT предоставляет возможность поддержки ситуаций
         нарушений управления клавишами, чего в режиме  EDIT
         сделать  невозможно. Только в одном проигрывает ре-
         жим COEDIT: он не поддерживает услугу  Undo  (отказ
         от  последних изменений), однако ее можно легко ор-
         ганизовать в приложении.
         Использование: Для того, чтобы редактировать в при-
         ложении  более двух таблиц одновременно, существует
         общая практика использовать команду VIEW для  раз-
         мещения  всех  таблиц,  за исключением последней, в
         рабочем пространстве, а затем использовать  команду
         COEDIT  для  последней  таблицы, как это показано в
         примере,  приведенном ниже. (Вы также можете высве-
         тить все таблицы командой VIEW, а  затем  использо-
         вать  команду COEDITKEY для того, чтобы войти в ре-
         жим COEDIT.)
         Совместное  редактирование  таблицы   автоматически
         предотвращает полую блокировку. Если таблица, кото-
         рую  Вы  хотите  совместно  редактировать полностью
         заблокирована из приложения  другого  пользователя,
         команда  будет автоматически приостановлена до пов-
         торного сеанса связи. для того,  чтоббы  предотвра-
         тить прерывание скрипта, Вы можете использовать ко-
         манду LOCK для ручного предотвращения полной блоки-
         ровки перед использованием команды COEDIT.
         Для полного понимания особенностей режима COEDIT  и
         блокировки   записей,   смотрите   описание  услуги
         Modify/Coedit в книге "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ  ПО
         СИСТЕМЕ   ПАРАДОКС".  Глава  "МНОГОПОЛЬЗОВАТЕЛЬСКИЕ
         ПРИЛОЖЕНИЯ" этой книги  также  содержит  обсуждение


                             - 138 -
         возможности управления блокировками записей и сбоя-
         ми клавиатуры.
         Версия: Команда COEDIT была введена в ПАРАДОКС вер-
         сии 2.0. Использовании этой команды в более  ранних
         версиях  ПАРАДОКСА будет приводить к синтаксической
         ошибке.
         Примеры:
     
              VIEW "orders" ;первая таблица в рабочем прост-
                            ;ранстве
              VIEW "stock"  ;вторая таблица
              COEDIT  "customer";все три таблицы находятся в
                         ;режиме совместного редактирования.
         Смотрите также команды: COEDITKEY, EDIT, EDITKEY  и
         KEYLOOKUP.
         
   COEDITKEY  моделирует  нажатие клавиш [Alt][F9] включения
         режима COEDIT (совместного редактирования).
         Синтаксис: COEDITKEY
         Действие  команды COEDITKEY в Главном режиме анало-
         гично одновременному нажатию клавиш  [Alt][F9](сов-
         местное  редактирование)  и  заключается в переводе
         всех таблиц, находящихся в рабочем пространстве ПА-
         РАДОКСА в режим COEDIT. Во всех других режимах  ко-
         манда не работает.
         
         Использование: Команда COEDITKEY используется в тех
         случаях, когда Вам необходимо включить режим COEDIT
         для  того, чтобы сделать изменения в таблицах, выс-
         веченных в рабочем пространстве ПАРАДОКСА. Для  ил-
         люстрации  работы  команды приведен блок примеров с
         командой COEDIT расположенный ниже.
         Смотрите также описание команды COEDIT,  где  расс-
         мотрены  блокировки в процессе совместного редакти-
         рования. Для лучшего понимания особенностей  режима
         COEDIT  и блокировки записей, смотрите описание ус-
         луги Modify/Coedit в книге "РУКОВОДСТВО ПОЛЬЗОВАТЕ-


                             - 139 -
         ЛЯ ПО СИСТЕМЕ ПАРАДОКС". Глава  "МНОГОПОЛЬЗОВАТЕЛЬ-
         СКИЕ ПРИЛОЖЕНИЯ" этой книги также содержит обсужде-
         ние  возможности  управления блокировками записей и
         сбоями клавиатуры.
         
         Версия: Команда COEDITKEY была введена  в  ПАРАДОКС
         версии 2.0. Использование этой команды в более ран-
         них  версиях  ПАРАДОКСА будет приводить к синтакси-
         ческой ошибке.
         
         Примеры:  В  этом  примере три таблицы помещаются в
         рабочее пространство и затем включается режим  сов-
         местного  редактирования. Функционально это эквива-
         лентно примеру, приведенному для команды COEDIT.
         
              VIEW "orders" ;первая таблица в рабочем прост-
                            ;ранстве
              VIEW "stock"  ;вторая таблица
              VIEW "customer"
              COEDITKEY     ;все три таблицы находятся в
                         ;режиме совместного редактирования.
         
         Смотрите также команды:- COEDIT,  EDIT,  EDITKEY  и
         KEYLOOKUP.
         - описание услуги Modify/Coedit в книге "РУКОВОДСТ-
         ВО ПОЛЬЗОВАТЕЛЯ ПО СИСТЕМЕ ПАРАДОКС" и Главу  "МНО-
         ГОПОЛЬЗОВАТЕЛЬСКИЕ ПРИЛОЖЕНИЯ".
         
    COPY копирование из существующей таблицы в новую.
         Синтаксис COPY <существующая таблица><новая таблица>
         Для использования этой команды PARADOX должен быть в
         состоянии MAIN.
         Как  и выбор PARADOX TOOLS/COPY команда СOPY воспро-
         изводит полное имя обьекта (формы, таблицы, индексов
         и т.д.) связанного с копируемой таблицей.
         Пример: COPY "Tan" "Tan1"
         Этот  пример эквивалентен последовательности выбора


                             - 140 -
         из меню:
         MENU {TOOLS} {COPY} {Tan} {Tan1}
         Если Таn1 уже  существует,  то:
         MENU  {TOOLS}  {COPY}  {Tan} {Tan1} {REPLACE}
         
   COPYFROMARRAY   команда копирует элемент массива  в  поля
         текущей записи текущего образа.
         
         Синтаксис:  COPYFROMARRAY <имя массива>
         Текущий образ предполагается тот, который изображен
         на дисплее, как в режиме просмотра таблиц, так и  в
         режиме просмотра форм. PARADOX должен быть в состо-
         янии редактирования во время исполнения этой коман-
         ды.  Предполагается, что массив был создан командой
         COPYТОARRAY или имеет  форму  такого  массива  (см.
         COPYTOARRAY).  Действие  начинается со второго эле-
         мента массива, который копируется в первое поле те-
         кущей записи, третий элемент массива копируется  во
         второе поле и т.д. до тех пор, пока или массив, или
         запись не  исчерпаются.  Заметим,  что  чередование
         столбцов не оказывает никакого действия на порядок,
         в  котором  полям  присваивается  значение командой
         COPYFROMARRAY. Присваивание всегда  производится  в
         поле по номерам. Ошибка появляется, если мы пытаем-
         ся копировать неопределенный элемент массива.  При-
         мер: последовательность присоединяет десятую запись
         таблицы "Tan" в конец таблицы "Tan1"
             VIEW "Tan1"         ; вызов в раб. обл."Tan1"
             VIEW "Tan"          ; вызов в раб. обл."Tan"
             MOVETO RECORD 10    ; перемещение к 10 записи
             COPYTOARRAY rec     ; выбрать и хранить в rec
             UPIMAGE             ; перемещение к "Tan1"
             END                 ; к последней записи
             EDITKEY             ; режим редактирования
             DOWN                ; открыть пустую запись
             COPYFROMARRAY rec   ; копировать значения из rec
             DO_IT!              ; конец редактирования


                             - 141 -
         
   COPYTOARRAY  копирует  поля  текущей  записи  в  массив.
         Синтаксис: COPYTOARRAY <имя массива>
         Эта команда создает новый массив с именем, заданным
         в поле <имя массива> и копирует поля текущей записи
         или текущего образа.
         Текущий образ должен быть высвечен на дисплее.  Но-
         вый массив создается с размерностью на один больше,
         чем число полей в текущей записи. Заметим, что поле
         номера  записи и любые display-only или вычисляемые
         поля которые могут появляться  во  время  просмотра
         форм таблиц не копируются в массив. Первому элемен-
         ту  массива  присваивается значение строки, которой
         дается имя текущей  таблицы.  Оставшимся  элементам
         присваиваются  значения полей текущей таблицы; вто-
         рому элементу массива присваивается значение перво-
         го поля, третьему - значение второго  поля  и  т.д.
         Порядок  полей определяется текущей структурой таб-
         лицы, записи которой копируются. Имя таблицы  прис-
         ваивается  первому  элементу массива для облегчения
         доступа. Например, используя COPYTOARRAY для  запо-
         минания записей таблицы "ORDER" в массиве A, Вы мо-
         жете снова найти поле PART NO, заполненное в масси-
         ве использованием следующего обращения к массиву:
                        A["PART NO"]
         Нижний  индекс интерпретируется как имя поля табли-
         цы, имя которой является первым элементом массива.
         Пример: Следующие команды  копируют  первую  запись
         таблицы "order" вниз на вторую запись, меняя orders
         date на today`s date.
         EDIT "orders"         ;режим редактир.табл."orders"
         COPYTOARRAY A         ;считывание первой записи
         DOWN                  ;перемещение ко второй записи
         A["order date"] = today();изменение
         COPYFROMARRAY A       ;копирование во вторую запись
         DO_IT!                ;завершение редактирования
         


                             - 142 -
   CREATE команда создает новую таблицу. Если таблица с та-
         ким именем уже существует, то существующая таблица
         и  ее  имя  уничтожается.  Подтверждения для этого
         удаления не требуется.
         
         Синтаксис: CREATE <имя таблицы> LIKE <имя таблицы>
           или
           CREATE <имя  табл.><имя  поля 1>:<тип поля 1>...
                              <имя поля N>:<тип поля N>
         Если вы используете LIKE, тогда команда заимствует
         структуру  для  новой  таблицы из уже существующей
         таблицы, которую вы назвали. Если названная табли-
         ца не существует, появляется сообщение об ошибке.
         Если вы не используете LIKE, за именем новой  таб-
         лицы должны следовать одна или несколько строковых
         констант,  представляющих  собой  имя  и тип поля,
         разделенных двоеточием. Имена полей и  типы  полей
         должны соответствовать условиям PARADOXa. Заметим,
         что ключевые поля помечаются добавлением звездочки
         к указателю типа поля.
         Пример:  команда  создает новую таблицу с такой же
         структурой как существующая.
         CREATE "Newtan" LIKE "oldtan"
         
         CREATE "checks" "check No.":"S*","date":"D*"
         Если Вы записывали скрипт в PARADOXe с целью полу-
         чения того же самого эффекта, то это выглядело  бы
         следующим  образом:
         MENU  {CREATE}  {CHECKS}  "Check  No."  ENTER "S*"
         ENTER "date" ENTER "D"
         
   CREATELIB эта команда создает новую библиотеку, в которой
         вы можете хранить описанные  процедуры.  Синтаксис:
         CREATELIB  <имя  библиотеки>  Имя библиотеки должно
         начинаться с буквы и быть длинной от 1 до 8  симво-
         лов.  Библиотеки  хранятся  на  диске с расширением
         "LIB". Все библиотеки процедур должны быть  созданы


                             - 143 -
         только  с  использованием CREATLIB, затем вы можете
         использовать команду WRITELIB для записи в них  лю-
         бых процедур. Если имя библиотеки, которую вы опре-
         деляете,  уже  существует, то PAL поместит новую на
         место существующей, и все описанные процедуры в ней
         будут уничтожены без просьбы о  подтверждении.  Ко-
         манда INFOLIB может быть использована для просмотра
         названий хранимых процедур в данной библиотеке.
   
         
   CTRLBACKSPACE  команда  моделирует  одновременное нажатие
         клавиш [Ctrl][Backspace] для  того,  чтобы  стереть
         содержимое текущего поля.
         
         Синтаксис: CTRLBACKSPACE
         В  режиме EDIT и COEDIT стирает содержимое текущего
         поля. В Главном режиме команда производит тоже дей-
         ствия в изображении запроса. Во время  редактирова-
         ния высвеченного поля, команда CTRLBACKSPACE стира-
         ет величину в текущем поле и завершает просмотр по-
         ля.  Она  также уничтожает текущую величину во вве-
         денной вершине меню.
         Если Парадокс находится в контекстах,  отличных  от
         упомянутых выше, то команда игнорируется.
         
         Смотрите также команду BACKSPACE.
         
         
   CTRLBREAK команда моделирует нажатие клавиш [Ctrl][Break]
         для прерывания текущей задачи.
         
         Синтаксис: CTRLBREAK
         Команда    CTRLBREAK,    как   и   нажатие   клавиш
         [Ctrl][Break] останавливает текущую задачу и  возв-
         ращает  к предыдущей команде. Если нет других прер-
         ванных задач, то эта команда будет прерывать работу
         скрипта.


                             - 144 -
         Заметим,   что   до   сих   пор   нажатие    клавиш
         [Ctrl][Break]  использовалось интерактивно, для то-
         го, чтобы прервать работу запросов, сортировки  или
         отчетов, однако эта команда не может быть использо-
         вана  аналогичным  образом во время работы скрипта.
         Поэтому,  при начавшейся работе запроса, сортировки
         или отчета, управление не может  быть  передано  до
         окончания процесса скрипту.
         Команда   CTRLBREAK  может  быть  использована  для
         прерывния работы скрипта и  перевода  Вас  в  режим
         редактирования.   Действие  команды  по  выходу  из
         подсистем  ПАРАДОКСА  может  быть  запрещено  через
         услугу    More/BreakDisable    из    меню    Custom
         Configuration Program.
         
   CTRLEND моделирует нажатие клавиш [Ctrl][End].
         Синтаксис: CTRLEND
         Действие  команды  CTRLEND  аналогично действию при
         одновременном нажатии клавиш [Ctrl][End] и  зависит
         от  текущего контекста. Если ПАРАДОКС находитися не
         в подходящем режиме, команда игнорируется.  Следую-
         щая  таблица  показывает действие команды CTRLEND в
         различных режимах ПАРАДОКСА:
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Делает текущей запись
       Совместное редактирование    в последнем поле
       
       Любой режим/Просмотр поля    Переводит курсор к пос-
                                    леднему символу в поле
         
       Формы                        Переводит курсор в конец
                                    строки
       Отчет                        Переводит курсор к после-
                                    днему символу строки
       Скриптовый редактор          Переводит курсор к после-
                                    днему символу строки


                             - 145 -
         
         
   CTRLHOME   моделирует нажатие клавиш  [Ctrl][Home].
         Синтаксис: CTRLHOME
         Действие  команды  CTRLHOME  аналогично действию при
         одновременном нажатии клавиш [Ctrl][Home] и  зависит
         от  текущего контекста. Если ПАРАДОКС находитися не
         в подходящем режиме, команда игнорируется.  Следую-
         щая  таблица  показывает действие команды CTRLHOME в
         различных режимах ПАРАДОКСА:
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Делает текущей запись
       Совместное редактирование    в первом поле
       
       Любой режим/Просмотр поля    Переводит курсор к пер-
                                    вому символу в поле
         
       Формы                        Переводит курсор в начало
                                    строки
       Отчет                        Переводит курсор к перво-
                                    му символу строки
         
       Скриптовый редактор          Переводит курсор к перво-
                                    му символу строки
         
             
                  
   CTRLLEFT   моделирует нажатие клавиш  [Ctrl][<-].
         Синтаксис: CTRLLEFT
         Действие  команды  CTRLLEFT аналогично действию при
         одновременном нажатии клавиш [Ctrl][<-]  и  зависит
         от  текущего контекста. Если ПАРАДОКС находитися не
         в подходящем режиме, команда игнорируется.  Следую-
         щая  таблица показывает действие команды CTRLLEFT в
         различных режимах ПАРАДОКСА:


                             - 146 -
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Cдвигает курсор на один
       Совместное редактирова-      экран вправо
       ние/ПросмотрТаблиц
         
       Главный, Редактирование,     Нет действия
       Совместное редактирова-
       ние/Просмотр Формы
         
       Любой режим/Просмотр поля    Переводит курсор на одно
                                    слово вправо
         
       Формы                        Нет действия
       
       Отчет                        Сдвигает курсор на один
                                    экран вправо
         
       Скриптовый редактор          Сдвигает курсор на полэк-
                                    рана вправо
                                               
         Заметим, что нажатие клавиш  [Ctrl][Left]  сдвигает
         на один полный экран влево услуги меню ПАРАДОКСА,но
         такое  действие  невозможно   с   помощью   команды
         CTRLLEFT из скрипта.
         
   CTRLPGDN  моделирует нажатие клавиш  [Ctrl][PgDn].
         Синтаксис: CTRLPGDN
         Действие команды CTRLPGDN аналогично  действию  при
         одновременном  нажатии клавиш [Ctrl][PgDn]. Команда
         переводит курсор к следующей записи в томже поле  в
         режиме просмотра формы. В других контекстах команда
         игнорируется.
         


                             - 147 -
   CTRLPGUP  моделирует нажатие клавиш  [Ctrl][PgUp].
         Синтаксис: CTRLPGUP
         Действие  команды  CTRLPGUP аналогично действию при
         одновременном нажатии клавиш [Ctrl][PgUp].  Команда
         переводит курсор к предыдущей записи в томже поле в
         режиме просмотра формы. В других контекстах команда
         игнорируется.
         
   CTRLRIGHT   моделирует нажатие клавиш  [Ctrl][->].
         Синтаксис: CTRLRIGHT
         Действие  команды  CTRLRIGHT аналогично действию при
         одновременном нажатии клавиш [Ctrl][->]  и  зависит
         от  текущего контекста. Если ПАРАДОКС находитися не
         в подходящем режиме, команда игнорируется.  Следую-
         щая таблица показывает действие команды CTRLRIGHT в
         различных режимах ПАРАДОКСА:
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Cдвигает курсор на один
       Совместное редактирова-      экран влево
       ние/ПросмотрТаблиц
       Главный, Редактирование,     Нет действия
       Совместное редактирова-
       ние/Просмотр Формы
       Любой режим/Просмотр поля    Переводит курсор на одно
                                    слово влево
       Формы                        Нет действия
       Отчет                        Сдвигает курсор на один
                                    экран влево
       Скриптовый редактор          Сдвигает курсор на полэк-
                                    рана влево
                                               
         Заметим,  что нажатие клавиш [Ctrl][Right] сдвигает
         на  один  полный экран влево услуги меню ПАРАДОКСА,
         но такое  действие  невозможно  с  помощью  команды
         CTRLRIGHT из скрипта.


                             - 148 -
         
   CURSOR команда выключает или включает изображение  курсо-
         ра, а также выбирает его вид, на экране в конве ПА-
         ЛА.
         Синтаксис: CURSOR < BAR или BOX или NORMAL или OFF>
         Команда CURSOR используется для изменения изображе-
         ния  курсора  в канве ПАЛА. Заметим, что команда не
         оказывает никакого действия на вид курсора в  рабо-
         чем  пространстве  ПАРАДОКСА.  Самая  простая форма
         курсора- NORMAL  воспроизводиться пока не  появится
         команда  CURSOR  OFF.  Команда  CURSOR  BAR создает
         "толстый" курсор, а команда CURSOR BOX приводит к
         появлению реверсивного изображения курсора.
         
         Версия: Команда CURSOR была введена в ПАРАДОКС вер-
         сии  2.0. Использование этой команды в более ранних
         версиях ПАРАДОКСА будет приводить к  синтаксической
         ошибке.
         
         Смотрите также команду SYNCCURSOR и главу  "Взаимо-
         действие с пользователем".
         
   DEBUG команда   прекращает  выполнение скрипта и передает
         управление отладчику (D).
         Синтаксис: DEBUG
         DEBUG  временно  приостанавливает  работу скрипта и
         передает управление отладчику  с  первого  элемента
         следующего за DEBUG. Вы можете продолжить автомати-
         ческую  работу  скрипта путем выбора GO из меню или
         нажатием [Ctrl][G]. DEBUG не работает, если он  яв-
         ляется последней командой в скрипте.
         
   DEL команда моделирует работу клавиши [Del].
         Синтаксис:  DEL
         Действие  команды DEL, как и нажатие клавиши [Del],
         зависит от текущего контекста. Если ПАРАДОКС  нахо-
         дитися  не в подходящем режиме, команда игнорирует-
         ся. Следующая таблица показывает  действие  команды
         DEL в различных режимах ПАРАДОКСА:


                             - 149 -
         
             Режим ------------------  Действие
        
       Главный/форма запроса      Уничтожает текущую строку
         
       Совместное редактирова-    Уничтожает текущую запись
       ние, редактирование
         
       Редактирование,            Уничтожает символ над кур-
       Совместное редактирова-             сором
       ние/Просмотр Формы
                          
                                           
       Форма                      Уничтожает символ над кур-
                                           сором
         
       Отчет                      Уничтожает символ над кур-
                                           сором
         
       
       Редактор скриптов          Уничтожает символ над кур-
                                           сором
       
            
         Пример:  В  этом примере команда DEL уничтожает за-
         пись пользователя, причем пользователь сам выбирает
         запись и подтверждает ее уничтожение.
             
         EDIT "customer"
         WHILE True
             WAIT TABLE
              PROMPT "Переместите курсор к записи, которую",
                   "Вы хотите удалить, и затем нажмите DEL",
                   "Чтобы отменить, нажмите Esq"
              UNTIL "Del","Esc"


                             - 150 -
            IF retval="Del"
              THEN
                  MESSAGE "Вы действительно хотите?(Y/N)"
                  ACCEPT A1 TO response
                  IF ((responce=Y) or (responce=y))
                     THEN
                       DEL   ;запись уничтожена
                     ELSE
                       MESSAGE "Запись не уничтожена"
                  ENDIF
              ELSE
                  QUITLOOP
            ENDIF
         ENDWHILE
         DO_IT!              ;Конец редактирования
         
     
   DELETE команда сокращенного меню, которая удаляет таблицу
         и ее имя из PARADOXa.
         Синтаксис: DELETE <имя таблицы>
         При  удалении  таблицы  Вы также удаляете семейство
         обьектов, таких как индексы, формы, отчеты.
         Для использования этой команды необходимо находить-
         ся в состоянии MAIN. Когда Вы  используете  команду
         DELETE  в PALe, то сообщение об удалении не выдает-
         ся. Если таблицы с данным именем нет,  то  выдается
         сообщение об ошибке.
         Пример: DELETE "checks"
         Эта команда эквивалентна
         MENU {TOOLS} {DELETE} {TABLE} {Сhecks} {ok}
         
   DELETELINE  команда  моделирует действие клавиш [Ctrl][Y]
         (уничтожить строку отчета) и стирает информауию  от
         позиции курсора до конца текущей строки.
         Синтаксис:  DELETELINE
         Команда, как и нажатие клавиш  [Ctrl][Y](уничтожить
         строку  отчета), стирает информауию от позиции кур-


                             - 151 -
         сора до конца текущей строки в  Генераторе  отчетов
         или Редакторе скриптов.
         Если Парадокс находится в контекстах,  отличных  от
         упомянутых  выше,  то команда игнорируется. Команда
         не работает в конве ПАЛА.
         Смотрите также Описание генератора отчетов в  книге
         "Руководство  пользователя  по  системе ПАРАДОКС" и
         описание Редактора скриптов в настоящей книге.
         
   DITTO команда моделирует нажатие  клавиш  [Ctrl][D].  Она
         копирует поле из предыдущей записи.
         Синтаксис: DITTO
         Команда  DITO,  как и [Ctrl][D], копирует в текущее
         поле предыдущую запись тогоже поля.  Команда  может
         использоватся  только в режиме РЕДАКТИРОВАНИЯ и СО-
         ВМЕСТНОГО РЕДАКТИРОВАНИЯ. В других режимах  команда
         игнорируется.
         
         Примеры:  EDIT "orders"
                   MOVETO [DATE]
                   [DATE]=today()  ; заполняет поле даты те-
                                   ; кущей датой
                   SCAN
                       DITTO ; делает тоже самое с каждой
                             ; записью
                   ENDSCAN
         
         
   DO_IT! команда моделирует клавишу DO_IT! [F2].
         Синтаксис:   DO_IT!
         Команда DO_IT! заканчивает текущую операцию или вы-
         полнение действия. Если ПАРАДОКС  находитися  не  в
         подходящем  режиме, команда игнорируется. Следующая
         таблица показывает действие команды DO_IT!  в  раз-
         личных режимах ПАРАДОКСА:
         


                             - 152 -
        
             Режим ------------------  Действие
       Главный/запрос в рабочем   Выполняет запрос
            пространстве
         
       
       Редактирование             Заканчивает редактирова-
                                  ние, записывает все из-
                                  менения на диск, возвра-
                                  щает в Главный режим.
       
       
       Совместное редактирова-    Заканчивает совместное
       ние                        редактирование, запи-
                                  сывает все изменения
                                  на диск, возвращает в
                                   Главный режим.
       
       Ввод данных                Заканчивает ввод данных
                                  записывает все изменения
                                  в таблицу(ы), возвращает
                                  в Главный режим.
                                  
       Различные режи-            Заканчивает просмотр
       мы/Просмотр поля                поля
         
       Сортировка                 Выполняет сортировку и
                                  возвращает в Главный
                                       режим
       
       Создать                    Создает таблицу и возвра-
                                   щает в Главный режим
         
       Изменить струк-            Изменяет структуру таб-
       туру                       лицы и возвращает в
                                   Главный режим.
                                        
         


                             - 153 -
       Форма                      Сохраняет форму, возвра-
                                  щает в Главный режим
         
         
       Отчет                      Сохраняет отчет, возвра-
                                  щает в  Главный режим.
                                           
         
       Редактор скриптов          Сохраняет скрипт, возвра-
                                  щает в  Главный режим.
         
         Заметим,  что символ подчеркивания (_) используется
         вместо тире (-) в имени команды. Если  вы  случайно
         наберете  команду DO-IT! в скрипте, то ПАРАДОКС бу-
         дет думать, что Вы хотите отнять из  переменной  DO
         переменную IT, а символ ! приведет к синтаксической
         ошибке.
         Использование:  Команда DO_IT! должна использоватся
         в конце циклов редактирования и совместного  редак-
         тирования в приложениях и выполнения предварительно
         сохраненных предложений запроса, которые помещаются
         в рабоче пространстве при помощи команды QUERU .
         Примеры: В примере пользователь вводит новую запись
         в  таблицу "assign" и, затем завершает редактирова-
         ние.
                 EDIT "Assign"    ;редактирование таблицы
                 END          ;переход к последней записи
                 DOWN         ;незаполненная строка таблицы
                 PICFORM 1    ;выбор формы для ввода данных
                 WAIT RECORD UNTIL "F2";ввод пользователем
                                       ;данных
                 DO_IT!       ;завершение редактирования
         
         В следующем примере запоминается запрос и затем  он
         выполняется.
               PLAY "Proquery" ;запустить скрипт, содержащий
                               ;запрос
               DO_IT!          ;выполнить запрос


                             - 154 -
         
   DOS   команда сокращенного  меню,  которая  позволяет вам
         запустить команду DOS без выхода из PARADOXa.  Нап-
         ример,  вы  можете запустить текстовый редактор или
         выполнить любые функции с файлами  DOS  в  процессе
         сеанса  PARADOXа. Когда DOS выполняется, она сохра-
         няет текущее  состояние  PARADOXa  и  предоставляет
         пользователю  подсказки DOS. Для возврата в PARADOX
         на подсказку DOS необходимо набрать EXIT,  управле-
         ние  возвращается в ту точку, из которой был сделан
         выход в DOS. Если выход был сделан из  скрипта,  то
         PARADOX  вернется  в  точку выхода в DOS и выполнит
         следующую команду после  команды  DOS.  Резидентные
         программы  RAM не могут загружаться, пока использу-
         ется команда DOS. В частности, команды DOS PRINT  и
         команда  MODE  не могут быть использованы, если они
         не  были  вызваны  предварительно  перед  входом  в
         PARADOX.  Пример:  DOS эквивалентна следующей запи-
         санной последовательности:
                       MENU {TOOLS} {MORE} {ToDOS}
         
   DOSBIG команда  приостанавливает  ПАРАДОКС  ,осуществляет
         выход в ДОС и позволяет запускать программы требую-
         щие максимального количества имеющейся памяти.
         Синтаксис: DOSBIG
         Как  и  нажатие  клавиш [Alt][O] (DOS Big), команда
         DOSBIG используется для приостановки  ПАРАДОКСА,  и
         позволяет пользователю выйти в DOS, имея максималь-
         ное количество памяти.
         Команда DOSBIG сохраняет текущее состояние ПАРАДОК-
         СА  и  предоставляет пользователю возможность рабо-
         тать в DOS, где он может набирать команды  операци-
         онной  системы или запускать другие программы. Если
         Вы наберете, работая в DOS, команду EXIT, то управ-
         ление вернется в ПАРАДОКС, и будет продолжена рабо-
         та скрипта с команды, следующей за командой DOS.  В


                             - 155 -
         компьютере  или  в рабочей станции с объемом опера-
         тивной памяти 640 к. и работающей  под  управлением
         DOS версии 3.1 команда DOSBIG освобождает для рабо-
         ты  примерно 500 к. оперативной памяти, когда ПАРА-
         ДОКС  приостанавливается.
         Использование: Если сравнивать  комканду  DOSBIG  с
         командой  DOS,  то  единственным недостатком первой
         является время, которое она  тратит  на  сохранение
         состояния ПАРАДОКСА, когда происходит выход в DOS и
         на возврат обратно в ПАРАДОКС. Эта недостаток может
         быть эффективно устранен  путем  введения  дополни-
         тельного адаптера расширения памяти.
         В  отличие от команды RUN BIG, которая используется
         для выполнения последовательности команд  DOSа  под
         управлением скрипта, команда DOSBIG позволяет поль-
         зователю  набирать произвольные команды после приг-
         лашения DOSа.
         Не загружайте память резидентными программами после
         использования команды  DOSBIG.  Не  пользуйтесть  в
         этом режиме командами DOSа такими как print и mode,
         если они уже не были загружены перед запуском ПАРА-
         ДОКСА. Для того, чтобы получить дополнительные све-
         дения  о  работе  этой команды, Вам неоходимо обра-
         титься к книге "Руководство пользователя по системе
         ПАРАДОКС",   где    приведено    описание    услуги
         TOOLS/MORE/ToDOS.
         Версия: Команда введена в ПАРАДОКС версии 2.0
         Смотрите также команды: DOS, RUN и RUN BIG.
         
   DOWN  моделирует нажатие клавиши "стрелка вниз".
         Синтаксис: DOWN
         Действие команды DOWN аналогично действию при нажа-
         тии  клавиши  "стрелка  вниз" и зависит от текущего
         контекста. Если ПАРАДОКС находитися не в подходящем
         режиме, команда игнорируется. Следующая таблица по-
         казывает действие команды DOWN в различных  режимах
         ПАРАДОКСА:


                             - 156 -
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Cдвигает курсор на одну
       Совместное редактирова-      запись вниз
       ние/ПросмотрТаблиц
         
       Главный, Редактирование,     Сдвигает курсор на одно
       Совместное редактирова-      поле вниз
       ние/Просмотр Формы
         
       Редактирование,Совмест-      Сдвигает курсор на стро-
       ное редактирование/Про-      ку в переносимом поле
       смотр поля
         
       Формы                        Сдвигает курсор на одну
                                    строку вниз
         
       Отчет                        Сдвигает курсор на одну
                                    строку вниз
       Скриптовый редактор          Сдвигает курсор на одну
                                    строку вниз

         
         Примеры:  Данный пример использует команду DOWN для
         того, чтобы создать новую пустую запись в  редакти-
         руемой таблице:
                 EDIT "Assign"    ;редактирование таблицы
                 END          ;переход к последней записи
                 DOWN         ;незаполненная строка таблицы
                 PICFORM 1    ;выбор формы для ввода данных
                 WAIT RECORD UNTIL "F2";ввод пользователем
                                       ;данных
                 DO_IT!       ;завершение редактирования
         


                             - 157 -
   DOWNIMAGE  команда  моделирует нажатие клавиши [F4] и пе-
         ремещает курсор вниз к следующему изображению в ра-
         бочем пространстве .
         Синтаксис:  DOWNIMAGE
         Когда в  рабочем  пространтве  находятся  несколько
         изображений объектов, команда  DOWNIMAGE  переносит
         курсор  с текущего изображения к изображению, нахо-
         дящемуся ниже текущего в рабочем пространстве.  Ко-
         манда  DOWNIMAGE  работает только в Главном режиме,
         режиме редактирования или режиме Совместного редак-
         тирования. В других контекстах команда  игнорирует-
         ся.  Она также не работает если текущее изображение
         является самым нижним или  единственным  в  рабочем
         пространстве.  Если текущее изображение находится в
         режиме просмотра  формы,  команда  DOWNIMAGE  имеет
         действие выхода из прсмотра формы в просмотр табли-
         цы для следующего изображения.
         
         Примеры: Данный пример использует команду DOWNIMAGE
         для  того, чтобы переходить от одной таблице к дру-
         гой внутри цикла SCAN:
                 VIEW "orders"
                 EDIT "bigord"    ;редактирование таблицы
                 END          ;переход к последней записи
                 UPIMAGE      ;перейти к таблице orders
                 SCAN FOR [Quan]>1000 ;выделить большие за-
                   COPYTOARRAY trans ;казы и скопировать их
                   DOWNIMAGE ;возвратиться к таблице bigord
                   COPYFROMARRAY trans
                   DOWN         ;перейти к следующей записи
                   UPIMAGE      ;вернуться к табл. orders
                 ENDSCAN
                 DO_IT!
         Cмотрите  также  команды  UPIMAGE,  FIRSTSHOW,
         IMAGENO, NIMAGENO.
         


                             - 158 -
   ECHO  команда открывает или  блокирует  вывод  на дисплей
         внутреннюю работу скрипта.
         Синтаксис: ECHO FAST, или SLOW, или OFF, или NORMAL
         Команда ECHO используется для показа внутренней ра-
         боты  скрипта в процессе отладки или для демонстра-
         ции. Естественно,  когда  скрипт  начинает  работу,
         канва  PALa инициализируется, скрывая все, что про-
         исходит в рабочей области. Таким образом, для поль-
         зователя  экран  является замороженным  до тех пор,
         пока скрипт не завершит свою работу. В этом  случае
         мы  говорим,  что ECHO выключено. Команда ECHO дает
         возможность включить эхо, показывая  каждое  дейст-
         вие,  которое  происходит в рабочей области. Эффект
         этой команды такой же как и при выборе SHOWPLAY  из
         SCRIPT MENU. Эхо включается также с помощью исполь-
         зования ECHO SLOW и ECHO FAST. Обе формы вводят ис-
         куственную  задержку в процессе игры скрипта, стобы
         действия скрипта не мелькали  перед  глазами.  ECHO
         SLOW  сильнее замедляет, чем ECHO FAST. ECHO NORMAL
         будет проигрывать скрипт, показывая его  внутреннюю
         работу без искуственных задержек. ECHO OFF выключа-
         ет действие ECHO, опять замораживая канву PALa.
         
   EDIT  команда сокращенного меню,которая позволяет вам ре-
         дактировать таблицы.
         Синтаксис: EDIT <имя таблицы>
         Команда вызывается, когда PAL находится в состоянии
         MAIN. Когда команда выполняется, система  переходит
         в состояние редактирования, т.к. для внесения изме-
         нений в таблицу PARADOX должен находиться в состоя-
         нии редактирования. Пример: EDIT "TANN" Эта команда
         эквивалентна   следующей  последовательности:  MENU
         {MODIFY} {EDIT} {TANN}
         
   EDITKEY моделирует нажатие клавиши [F9] включения  режима
         EDIT (редактирование).
         Синтаксис: EDITKEY
         Действие команды EDITKEY в Главном режиме аналогич-


                             - 159 -
         но  нажатию клавиши [F9](редактирование) и заключа-
         ется в переводе всех таблиц, находящихся в  рабочем
         пространстве ПАРАДОКСА в режим EDIT. Во всех других
         режимах команда не работает.
         
         Использование:  Команда  EDITKEY используется в тех
         случаях,  когда  Вам необходимо включить режим EDIT
         для того, чтобы сделать изменения в таблицах,  выс-
         веченных в рабочем пространстве ПАРАДОКСА. Смотрите
         также описание команд EDIT и COEDIT, где рассотрены
         особенности  использования режимов Редактирования
         и совместного редактирования.
         ны.
         
         Примеры:   Настоящий   пример   использует  команды
         EDITKEY и DO_IT! для включения режима  редактирова-
         ния  в цикле, что позволяет пользователю просматри-
         вать и изменять выбранные заказы:
         
            VIEW "orders"
            MOVETO FIELD "Order #"
            @0,0 ? "Введите номер заказа ([Enter]-Выход)
            ACCEPT "N" TO ordnum
            IF ISBLANC(ordnum)
                THEN QUITLOOP
            ENDIF
            LOCATE ordnum
            IF retval
               THEN
                  PICKFORM 1
                  WAIT RECORD
                  PROMT "Нажмите [F9], если хотите изменить",
                        "[F2], показать следующую запись",
                        "[Esc], завершить"
                 UNTIL "F2","F9","Esc"
                 SWITCH
                   CASE retval="F9"
                   EDITKEY  ;включение режима редактирования
                   WAIT RECORD


                             - 160 -
                     PROMT "Нажмите F2,если изменения сделаны"
                            UNTIL "F2"
                            DO_IT!
                     CASE retval="F2"
                     LOOP
                     CASE retval="Esc"
                     QUITLOOP
                 ENDSWITCH
               ELSE
                   MESSAGE "Номер заказа не найден"
                   LOOP
               ENDIF
            ENDWHILE
        Смотрите также команды:- COEDIT,  EDIT, COEDITKEY.
         Книгу "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ  ПО  СИСТЕМЕ  ПАРА-
         ДОКС".
         
   EMPTY команда сокращенного меню, которая позволяет  очис-
         тить таблицы от всех записей.
         Синтаксис: EMTTY <имя таблицы>
         Для того, чтобы использовать эту  команду,  PARADOX
         должен  находиться в состоянии MAIN. После выполне-
         ния данной команды все записи из таблицы  уничножа-
         ются  без  предупреждения. Пример: EMPTY "TANN" Эта
         команда эквивалентна следующей последовательности:
                 MENU {TOOLS} {MORE} {EMPTY} {TANN} {OK}
         
   END   команда моделирует нажатие клавиши [End].
         Синтаксис:   END
         Описание:  действие команды END зависит от текущего
         контекста. Обычно команда  используется  для  того,
         чтобы  сделать  текущей  последнюю запись или образ
         запроса.Она имеет это действие в  режиме  просмотра
         таблицы  или  просмотра  формы.  Команда HOME имеет
         противоположный эффект. Если Парадокс  находится  в
         неподходящем  режиме, команда игнорируется. Следую-
         щая таблица описывает действие команды END  в  раз-
         личных режимах Парадокса.


                             - 161 -
         
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Переносит курсор к после-
       Совместное редактирование    дней записи таблицы
       
       Любой режим/Просмотр поля    Переносит курсор к пос-
                                    леднему символу в поле
         
       Формы                        Переводит курсор к пос-
                                    ледней строке формы
         
       Отчет                        Переводит курсор к пос-
                                    ледней строке отчета
         
       Скриптовый редактор          Переводит курсор к пос-
                                    ледней строке скрипта
             
         Примеры: Следующий пример размещает таблицу в рабо-
         чем  пространстве,  переводит  ее в режим просмотра
         формы и делает текущей последнюю запись.
         
         VIEW "ORDERS"
         FORMKEY
         END
         
         Смотрите также HOME.
         
   ENTER моделирует нажатие клавиши [Enter].
         Синтаксис:  ENTER
         Действие  команды ENTER аналогично действию при на-
         жатии клавиши [ENTER] и зависит от текущего контек-
         ста. Если ПАРАДОКС находитися не в подходящем режи-
         ме, команда игнорируется. Следующая таблица показы-
         вает действие команды ENTER в различных режимах  ПА-
         РАДОКСА:


                             - 162 -
         
             Режим ------------------  Действие
        
       Главный, Редактирование,     Переход к следующему
       Совместное редактирова-      полю
       ние
         
       Любой режим/Просмотр         Завершает просмотр
       поля                         поля
       
       Форма                        Переводит курсор к
                                    следующей строке или
                                    ломает строку(см. ниже)
         
       Отчет                        Переводит курсор к
                                    следующей строке или
                                    ломает строку(см. ниже)
         
       Редактор скриптов            Переводит курсор к
                                    следующей строке или
                                    ломает строку(см. ниже)
         
         В  режиме создания формы и отчета, а также в Редак-
         торе скриптов, действие команды  ENTER  зависит  от
         того   находится   ли  ПАРАДОКС  в  режиме  "встав-
         ки"(insert) или нет. Если включен режим  вставки  в
         упомянутых  выше режимах, то команда ломает текущую
         строку в том месте, где находится курсор; если  ре-
         жим  вставки  выключен, то команда просто переносит
         курсор к первому символу следующей строки.
         
   ESC   моделирует нажатие клавиши [Esc] и возвращает к  пре-
         дыдущему меню или в рабочее пространство.
         Синтаксис: ESC
         Действие команды ESC аналогично действию при  нажа-
         тии клавиши [ESC]. Команда выходит из меню  в  меню
         предыдущего уровня или в рабочее пространство. Если
         меню ПАРАДОКСА нет на экране, команда игнорируется.


                             - 163 -
         
   EXAMPLE моделирует нажатие клавиши [F5] и вводит пример в
         текущее поле запроса.
         Синтаксис: EXAMPLE
         Действие команды EXAMPLE  аналогично  действию  при
         нажатии клавиши [F5]. Команда вводит пример в теку-
         щее поле формы запроса, находящуюся в рабочем прос-
         транстве.  Пример может быть использован для соеди-
         нения таблиц, величин, выполнения вычислений и  за-
         полнения новых записей.
         Если  курсор не находится в изображении запроса, то
         команда игнорируется.
         Смотрите также команды CHECK и CHECKPLUS
         
   EXECUTE  команда выполняет последовательность команд, за-
         писанных в строке EXECUTE.
         Синтаксис: EXECUTE <строковое выражение>
         Аргумент является  списком  команд  PALa.  Команды,
         представленные в списке, выполняются последователь-
         но. Длина списка не должна превышать  132  символа.
         EXECUTE   работает   путем  образования  временного
         скрипта (называемого EXECUTE), составленной из  ко-
         манд  списка.  Этот  временный скрипт играется так,
         если бы он был вызван командой PLAY. Этот скрипт не
         сохраняется как файл. Заметим, что оператор RETURN,
         выполненный внутри EXECUTE скрипта, и завершает ко-
         манду EXECUTE и не приводит возвращение  к  скрипту
         или  процедуре, в которой эта команда была вызвана.
         Пример: Следующие команды выводят таблицу на экран.
         Курсор устанавливается в поле,  имя  которого  хра-
         ниться в переменной TTT
           VIEW "orders"
           TTT="Stock #"
           EXECUTE "MOVETO ["+TTT+"]"
         Eсли,  например, значение ТТТ - "Part No", аргумент
         команды превратиться в строку:
           "MOVETO [Part No]"


                             - 164 -
   EXECPROC  команда вызывает процедуру, не имеющую аргумен-
         тов.
         Синтаксис:  EXECPROC 
         ProcName-имя вызываемой процедуры. Процедура должна
         не иметь аргументов. Это эквивалентно команде:
                      EXECUTE ProcName+"()"
         Команда EXECPROC может быть использована для вызова
         произвольных процедур из  скрипета.  Принципиальным
         приемуществм  этой  команды  перед командой EXECUTE
         является    быстродействие.    Недостаток   команды
         EXECPROC состоит в том, что она не может  быть  ис-
         пользована для вызова процедур, которые имеют аргу-
         менты.
         Примеры:  Данный пример использует команду EXECPROC
         для создания механизма, который может вызывать пос-
         ледовательность процедур, названных в  произвольном
         массиве.
         
              procarray=procarray1;массив, содержащий имена
                   ;вызываемых процедур
              FOR i FROM 1 to ARRAYSIZE(procarray)
                    EXECPROC procarray[i]
              ENDFOR
         
         Версия: Команда EXECPROC была введена  в  ПАРАДОКС
         версии 2.0. Использование этой команды в более ран-
         них  версиях  ПАРАДОКСА будет приводить к синтакси-
         ческой ошибке.
         Смотрите также команду EXECUTE
         
   EXIT  команда сокращенного меню, которая  выводит  в DOS.
         Синтаксис: EXIT
         Эта  команда может быть использована, когда PARADOX
         находится в  MAIN.  Действие  команды  эквивалентно
         последовательности из меню:
            MENU {EXIT} {YES} (см. QUIT и RETURN)


                             - 165 -
   FIELDVIEW Команда моделирует нажатие клавиш [Alt][F5] или
         [Ctrl][F] и позволяет входить в режим просмотра по-
         ля.
         Синтаксис: FIELDVIEW
         Команда   FIELDVIEW,   аналогично   [Alt][F5]   или
         [Ctrl][F], открывает текущее  поле  для  детального
         просмотра  или  редактирования.  Внутри поля курсор
         может перемещаться под любой символ,  содержащийся
         в  открытом  поле.  Курсор  может  находится либо в
         изображении  (в режиме просмотра таблицы или формы)
         либо в изображении запроса, либо в  меню.  Во  всех
         других случаях команда игнорируется.
         Использование:  Вспомните  как используются команды
         ENTER или DO_IT! для выхода из режима просмотра по-
         ля.
         Примеры:   VIEW "stock"
                    FIELDVIEW   ;режим просмотра поля
                    MESSAGE ISFIELDVIEW ()
         Cмотрите также использование команды ISFIELDVIEW  и
         описание режима "Просмотр поля" в книге "Руководст-
         во пользователя по системе ПАРАДОКС".
         
   FIRSTSHOW команда делает текущее изображение первым види-
         мым изображением рабочего пространства.
         Синтаксис:  FIRSTSHOW
         Команда  "прокручивает"  рабочее пространство таким
         образом, что текущее изображение появляется в верх-
         ней части экрана. Команда FIRSTSHOW позволяет поль-
         зователю  с  меньшими  затратами писать приложения,
         которые  имеют законченный вид. Она особенно полез-
         на, когда в приложении требуется разместить в рабо-
         чем  пространстве  одновременно  несколько  таблиц,
         причем только одна должнна быть показана  пользова-


                             - 166 -
         телю  под  управлением прцедуры WAIT. В этом случае
         таблица, которая высветиься на экране будет послед-
         ней помещенной в рабочее пространство (это  значит,
         что  все  другие  таблицы находятся выше ее). Затем
         эта команда используется для того, чтобы  поместить
         любую  из  указанных таблиц в верхнюю часть экрана,
         не зависимо  от  того,  сколько  в  ней  содержится
         строк.
         Примеры: В этом фрагменте показано начало  приложе-
         ния,  где сперва в рабочем пространстве размещаются
         несколько таблиц,  а  затем  возвращает  управление
         процедуре WAIT
              VIEW "customer" ;заказчики и товары
              VIEW "products"  ;cправочная таблица
              VIEW "employee"
              VIEW "orders"   ;пользователь будет смотреть
                              ;заказы в процедуре WAIT
              FIRSTSHOU       ;помещает таблицу заказов в
                              ;верхнюю часть экрана
              WAIT TABLE      ;вход в процедуру WAIT
              PROMPT "Переместите курсор к заказу, который",
                   "необходимо обработать и нажмите кл. F2"
                  UNTIL "F2"
                  .   .   .
                                
         
         Версия: Команда FIRSTSHOU введена в ПАРАДОКС версии
         2.0.
         Смотрите также команды: DOWNIMAGE, UPIMAGE, IMAGENO
         и NIMAGES
         
   FOR  команда выполняет последовательность команд заданное
         число раз.
         Синтаксис: FOR 
                        <>>
                        <>>
                        <>>
                        
                   ENDFOR


                             - 167 -
         Где: Number1,  Number2,  Number3-  целые  величины,
         обозначающие   соответственно:  начальное  значение
         счетчика, конечное значение счетчика, число, на ко-
         торое должен увеличиваться счетчик циклов поле каж-
         дого прохода.
         Команда  FOR выпролняет последовательность Commands
         столько раз, сколько сколько  определяется  счетчи-
         ком,  значение  которого  запоминается в переменной
         VarName.  Счетчик  управляется  ключевыми   словами
         FROM, TO и STEP.  Комбинации  указанных  параметров
         определяют  количество  циклических повторений ука-
         занной последовательности команд.
         Если величина STEP положительна, и введено значение
         TO, процесс итерации продолжается так  долго,  пока
         величина  переменной VarName будет меньше или равна
         значению параметра Number2. Если же  величина  STEP
         отрицательна,  то  итерация  будет продолжаться так
         долго, пока величина переменной VarName будет боль-
         ше или равна величине параметра Number2.
         Если  переменной  VarName  предварительно  не  было
         присвоено  значение,  то  ключевое слово FROM будет
         создавть переменную и присваивать ей значение вели-
         чины Number1.
         Вы можете использовать  команду  FOR  без  ключевых
         слов FROM, TO и STEP:
         >>  Если  величина FRON пропущена, то счетчик ведет
         отсчет,  начиная  с  текущего  значения  переменной
         VarName.  Если  значение переменной VarName не было
         присвоено и величина FOR опущена, то остаток  цикла
         FOR  будет игнорироватся, но это не будет приводить
         к ошибке скрипта.
         >> Если значение TO опущено, то цикл FOR будет  вы-
         полняться бесконечно.
         >>  Если  значение  STEP  опущено, то счетчик будет
         по умолчанию увеличиваться на 1.


                             - 168 -
         Если команда QUITLOOP используется внутри тела цик-
         ла, заданного командой FOR, то цикл FOR/ENDFOR  бу-
         дет  покинут. Если команда LOOP используется внутри
         тела цикла, то соманды, следующие за командой  LOOP
         будут  пропущены, а значение счетчика будет увеличи-
         ватся и итерация  будет  продолжаться  до  верхнего
         значения цикла FOR.
         Примеры: Этот пример высвечивает на экране даты че-
         рез 7 дней, начиная с 1 января 1987 года:
                    
                    FOR Date FROM 1/1/87 TO 1/1/88 STEP 7
                      ? Date
                    ENDFOR

         Следующий фрагмент процедуры  Checkpass  использует
         цикл FOR для предоставления пользователю возможнос-
         ти тремя способами вводить правильное имя пользова-
         теля (смотрите описание команды PROC ниже).
                    
              PROC Checkpass()
              PRIVATE nameok, pass
              PASSWORD "dontshowit"  ;пароль таблицы SECRETS
              VIEW "secrets"
              MOVETO FIELD "names"
              FOR i FROM 1 TO 3      ;3 возможности
                @2,4 ? "Введите Ваше имя:"
                ASSEPT "A15" to user
                CURSOR OFF           ;очистить все сообщения
                @3,4 CLEAR EOS
                CURSOR NORMAL
                LOCATE user          ;попытка найти имя
                IF retval            ;если имя правильное
                  THEN nameok=True   ;установка флага
                    QUITLOOP
                  ELSE
                    MESSAGE "Имя не найдено. Повторите ввод"
                ENDIF


                             - 169 -
              ENDFOR
                  .  .  .            ;остаток процедуры
              ENDPROC
         
         Смотрите  также  команды  QUITLOOP  и LOOP, а также
         WHILE.
         
   FORMKEY  команда  моделирует нажатие клавиши [F7] и пред-
         назначена для переключения между изображением  таб-
         личного вида и формой.
         Синтаксис:  FORMKEY
         Команда переключает изображение на экране из режима
         просмотра текущей таблицы в режим просмотраформы и
         наоборот. Если ПАРАДОКС находитися не в  подходящем
         режиме, команда игнорируется. Следующая таблица по-
         казывает действие команды FORMKEY в различных режи-
         мах ПАРАДОКСА:
         
     
             Режим ------------------  Действие
        
       Главный, Редактирование,     Переключает в режим про-
       Совместное редактирова-      смотра формы
       ние/просмотр таблицы
         
       Главный, Редактирование,     Переключает в режим про-
       Совместное редактирова-      смотра таблицы
       ние/просмотр формы
       
       Все другие контексты         Нет действия
         
         Команда  позволяет  выбирать  небходимые  формы для
         представления изображения на  экране  дисплея.  Это
         могут  быть стандартные формы ПАРАДОКСА для текущей
         таблицы, если заказанная форма не хранится как фор-
         ма F для таблицы. Также может быть использована ко-
         манда PICKFORM для назначения заказанной формы, как
         наиболее предпочтительной для текущего изображения.


                             - 170 -
         
         Примеры:   VIEW
                    "products"
                    END     ;последняя запись таблицы
                    FORMKEY ;режим просмотра формы
         
         Смотрите также команду PICKFORM
         
   HELP  команда  моделирует нажатие клавиши [F1] для вывода
         подсказки на экран.
         Синтаксис:  HELP
         Команда выводит на экран текст помощи  ПАРАДОКСА  в
         зависимости  от  текущего  состояния. Команда может
         использоваться в любом режиме ПАРАДОКСА.
         За исключением случая,  когда  пользователь  вводит
         данные в таблицу, для которой существует справочная
         таблица (в этом случае команда HELP выводит пользо-
         вателю  справочную  таблицу), Вам нет необходимости
         использовать команду HELP в Вашем скрипте, так  как
         команда выдает помощь ПАРАДОКСА, а не Вашего прило-
         жения. С другой стороны, Вы можете подготовить соб-
         ственный  экран  помощи и использовать команду WAIT
         UNTIL "F1" внутри скрипта.
         
         Версия: В версиях 1.0 и 1.1  команда  невозможна  в
         течение  процедуры  WAIT.  В версии 2.0 если помощь
         определена для таблицы, пользователь  может  нажать
         клавишу [HELP] в течение цикла WAIT, и взаимодейст-
         вовать со справочной таблицей.
         
         Смотрите  также  команду:  HELPMODE,  а также книгу
         "Руководство пользователя по системе  ПАРАДОКС",ус-
         луги Modify и Help.
         
   HOME команда моделирует нажатие клавиши [Home].
         Синтаксис: HOME


                             - 171 -
         Действие команды HOME аналогично действию при нажа-
         тии клавиши [HOME] и зависит от текущего контекста.
         Обычно команда используется для того, чтобы сделать
         текущей на экране или в изображении запроса  первую
         запись.  Это  же  действие производит команда как в
         редиме "просмотр таблицы", так и в режиме "просмотр
         формы". Заметим, что команда  HOME,  при  изменении
         текущей  записи  не изменяет текущего поля. Команда
         END является комплементарной по отношению к команде
         HOME. Если ПАРАДОКС находитися не в подходящем  ре-
         жиме, команда игнорируется. Следующая таблица пока-
         зывает  действие  команды HOME в различных режимах
         ПАРАДОКСА:
         
         
             Режим ------------------  Действие
        
       Главный, Редактирование,    Переводит курсор к первой
       Совместное редактирова-     записи
       ние
       Любой режим/Просмотр        Переводит курсор к первому
       поля                        символу поля
       
       Форма                       Переводит курсор к первой
                                   строке формы
                                               
       Отчет                       Переводит курсор к
                                   верхней строке
         
       Редактор скриптов           Переводит курсор к
                                   первой строке скрипта
         
         Примеры: Данный фрагмент переносит в рабочее прост-
         ранство таблицу "orders"(заказы) и переводит курсор
         в позицию с полем 1 и записью 1.
                MOVETO [orders ->]
                HOME
                CTRLHOME
         Смотрите также команду END.


                            - 172 -
   IF    команда выполняет одну из дву альтернативных после-
         довательностей команд в зависимости от значения ло-
         гического условия.
         Синтаксис: IF <условие> THEN <команды> ENDIF или
         IF<условие> THEN <команды 1> ELSE <команды 2> ENDIF
         В  первом случае, если значение <условие> TRUE, вы-
         полняются  команды, заданные в поле <команды>. Если
         значение FALSE (ложно),  то  они  пропускаются.  Во
         втором  случае,  если значение <условие> истино, то
         выполняются команды, заданные в поле <команды 1>, в
         противном  случае  выполняются  команды, заданные в
         поле <команды 2>. Эта команда может  занимать  нес-
         колько  строк,  если в полях <команды 1> и <команды
         2> много команд. Полезно выделять  команды  THEN  и
         ELSE, чтобы последовательность лекго воспринималась
         при чтении программы. Также заметим, что команда IF
         может быть вложенной, т.к. команды из <команды 1> и
         <команды 2> также могут содержать  IF.  Пример:  IF
         stock < 100
                   THEN PLAY "TTT"
                   stock = stock + 10
                 ENDIF
         Пример:
                 IF(ISBLANK(lastname))
                     THEN MESSAGE "Введите последнее имя"
                   ELSE
                     VIEW "names"
                     MOVETO [lastname]
                     IF retval
                       THEN MESSAGE "найдено",lastname
                       ELSE MESSAGE "не найдено",lastname
                     ENDIF
                 ENDIF
         (см.SWITCH и WHILE)


                             - 173 -
   IMAGERIGHTS  команда устанавливает или удаляет право дос-
         тупа.
         Синтаксис:  IMAGERIGHTS < или >
         Команда  позволяет  Вам  ограничить право доступа к
         таблицам. Заметим, что  команда  никогда  не  может
         расширить  доступ пользователя к отдельной таблице,
         если право доступа к ней были ограничены ранее дру-
         гим паролем. Команда только может дополнительно ог-
         раничить их.
         Команда IMAGERIGHTS очищает различные  ограничения,
         которые были  наложены  предшествующим  исполнением
         зтой команды; уровень доступа возвращается к правам
         таблицы, определенным паролем  пользователя.  Опции
         UPDATE  и READONLY показывают, что пользователь мо-
         жет только модифицировать (т.е. модифицировать нек-
         лючевые поля) или только читать величины в  текущем
         изображении соответственно. Для детального изучения
         вопроса  о применении паролей и правах таблиц смот-
         рите в книге "Руководство пользователя  по  системе
         ПАРАДОКС" описание услуги Tools/More/Protect.
         Использовавние: команда IMAGERIGHTS особенно полез-
         на  в  многопользовательских  приложениях, когда Вы
         хотите управлять правом доступа к таблице по прави-
         лу "пользователь за пользователем".
         Версия: команда IMAGERIGHTS была введена в ПАРАДОКС
         версии 2.0.
         Примеры: данный пример позволяет пользователю прос-
         матривать таблицу, не изменяя величин ключеквых по-
         лей до тех пор, пока пользователь с именем Вова  не
         запустит скрипт и не исправит существующий пароль.
         
         EDIT "salary"
         @ 2,4 ? "Enter password: "
         ACCEPT "A15" TO pass
         IF ((pass<> "imok") OR (USERNAME() <> "Вова"))


                             - 174 -
           THEN
               IMAGERIGHTS UPDATE ; пользователь может
                    ;  посмотреть,  но  не изменять ключевых
                    ;  полей
                  ; нажмите "F2", если надо отредактировать
         ENDIF
         WAIT TABLE
           PROMRT "Используйте клавиши перемещения курсора",
               "для путешествия по тавлице",
                  "нажмите "F2", если надо отредактировать".
           UNTIL "F2"
         IMAGERIGHTS ; уровень доступа возвращается к правам
         ;таблицы, определенным паролем  пользователя.
         DO_IT!
         Смотри также книгу  "Руководство  пользователей  по
         системе Парадокс".
         
   INDEX команда создает вторичную индексацию полей таблицы
         Синтаксис: INDEX <имя таблицы> ON <имя поля>
         Эта  команда вызывает вторичную индексацию, которая
         генерируется для  определенного  поля  определенной
         таблицы. Индексация используется для быстрых запро-
         сов. Это используется автоматически.
         Вторичная индексация продуцируется идентично индек-
         сации,  которая  генерируется с помощью TOOLS/QUERY
         SPEEDUP в PARADOX меню.
         INDEX - наиболее прямой путь создания этих индекса-
         ций.  Вторичная  индексация компануется в двух фай-
         лах, каждый из которых имеет такое же корневое имя,
         как  и  соответствующая им таблица. Расширение этих
         двух файлов имеет вид: .xnn и .ynn, где  индексиро-
         ванное  поле  есть  nn-ое  поле таблицы, выраженное
         в  16-тиричном  представлении (использование 16-ти-
         ричного кода позволяет создать индексацию для  каж-
         дой  из  255  возможных  полей в таблице).
         Т.о,  если "Part No"- второе поле таблицы "orders",
         INDEX "orders" поля "Part No" создает файл  вторич-


                             - 175 -
         ной  индексации  Orders.x02 и orders.y02. Вторичная
         индексация  автоматически  востанавливается,   если
         таблицы  модифицируются.  Вы можете ускорить воста-
         новление использованием другой команды INDEX.  Если
         же  новая  вторичная  индексация уже существует, то
         команда INDEX не имеет значения. Вторичная индекса-
         ция для данной таблицы есть  часть  имени  таблицы.
         Она      может     быть     уничтожена     выбором:
         TOOLS/DELETE/QUERY SPEEDUP из PARADOX  меню.  Заме-
         тим,  что нет необходимости создавать вторичную ин-
         дексацию для первого поля  таблицы,  т.к  первичная
         индексация для этой таблицы автоматически использу-
         ется  в  любом  контексте. PAL и PARADOX никогда не
         требуют вторичной индексации.  INDEX  неможет  быть
         использован  когда таблица находиться в рабочей об-
         ласти. Пример: INDEX "order" ON "Part No"; создание
         индексации
                 VIEW "order"              ; вывод таблицы в
                                             рабочую область
                 MOVETO [PART NO]
                 LOCATE 27001
         
   INFOLIB  команда  показывает  имена  таблиц, хранящихся в
         библиотеке.
         Синтаксис: INFOLIB <имя библиотеки>
         Когда вводите эту  команду, образуется  специальный
         временный табличный список, который выводится в ра-
         бочую область. Эта таблица содержит имена процедур,
         хранящихся в библиотеке имя которой вы задали. Так-
         же  показывается,  какое  количество  памяти занято
         каждой процедурой. Пример: INFOLIB "mylib"
         
   INS команда моделирует работу клавиши [Ins].
         Синтаксис:  INS
         Действие  команды INS, как и нажатие клавиши [Ins],
         зависит от текущего контекста. Если ПАРАДОКС  нахо-
         дитися  не в подходящем режиме, команда игнорирует-
         ся. Следующая таблица показывает  действие  команды
         INS в различных режимах ПАРАДОКСА:


                             - 176 -
         
             Режим ------------------  Действие
        
       Главный/форма запроса      Вставляет пустую строку
                                    
       Главный/просмотр табли-    Не действует
       цы или формы
         
       Совместное редактирова-    Всавляет пустую запись
       ние, редактирование,
       ввод данных
         
       Совместное редактирова-    Переключает режим
       ние/Просмотр Поля          вставка/замещение
                       
       Создать, изменить струк-   Вставляет пустую запись
       туру
                                           
       Форма                      Переключает режим
                                  вставка/замещение
         
       Отчет                      Переключает режим
                                  вставка/замещение

       Редактор скриптов          Переключает режим
                                  вставка/замещение
   INSTANTPLAY моделирует нажатие клавиш [Alt] [F4] и запус-
         кает для запуска instant скрипта.
         Синтаксис: INSTANTPLAY
         Команда  INSTANTPLAY  запускает  скрипт  с   именем
         instant.   Если  такого  скрипта  нет,  фиксируется
         ошибка. Смотрите также "Создание и запуск скриптов"
         для получения информации о скриптах instant.
         


                             - 177 -
   INSTANTREPORT моделирует нажатие клавиш  [Alt]  [F7]  для
         того, чтобы напечатать отчет для текущей таблицы
         Синтаксис: INSTANTREPORT
         Команда INSTANTREPORT  печатает  стандартный  отчет
         для   текущей   таблицы,   находящейся   в  рабочем
         пространстве. Аналогично генератору отчетов команда
         INSTANTREPORT   печатает   отчет,    который    был
         разработан  последним.  Если  Парадокс  находится в
         неподходящем режиме, команда игнорируется.
         
       
             Режим ------------------  Действие
        
       Главный, Редактирование,     Печатает отчет для те-
       Совместное редактирова-      кущей таблицы
       ние
       Любой режим/Просмотр         Нет действия
       поля
       Форма                        Нет действия
       Отчет                        Печатает отчет, исполь-
                                    зуя текущую спецификацию
       Редактор скриптов            Печатает листинг скрипта
         
         Использование:   Вы   можете  использовать  команду
         SETPRINTER для спецификации порта принтера, на  ко-
         торый команда INSTANTREPORT выводит информацию.
         Примеры:
         PLAY "q1"        ; где q1 - форма запроса
         DO_IT!           ; выполнить запрос
         INSTANTREPORT    ; печать отчета
         
         Смотрите также в книге "Руководство пользователя по
         ситстеме Парадокс" главу " Базовые отчеты".
         


                             - 178 -
   KEYLOOKUP в режиме совместного редактирования ищет запись
         с заданным ключем.
         Cинтаксис: KEYLOOKUP
         Описание:  Когда  происходит нарушение уникальности
         ключа в режиме Совместного редактирования,  команда
         KEYLOOKUP  (нажатие клавиши [Alt] [K]), переключает
         либо запись, которую Вы пытаетесь ввести, либо  су-
         ществующую запись с этим же ключом.
         Для того, чтобы использовать команды KEYLOOKUP, Па-
         радокс  должен  находиться в режиме Совместного ре-
         дактирования. В других режимах команда игнорируется.
         Использование: Команда особенно полезна для  разре-
         шения  конфликтов,  связанных с нарушением уникаль-
         ности ключей в режиме  совместного  редактирования.
         Команда  позволяет Вам высвечивать либо запись, ко-
         торую Вы вводите, либо уже  существующую  запись  с
         этим же ключом.
         После заполнения ключевых полей, новой записи  или,
         при редактировании уже существующей записи, команда
         KEYLOOKUP определяет, имеется ли уже запись  с  тем
         же ключом. Если да, то неключевые поля из существу-
         ющей  записи переносятся в запись, с которой Вы ра-
         ботаете. Выполнение  команды  KEYLOOKUP  возвращает
         новые величины, которые Вы ввели.
         Когда  Вы вводите новые записи в таблицу с ключами,
         Вы можете использовать команду LOCKKEY  непосредст-
         венно  после  ввода для того, чторбы определить су-
         ществует ли потенциально  ситуация  нарушения  уни-
         кальности ключей.
         Версия: Команда KEYLOOKUP введена в ПАРАДОКС версии
         2.0.
         Примеры: Этот фрагмент программы использует команду
         KEYLOOKUP  для того что бы выделить величины из су-
         ществующей записи в течении цикла  совместного  ре-
         дактирования. Смотрите также пример приведенный для
         команды LOCKRECORD.
         


                             - 179 -
            WHILE (True)
              LOCKRECORD      ; блокировка записи
               IF (retval)
               THEN QUITLOOP ; блокировка успешна -
           ;  имя  было  новое,  поэтому можно покинуть цикл
                ENDIF ; найти почему не было блоки
                      ; ровки,  если  была  блокирована
                      ;запись, то (9), если таблица, то (3).
              IF (errorcode() = 9 or errorcode () = 3)
              THEN MESSAGE errormessage() + " ... попы- ",
                 "тайтесь опять".
              ELSE  ;  в  обратном случае конфликт ключей (53)
              KEYLOOKUP ; выделить существующую запись
              ENDIF ; подтверждает цикл и блокировку
              ENDWHILE ; заблокирована новая или старая запись
         Смотрите также в книге " Руководство  пользователя
         по системе ПАРАДОКС " описание режима  COEDIT.
         
   KEYPRESS пропуск любого символа в PARADOX.
         Синтаксис: KEYPRESS <код символа>
         Команда  производит  печать  символа  определенного
         значением <код  символа>.  Аргумент  <код  символа>
         должен  вычислять  правильный  код PALа. Допустимые
         значения включают коды ASC II (положительные  числа
         или  односимвольные  строки),  расширенные коды IBM
         (отрицательные числа) и  имена  клавиш  (выраженные
         строками).
         Пример:  KEYPRESS  "MENU" ;копирует нажатие клавиши
         [F10] в PARADOX MENU, т.о. вызывая меню.
         Заметим, что KEYPRESS "C" производит точно такое же
         действие, как просто "C".
         Пример: KEYPRESS 47 ; такой же как набор "/"
         Следующий входной цикл клавиатуры посылает символы,
         набираемые пользователем, в PARADOX до тех пор, по-
         ка пользователь не нажмет клавищу "Q"


                             - 180 -
         WHILE TRUE
              C=GETCHAR()
              IF C=ASC("Q")
               THEN QUITLOOP
               ELSE KEYPRESS C
              ENDIF
         ENDWHILE
         
   LEFT  команда  моделирует нажатие клавиши [стрелка влево].
         Синтаксис:  LEFT
         Действие  команды  LEFT,  как  и  действие  клавиши
         [стрелка влево] зависит от текущего  контекста.Если
         ПАРАДОКС находитися не в подходящем режиме, команда
         игнорируется. Следующая таблица показывает действие
         команды LEFT в различных режимах ПАРАДОКСА:
         
        
             Режим ------------------  Действие
       Главный, Редактирование,    Перемещает курсор на одно
       Совместное редактирова-     поле влево .(если курсор
       ние/просмотр таблицы        находится в записи поля,
                                   помеченного #,то курсор
                                   перемещается к послед-
                                   нему полю предыдущей запи-
                                   си).
       Главный, Редактирование,    Перемещает курсор на одно
       Совместное редактирова-     поле влево или вверх (если
       ние/просмотр формы          курсор находится в первом
                                   поле,то перемещает его к
                                   последнему полю предыдущей
                                   записи.
       Любой режим/Просмотр        Перемещает курсор влево на
       поля                        один символ.
       Форма                       Перемещает курсор влево на
                                   один символ.
       Отчет                       Перемещает курсор влево на
                                   один символ.
       Скрипт                      Перемещает курсор влево на
                                   один символ.


                             - 181 -
                                               
         Заметим,что  курсор находится в последнем поле запи-
         си, команда LEFT переносит курсор  к  первому  полю
         предыдущей записи.
         Смотрите также команду RIGHT.
        
   LOCATE команда располагает запись данного значения в одно
         или более полей.
         Синтаксис: LOCATE <> для n >=2
         LOCATE <> ...
         Первая форма располагает значение в  текущий  стол-
         бец.  Этот  столбец сканируется с начала таблицы, а
         если используется ключевое слово  NEXT,  с  текущей
         записи  таблицы.  Если запись ищется в соответствии
         со значением  выражения    в  текущем
         столбце,  сканирование заканчивается, и располагае-
         мая запись становиться текущей записью. Если скани-
         рование окажется неуспешным, текущая запись не  ме-
         няется. Вторая форма работает аналогично, но разме-
         щает запись в таблице, чьи первые n полей соответс-
         твуют значениям от  до .  В обоих формах команды переменная "retval" ус-
         танавливается равной  "истино",  если  сканирование
         было успешным и "ложно" в противном случае. Текущее
         изображение рабочей области должно быть выведено на
         экран.  Эта команда автоматически дает преимущество
         любому индексированию. Пример: Поместить  курсор  в
         поле LAST NAME и найти запись Smith
            VIEW "order"
            MOVETO [LAST NAME]
            LOCATE "Smith"
         


                             - 182 -
   LOCK команда блокирует одну или несколько таблиц.
         Синтаксис: LOCK 
         Где  Locklist  -  список, содержащий одну или более
         пар записей, которые определяют таблицу и тип  бло-
         кировки.  Тип  блокировки  обозначается  следующими
         ключами: FL (полная блокировка), WL (блокировка за-
         писи), PWL (предотвращает блокировку записи), PFL
         (предотвращает полную блокировку).
         Описание: Команда LOCK пытается блокировать  табли-
         цы, определенные в списке Locklist. Если все табли-
         цы, входящие в список,  удалось  заблокировать,  то
         команда  считается  успешно завершенной и системная
         переменная с именем Retval устанавливается в значе-
         ние " ИСТИННО", в противном случае она устанавлива-
         ется в значение " ЛОЖНО".
         Вы  можете использовать функцию ERRORCODE для опре-
         деления результата выполнения команды LOCK.
         
         Использование: Команда  LOCK  выполняет  блокировку
         при условии, чтобы все таблицы, используемые коман-
         дой  были  доступны  перед  операцией. Если команда
         LOCK не может заблокировать все таблицы, определен-
         ные в списке, то она не может заблокировать ни  од-
         ной.  Для  полного  понимания  процесса  блокировки
         смотри книгу  "  Управление  многопользовательскими
         приложениями".
         Версия: Команда LOCK была введена в версию ПАРАДОК-
         СА 2.0.
         Примеры: Эта программа дает  пользователю  исключи-
         тельное право записи в таблицу orders (заказы):
         
            LOCK "orders" WL, "orders" PWL
         Следующий пример  позволяет  заблокировать  таблицу
         Employee (служащие):
            WHILE (True)
                LOCK "Employ" WL
                IF (Retval)
                    THEN              ; успешна ли блокировка?


                             - 183 -
                      QUITLOOP        ; продолжить цикл
                    ELSE
             MESSAGE Errormesage()    ; показать пользователю
                                        сообщение об ошибке
                ENDIF
            ENDWHILE
                    
         Смотрите также команды LOCKKEY, LOCKRECORD, UNLOCK,
         UNLOCKRECORD, ERRORRECORD.
         
   LOCKKEY   моделирует   одновременное    нажатие    клавиш
         [Alt][L]  (Переключение блокировки). Команда блоки-
         рует или разблокирует текущую запись.
         Синтаксис:  LOCKKEY
         Команда включает или выключает  блокировку  текущей
         записи.  При  разблокировке записи, команда LOCKKEY
         сохраняет все изменения, которые Вы сделали.  После
         того,  как произошло нарушение уникальности ключей,
         команда LOCKKEY изменяет существующую запись.
         Для того, чтобы использовать команду LOCKKEY, необ-
         ходимо находиться в режиме Совместного редактирова-
         ния ПАРАДОКСА. В других режимах команда игнорирует-
         ся. Вы можете использовать  функцию  ERRORCODE  для
         определения результата блолкировки.
                                
         Использование: В большинстве случаев предпочтитель-
         нее использовать команды LOCKRECORD и UNLOCKRECORD,
         которые обеспечивают более тонкое управление Вашими
         приложениями, чем команда LOCKKEY.
         
         Версия: Команда была добавлена в  версию  ПАРАДОКСА
         2.0.
         
         Смотрите  также  команды LOCK ,LOCKRECORD ,UNLOCK и
         UNLOCKRECORD.
         


                             - 184 -
   LOCKRECORD команда блокирует текущую запись.
         Синтаксис:  LOCKRECORD
         Команда блокирует текущую запись.  Системная  пере-
         менная  retval устанавливается в значение "ИСТИНО",
         если запись заблокирована,  в  значение  "ЛОЖНО"  в
         противном  случае. Если блокировка не удалась, сле-
         дует использовать функцию ERRORCODE для определения
         причины неудачи. Для того, чтобы  использовать  ко-
         манду  LOCKRECORD, ПАРАДОКС должен находиться в ре-
         жиме совместного редактирования.
         Действие команды LOCKRECORD зависит от того являет-
         ся  ли  текущая  запись уже существующей или еще не
         отосланной. Если  команда  вызывается  для  еще  не
         отосланной записи, то она имеет следующее действие:
          - Запись будет отослана в таблицу
          - Запись будет заблокирована
          -  Если  таблица содержит ключевые поля, то запись
         будет перемещена на правильное место в соответствии
         с с ее ключом
          - Запись станет текущей.
         Эти действия позволят Вам осуществлять  полное  уп-
         равление отправкой новых записей в таблицы с ключе-
         выми  полями. Смотрите описание команды KEYLOOKUP в
         книге "Управление многопользовательскими приложени-
         ями" для детализации методов блокировки записей.
         
         Версия:  Команда LOCKRECORD введена в ПАРАДОКС вер-
         сии 2.0.
         
         
         Примеры: В следующем фрагменте показан цикл Совмес-
         тного редактирования, управляемый скриптом.
              COEDIT "Employee"
              END DOWN        ;открыть в конце пустую запись
              FORMKEY
              WAIT RECORD     ;Здесь пользователь заполняет
                              ;имя
                PROMPT "Заполните Имя и Фамилию, нажмите F2"


                             - 185 -
                UNTIL "F2"
              WHILE (True)
                LOCKRECORD  ;попытка послать и заблокировать
                IF (retval)
                   THEN QUITLOOP  ;блкировка  успешна,  было
              ;введено новое имя, поэтому цикл WHILE завершен.
                ENDIF           ;найти почему нет блокировки
               ;если была заблокирована запись, то(9),
               ;если была заблокирована таблица, то(3)
               IF(errorcode()=9 or errorcode()=3)
               THEN MESSAGE errormessage()+"попытайтесь снова"
               ELSE
                     KEYLOOKUP ;отметить существующую запись
              ENDIF
              ENDWHILE
                  ;заблокировать новую или старую запись
              WAIT TABLE
              MESSAGE "Отредактируйте информацию о заказчике",
                      "Затем нажмите F2"
              UNTIL "F2"
              UNLOCKRECORD
              DO_IT! ; закончить совместное редактирование
         
         Смотрите также команды KEYLOOKUP, LOCKKEY, UNLOCK и
         UNLOCKRECORD.
         
   LOOP  команда  передает  управление   вершине  ближайшего
         цикла WHILE или SCAN.
         Оператор, выполняемый  внутри  тела  WHILE-ENDWHILE
         или SCAN-ENDSCAN цикла, LOOP вызывает команды, зак-
         люченные между ними и перескакивает через  ENDWHILE
         и  ENDSCAN. Если команда LOOP выполняется не в теле
         цикла, то регистрируется ошибка.
         Пример: уничтожается каждая  пятая  запись  таблицы
         "orders".


                             - 186 -
         EDIT "orders"        ; вызов таблицы
            i=1               ; установка счетчика
          SCAN                ; сканирование таблицы
            i=i+1             ; увеличение счетчика
            IF MOD(i,5)<>0    ; если не кратно 5
              THEN LOOP       ; ничего не делать
            ENDIF
            DEL               ; уничтожить запись
          ENDSCAN
         
   MENU  моделирует  нажатие клавиши Меню [F10]. Высвечивает
         текущее меню.
         Синтаксис: MENU
         Описание: Команда высвечивает текущее меню ПАРАДОК-
         СА. Меню зависит от режима, в котором находится ПА-
         РАДОКС. Каждый режим имеет свое собственное меню.
         Использование: Команда обычно используется для  вы-
         зова  меню ПАРАДОКСА, для выполнения действий к ко-
         торым нельзя получить доступ используя  абревиатуру
         команды меню ({MENU}). В этом случае Вы должны ука-
         зать  в  Вашем  скрипте  полный путь к меню, причем
         каждая опция меню должна быть заключена в  фигурные
         скобки или выбратся при помощи команды SELECT. Пун-
         кты  меню могут быть созданы при помощи строк в ка-
         вычках или при помощи команды TYPEN.
         Примеры: Для того, чтобы поместить текущую  таблицу
         в  рабочую область Lotus 1-2-3 под темже именем, Вы
         должны высветить меню Main:
         Menu {Tools} {ExportImport}  {1-2-3}  KEYPRESS  "1"
         SELECT TABLE() TYPEIN TABLE() {Enter}
         Смотрите  также  главу "Меню ПАРАДОКСА и сообщения"
         книги "Руководство пользователя  по  системе  ПАРА-
         ДОКС".
         
   MESSAGE команда превращает свои аргументы в строки  (если
         это необходимо), сцепляет их и выводит на дисплей в
         правый нижний угол.
         Синтаксис: MESSAGE...
         Сообщение MESSAGE выдается на дисплей в контрастном


                             - 187 -
         цвете. Сообщение стирается с первым нажатием клави-
         ши или следующей командой MESSAGE.
         Пример: команда выводит значение переменной t
         MESSAGE "Значение переменной равно:" t
         
   MOVETO  команда делает определенное поле или запись теку-
         щим.
         Синтаксис: MOVETO <имя поля> или
                    MOVETO 
         Первая форма команды двигает курсор к определенному
         полю. Вторая форма передвигает курсор  к  записи  в
         текущем образе, чей номер задается значением число-
         вого выражения . Это выражение должно
         иметь  целое  значение и входить в интервал от 1 до
         числа записей в таблице.
         Пример:
         VIEW "STOCK"
         MOVETO ["Price"] ; перевод к полю Price
         MOVETO RECOPD 60 ; перевод к 60 записи поля Price
         
   OPEN PRINTER открывает канал текущего устройства печати.
         Синтаксис: OPEN PRINTER
         Эта  команда  используется  для того, чтобы открыть
         канал устройства печати; канал будет оставатся отк-
         рытым до появления команды CLOSE PRINTER или выхода
         из ПАРАДОКСА.
         В большинстве случаев ПАРАДОКС автоматически управ-
         ляет  низкоуровневыми операциями, такими как откры-
         тие и закрытие файлов или приборов, за  исключением
         управления  принтером  в  сети. В большинстве сетей
         при выводе страницы на принтер генерируется заголо-
         вок страницы. В конце  вывода  печатается  заключи-
         тельная страница.
         Из-за  особенностей  сетей,  команды  ПАЛА  PRINT и
         PRINTER могут привести к непредсказуемым  результа-
         там.  Всякий раз, когда в приложении, которое рабо-
         тает в сети, появляется команда PRINT или  PRINTER,


                             - 188 -
         новый  заголовок страницы будет генерироватся. Если
         некоторое число команд PRINT выполняется последова-
         тельно, например в цикле, то заголовки страниц  бу-
         дут перекрывать действительный выход.
         Использование: Команда OPEN PRINTER выполняет теку-
         щую  установку устройства печати. Устройство печати
         может быть присоединено либо к LPT1, либо к  порту,
         выбранному  услугой  Report/SetPrinter/Override  из
         Главного меню, либо связано по-умолчанию  с  портом
         устройства печати при помощи услуги Report/Setup из
         Custom Configuration Program.
         После использования команды OPEN PRINTER не забудте
         закрыть  канал  устройства  печати после завершения
         работы с принтером при помощи команды CLOSE PRINTER
         в ваших приложениях.
                             
         Версия: Команда OPEN PRINTER была введена в  ПАРА-
         ДОКС  версии 2.0. Использование этой команды в пре-
         дыдущих версиях будет  приводить  к  синтаксической
         ошибке.
         
         Пример:
              SETPRINTER LPT2
              VIEW "orders"
              OPEN PRINTER
              PRINT "Large Orders Through "+ STRVAL(TODAY())
              SCAN FOR [Quan]>1000
                 printline="Customer:"+ STRVAL([Cust ID]
                 PRINT printline + "\n"
              ENDSCAN
              CLOSE PRINTER
              CLEARALL
         Смотрите также команды CLOSE PRINTER, PRINT, PRINTER
         и SETPRINTER.
         


                             - 189 -
   PASSWORD задает значение паролей, позволяющих осуществить
         доступ к таблице. Если несколько таблиц имеют  один
         и тот же пароль, то  достаточно  указать  его  один
         раз,  и  Вы получите доступ ко всем таблицам с этим
         паролем. Синтаксис: PASSWORD  <пароль  1>...<пароль
         n>  Заметим, что команды сокращенного меню, которые
         оперируют с таблицами, защищенными паролями, не бу-
         дут  исполняться,  если в скрипте предварительно не
         был представлен пароль. Желательно,  чтобы  скрипт,
         который использует защищенные таблицы, тоже был за-
         щищен. Для этих  целей  в  меню  PARADOXa  выберите
         TOOLS/PROTECT, который защитит Ваш скрипт  так  же,
         как  и  таблицу.  Команда UNPASSWORD может быть ис-
         пользована для восстановления защиты перед заверше-
         нием работы скрипта. Пример: Если таблица  "orders"
         была    защищена    словом    "Tann",   а   таблица
         "stores"-словом "Open, sesame",  следующие  команды
         дают   возможность  просмотреть  эти  две  таблицы.
         PASSWORD "Tann","Open, sesame" VIEW  "orders"  VIEW
         "stores"  Заметим, что эти таблицы могут быть защи-
         щены  использованием  команды   сокращенного   меню
         PROTECT.
         
   PGDN  команда  моделирует нажатие клавиши [PgDn].
         Синтаксис:  PGDN
         Действие  команды  PGDN,  как  и  действие  клавиши
         [PGDN] зависит от текущего контекста. Если ПАРАДОКС
         находитися не в подходящем режиме, команда  игнори-
         руется.  Следующая  таблица показывает действие ко-
         манды PGDN в различных режимах ПАРАДОКСА:
         
             Режим ------------------  Действие
        
       Главный, Редактирование,   Перемещает вниз на один
       Совместное редактирова-    экран.
       ние/просмотр таблицы
                                   
                                                         


                             - 190 -
       Главный, Редактирование,   Перемещает вниз к преды-
       Совместное редактирова-    дущей записи или форме.
       ние/просмотр формы
         
       Любой режим/Просмотр       Игнорируется.
       поля
         
       Форма                      Игнорируется.
         
       Отчет                      Перемещает курсор вниз на
                                  половину экрана.
         
       Редактор Скриптов          Перемещает курсор вниз на
                                  половину экрана .
         
         Примеры:  Пример показывает разницу действия команд
         PGUP и PGDN в зависимости от того, в  каком  режиме
         находится ПАРАДОКС:
         VIEW "orders"
         WHILE True
         WAIT RECORD
           PROMPT "Нажмите [PgUp],для перехода к предыдущей",
           "записи, [PgDn] для перехода к следующей, F7 для",
           "переключения формы, F2 выхода"
           UNTIL -72,-80, "F7", "F2"
           SWITCH
               CASE retval=-72:   ;пользователь нажал [PgUp]
                 IF NOT ATFIRST()
                  THEN
                   IF ISFORMVIEW();мы находимся в режиме про-
               ;смотра формы
                     THEN PGUP ;
                     ELSE UP
                   ENDIF
                   ELSE BEEP
                 ENDIF
                CASE retval="F7"  ;переключение формы


                             - 191 -
                    FORMKEY
                CASE retval="F2"  ;пользователь нажал DO_IT!
                    QUITLOOP
           ENDSWITCH
         ENDWHILE
         Смотрите также команды: DOWN, PGUP, UP.
         
   PGUP  команда  моделирует нажатие клавиши [PgUp].
         Синтаксис:  PGUP
         Действие  команды  PGUP,  как  и  действие  клавиши
         [PGUP] зависит от текущего контекста. Если ПАРАДОКС
         находитися не в подходящем режиме, команда  игнори-
         руется.  Следующая  таблица показывает действие ко-
         манды PGUP в различных режимах ПАРАДОКСА:
                                                            
             Режим ------------------  Действие
                                                            
       Главный, Редактирование,   Перемещает вверх на один
       Совместное редактирова-    экран.
       ние/просмотр таблицы
                                                            
                                                            
       Главный, Редактирование,   Перемещает вверх к преды-
       Совместное редактирова-    дущей записи или форме.
       ние/просмотр формы
         
       Любой режим/Просмотр       Игнорируется.
       поля
                                                            
       Форма                      Игнорируется.
                                                            
                                                            
       Отчет                      Перемещает курсор вверх на
                                  половину экрана.
       Редактор Скриптов          Перемещает курсор вверх на
                                  половину экрана .
         
         Примеры: Пример смотрите в  описании  команды  PGDN
         выше.
         Смотрите также команды: DOWN, PGDN, UP.


                            - 192 -
         
   PICKFORM команда сокращенного меню выбирает заказную фор-
         му и выводит на экран для просмотра.
         Синтаксис: PICKFORM <имя формы>
         Формы для использования обозначаются сдудующим  об-
         разом: "F1","F2"..."F9" или числом от 0 до 9.
         Пример: PICKFORM "3"
         Эквивалентна выбору из меню:
                        MENU{IMAGE}{PICKFORM}{3}
         
   PLAY  команда позволяет вызвать Вам скрипт  как  подпрог-
         рамму внутри текущего скрипта.
         Синтаксис: PLAY <имя скрипта>
         Когда управление возвращается скрипту, игра продол-
         жается со следующей команды. Если вызывающий скрипт
         не существует, регистрируется ошибка.
         Пример:  SETKEY  "F1"  PLAY  "TANN1"; присваивается
                                  ; клавише F1 макро "TANN1"
         
   PRINT команда печатает значения на принтер или в файл.
         
         Синтаксис: PRINT <выражение 1>...<выражение N> или
         PRINT FILE <имя файла><выражение 1>...<выражение N>
         Первая форма команды выводит значения выражений  на
         принтер, вторая - в файл с именем, представленным в
         поле <имя файла>. Значения выводятся последователь-
         но без пробелов. Любая несимвольная величина  авто-
         матически  преобразуется в символ. Вторая форма ко-
         манды присоединяет значения  в  конец  файла.  Если
         файл с таким именем не существует, он автоматически
         создается.  Необходимо  учитывать, что фильтрация и
         обработка контрольных символов не выполняется. Иск-
         лючение составляет символ в ASCII с кодом  255.  Он


                             - 193 -
         выдается как символ NULL (т.е. как ASCII 0). Причи-
         на в том, что NULL символ не может быть представлен
         внутренне  в  строке  PARADOXa.  Последовательность
         "\0" представляется внутри как 255.  Следовательно,
         команда  PRINT "\0" может быть использована для вы-
         вода символа NULL на принтер. ASCII код 255 не  мо-
         жет быть выведен на принтер.
         Пример: PRINT "Here is a  line\n",
                       "Here  is  a  second  line"
                 PRINT  FILE "C:\\sys\\log","Программа регистрирующая
                                    время"
         
   PRINTER ON или OFF команда разрешает или запрещает  вывод
         эха экрана на принтер.
         PRINTER  ON  вызывает последовательный экранный вы-
         вод, использующий ?, ?? или команду TEXT для вывода
         на принтер так же, как и на дисплей.
         PRINTER OFF восстанавливает обычное  значение  этих
         операторов.
         Особенность  команды PRINTER в том, что она полезна
         для записи и отладки.
         

   PRIVTABLES команда запоминает таблицы в личном директории
         пользователя.
         Синтаксис:   PRIVTABLES <Список имен таблиц>
         Описание: При работе в сети, все временные  таблицы
         ПАРАДОКСА, такие как ansver автоматически запомина-
         ются  в принадлежащем пользователю директории, в то
         время как все другие таблицы запоминаются в  дирек-
         тории DOS, в котором они находятся. Внутри ПАРАДОК-
         СА, когда пользователь вызывает листинг содержимого
         директория,  ПАРАДОКС  об'единяет временные таблицы
         из директория пользователя с хранящимися в  текущем
         рабочем директории, таким образом, что пользователь
         даже не предполагает, что его личный директорий был
         использован.


                             - 194 -
         Команда PRIVTABLES позволяет пользователю назначать
         произвольное  число таблиц к которым возможно обра-
         щение, как к временным таблицам ПАРАДОКСА; это  оз-
         начает, что они будут автоматически записаны в лич-
         ный директорий пользователя и об'единены с таблица-
         ми,  хранящимися  в  рабочем  директории при выдаче
         листинга директория в ПАРАДОКСЕ.
         Использование: Команда PRIVTABLES очень полезна для
         таблиц, которые будут использоваться как  временные
         в  многопользовательских  приложениях.  Так  как Вы
         об'являете эти таблицы своими личными, Вам нет  не-
         обходимости беспокоиться о содержании ее среди дру-
         гих пользователей.
         Примеры:  Следующй фрагмент делает таблицы orders и
         stock личными таблицами пользователя:
         
               PRIVTABLES "orders","stock"
         
         Смотрите также описание личных директориев в  книге
         "Руководство пользователя по системе ПАРАДОКС".
         
   PROC команда PROC обьявляет процедуру пользователя с  оп-
         ределенным  именем и имеющую обьявленные параметры,
         частные переменные и т.п.
         Синтаксис:
         PROC <имя процедуры> (<формальные  параметры>)
              <>>
              <команда 1>
              ...
              <команда N>
         ENDPROC
         Пример: следующий пример берет имя таблицы, имя по-
         ля  и данные значения как аргументы, и выдает T или
         F в зависимости от того, содержится или нет  запись
         данной таблицы, содержащая данное значение в данном
         поле. PROC VALUE_EXISTS (tab,fld,val)


                             - 195 -
           VIEW tab   ;вывод таблицы в поле
           MENU {IMAGE}{GOTO}{FIELD};перевод к данному полю
           SELECT fld ;окончательный выбор меню по данному полю
           LOCATE val ;смотрим, есть ли val
           CLEAR IMAGE;очистить образ
           RETURN retval ; установить T, если LOCATE успешно
         ENDPROC
         
   PROMPT команда помещает сообщение ПАРАДОКСА в две верхние
         строки экрана.
         Синтаксис: PROMPT <<сообщение1,сообщение2>>,
         где сообщение1 и сообщение2-строковые выражения.
         Описание: Команда PROMPT позволяет Вам заказать со-
         общение, высвечиваемое в верхних двух строках рабо-
         чего пространства ПАРАДОКСА. Сообщение, определяемое
         командой  PROMPT  появляется на экране только в том
         случае, когда включен режим ECHO NORMAL,  FAST  или
         SLOW. Сообщение появляется также в том случае, если
         в этот момент на экране нет Меню ПАРАДОКСА.
         Команда PROMPT без аргументов используется в скрип-
         те для отмены определенных Вами выше сообщений; она
         передает управление показом сообщений ПАРАДОКСУ.
         
         Смотрите    также   команды   SHOWMENU,   SHOWARRAY,
         SHOWTABLES, SHOWFILES.
         
   PROTECT   команда   защиты  таблицы  используется,  когда
         PARADOX находится в программном режиме.
         Синтаксис: PROTECT <имя таблицы><пароль>
         Команда используется внутри скрипта для того, чтобы
         представить пароль таблицы защищенным использовани-
         ем PROTECT. Скрипт не может быть защищен  использо-
         ванием  этой  командой из сокращенного меню, однако
         он может быть защищен, если вы  сделаете  выбор  из
         меню TOOLS. Пример: PROTECT "orders" "Tann" Эквива-
         лентна         следующей        последовательности.
         MENU{TOOLS}{MORE}{PROTECT}{PASSWORD}{TABLE}{orders}
             {Tann}


                             - 196 -
         
   QUERY команда помещает запрос в рабочую область.
         Синтаксис: QUERY  ENDQUERY
         Где   состоит из одной или более форм запро-
         сов в форме, представленной выбором  меню  PARADOXa
         QUERYSAVE.
         Эта  команда  фактически  не выполняет определенный
         запрос, а только помещает его  в  рабочую  область.
         Следующая за командой QUERY команда DO_IT! вызывает
         выполнение запроса.
         Наиболее  легкий  путь использования этой команды в
         компановке описанных запросов в PARADOXе,  а  затем
         сохранением их в скрипте использованием возможности
         QUERYSAVE в меню. Спасенный запрос может затем быть
         отыскан  и  вставлен  в  вашу  программу  из SCRIPT
         EDITOR. Переменные PALa могут быть доступны в  зап-
         росе, если перед именем переменной поставить тильду
         (~).  Заметим, что контролируемые поля обозначаются
         ключевым словом CHECK или CHECKPLUS, и что  элемен-
         там примера предшествует знак (~).
         Пример: Следующий скрипт просматривает запись  таб-
         лицы  cust  для заказчика, чье имя храниться в поле
         Name.
         QUERY
           CUST: Name :
         Пример: Следующий скрипт просматривает запись  таб-
         лицы  cust  для заказчика, чье имя храниться в поле
         Name.
         QUERY
           CUST: Name :
           find:~Name :
         ENDQUERY
         DO_IT!                   ;исполняем это
         IF (ISEMPTY("answer"))   ;ничего не создавать
            THEN MESSAGE Name "Не найдено"
             ELSE
             FORMKEY              ;войти в форму


                             - 197 -
              WAIT RECORD         ;разрешаем пользователю
                                  ;проверить запись
              MESSAGE "Нажмите F2"
              UNTIL "F2"
         ENDIF
         
   QUIT  команда  завершает игру скрипта и передает управле-
         ние PARADOXу.
         Синтаксис: QUIT <сообщение>
         Если присутствует  выражение  <сообщение>,  то  его
         значение высвечивается в правом нижнем углу экрана.
         Заметим, что использование QUIT возвращает управле-
         ние PARADOXy, даже если игра скрипта была инициали-
         зирована из DOS. Если после работы скрипта Вы хоти-
         те вернуться в DOS, используйте команду EXIT сокра-
         щенного меню. Пример: QUIT "Программа закончила ра-
         боту"
         
   QUITLOOP  команда  вызывает  выход  из самого внутреннего
         цикла WHILE или SCAN.
         Синтаксис:  QUITLOOP
         Попытка выполнить QUITLOOP вне цикла вызывает ошиб-
         ку.
         Пример: В следующем примере переменная "unn"  уста-
         навливается  равной True или False в зависимости от
         того, имеет ли массив A неопределенные элементы.
         unn=FALSE
           i=1
           WHILE i<=ARRAYSISE(A)
             IF NOT (ISASSINGED(A[i]))
                THEN
                 unn=TRUE
                 QUITLOOP
                ELSE
                 i=i+1
             ENDIF
           ENDFILE


                             - 198 -
         
   READLIB команда позволяет сделать  доступными  процедуры,
         хранящиеся в библиотеке.
         Синтаксис: READLIB  <имя  библиотеки><имя  процеду-
         ры1>...<имя процедуры N>
         Процедура  считывается посрадством READLIB, а аргу-
         менты,   заключенные  в  круглые  скобки,  являются
         частью параметра <имя процедуры> и переходят в про-
         цедуру.
         Пример: READLIB "accounts" III, FFF, OOO
         
   REFRESH  команда  моделирует   нажатие   клавиш   REFRESH
         [Alt][R],  и  модифицирует  изображение  в  рабочем
         пространстве.
         Синтаксис: REFRESH
         Описание: Команда модифицирует все изображения, на-
         ходящиеся в рабочем пространстве. Для  того,  чтобы
         использовать команду REFRESH, ПАРАДОКС должен нахо-
         диться либо в Главном режиме, либо в режиме  Редак-
         тирования,  либо Совместного редактирования. В дру-
         гих контекстах команда игнорируется.
         Когда включен режим автообновления, рабочее  прост-
         ранство  обновляется  автоматически, через установ-
         ленные интервалы. ПАРАДОКС будет автоматически  об-
         новлять  рабочее  пространство,  всякий раз как это
         будет необходимо. Заметим, что только рабочее прос-
         транство обновляется ПАРАДОКСОМ. Данные, находящие-
         ся в канве ПАЛА  не  обновляется  автоматически,  а
         должны  модифицироваться  определенным  образом при
         помощи  приложения.  Смотрите  книгу   "Руководство
         пользователя по системе ПАРАДОКС" для более деталь-
         ного рассмотрения вопроса об обновлении экрана.
         Версия: Команда  была введена в ПАРАДОКС версии 2.0.
     


                             - 199 -
    RELEASE команда освобождает память от используемых  пере-
         менных, массивов и процедур.
         Синтаксис:
              RELEASE PROCS <имя проц.1>...<имя проц.N>  или
              RELEASE PROCS ALL  или
              RELEASE VARS <имя перем.1>...<имя перем.N> или
              RELEASE VARS ALL
         RELEASE PROCS отменяет обьявленные процедуры и воз-
         вращает память, которую они занимают, в  общую  па-
         мять.  Будьте осторожны при выполнении этой команды
         внутри  вызванной  процедуры!   Если   используется
         RELEASE  PROCS ALL, все текущие определенные проце-
         дуры будут освобождены от их операций. RELEASE VARS
         переобозначает переменные и массивы, представленные
         в списке аргументов, возвращая  память,  занимаемую
         ими  в общую память. Если используется RELEASE VARS
         ALL все переменные и массивы  освобождаются.  Заме-
         тим, что RELEASE VARS применимо только к глобальным
         переменным  и массивам. Память для частных перемен-
         ных и массивов и для формальных  параметров  проце-
         дур, автоматически освобождаются при  передачи  уп-
         равления  другой процедуре.
         Пример: Эти команды полезны для больших приложений,
         в  которых не все процедуры и/или переменные загру-
         жаются в память. Такие приложения обычно управляют-
         ся из главного меню внутри цикла.  Помещая  RELEASE
         PROCS  в начале цикла, вы можете освободить память,
         используемую до начала данного цикла. WHILE (TRUE)
         ; цикл
             RELEASE PROCS ALL ; освоб. памяти от процедур
             RELEASE VARS ALL  ; освоб. памяти от переменных
             SHOWMENU
                     "AP":"ACCOUNTS PAYABLE"
                     "AR":"ACCOUNTS RECEIVABLE"
                     "EXIT":"APPLICATION EXIT"
                 TO CHOICE
             SWITCH                  ; ветвь выбора
                 CASE CHOICE = "AP"
                   PLAY "AP_DEFS"    ; проиграть AP
                   AP()              ; вызов главной проц.


                             - 100 -
                 CASE CHOICE = "AR"
                   PLAY "AR_DEFS"    ; проиграть AR
                   AR()              ; вызов главной проц.
                 OTHERWISE : QUIT
             ENDSWITCH
         ENDWHILE
                                                           
   RENAME команда сокращенного меню, которая переименовывает
         таблицы, и в связи с этим переименовываются все
         формы, индексы и другие обьекты.
         Синтаксис: RENAME <старое имя> <новое имя>
         Если таблицы со старым именем не существует, то вы-
         дается ошибка. Если таблица с новым именем  сущест-
         вует,  то  все данные, содержащиеся в этой таблице,
         будут уничтожены без предупреждения,  какое  выдает
         PARADOX.  Пример:  присвоение  нового имени таблице
         "orders"
           RENAME "orders" "req"
         Если  таблица  "req" уже существует, то это эквива-
         лентно:
         MENU{TOOLS}{RENAME}{TABLE}{orders}{req}{REPLACE}
         Усли таблице "rec" не существует то:
         MENU{TOOLS}{RENAME}{TABLE}{orders}{req}
         
   REPORT  команда  сокращенного меню, которая выводит отчет
         на принтер.
         Синтаксис: REPORT <имя таблицы><имя отчете>
         Эта команда вызывает генератор отчетов  PARADOXa  и
         приводит в готовность отчет для названной таблицы к
         выводу на печать.
         Значение  <имя отчета> должно быть одним из выраже-
         ний последовательности "R","1","2",..."9" или целое
         число от 1 до 9. При этом  PARADOX  должен  быть  в
         состоянии MAIN.
         Пример: Если значение переменной r равно 1, то
         REPORT "orders" r
         MENU{REPORT}{OUTPUT}{orders}{1}{PRINTER}


                             - 201 -
         
    REQUIREDCHECK команда включает и выключает режим ограни-
         чения целостности.
         Синтаксис:  REQUIREDCHECK 
         Описание:  Команда включает или выключает режим ог-
         раничения целостности для нужных полей всех таблиц,
         находящихся в рабочем пространстве.  Команда  очень
         полезна  в  том случае, когда приложению необходимо
         выйти из поля без ввода в него значения.  Например,
         если требуется поле CustID из таблицы orders и так-
         же поле справочной таблицы  customer,  пользователь
         может  выйти из поля, если заказчик еще не указан в
         таблице customer.
         Команда REQUIREDCHECK не  может  быть  использована
         для  установки  ограничения целостности для таблицы
         или поля, а  только  для  изменения  установленного
         контроля.
         Использование:  Ограничение  целостности поля усто-
         навливаются при помощи услуги ValCheck/Required  из
         меню  Редактора  или  меню  Ввода данных. Установка
         ограничения целостности поля означает,  что  курсор
         попав  в поле , не может выйти из него, пока не бу-
         дет введена требуемая величина. Если требуется вый-
         ти из поля не заполняя его, то перед этим необходи-
         мо использользовать команду  REQUIREDCHECK  OF  для
         запрещения  ограничения  целостности.  Не забывайте
         после того как отпадет необходимость в этом исполь-
         зовать команду REQUIREDCHECK ON.
         Версия: Команда была введена в ПАРАДОКС версии 2.0.
         Примеры:  Предположим,  что  первое  поле   таблицы
         orders  есть  CustID.  Это ключевое поле может быть
         заполнено только правильным номером  заказчика.  Вы
         хотите  представить  эту таблицу в режиме просмотра
         формы  командой  WAIT. Следующий фрагмент программы
         работать не будет:
              
               EDIT "orders" ;таблица в рабочем пространстве
               FORMKEY       ;нельзя переключать Форму!


                             - 202 -
         Причина этого кроется в следующем: когда Вы  первый
         раз  высвечиваете  таблицу в режиме редактирования,
         курсор находится в первом поле первой записи.  Если
         это  поле  c ограничением целостности, Вы не можете
         использовать команду  FORMKEY  или  нажать  клавишу
         [F7] не введя правильное значение в это поле.  Поэ-
         тому Вы должны поступить следующим образом:
         
              EDIT "orders"
              REQUIREDCHECK OFF ;выключение ограничения цело-
                                ;стности
              FORMKEY
              REQUIREDCHECK ON
              WAIT TABLE PROMPT "Нажмите F2"
                 UNTIL "F2"
        
   RESET  команда возвращает PARADOX в состояние MAIN и очи-
         щает рабочую область.
         Синтаксис: RESET
         Команда завершает любое работающее состояние, такое
         как EDIT или REPORT, возвращает PARADOX в состояние
         MAIN и стирает все из рабочей области.
         Это полезно для получения чистых системных  состоя-
         ний  в начале игры скрипта, независимо от того, что
         пользователь делал, когда игра скрипта  инициализи-
         ровалась. Этой командой не затрагиваются существую-
         щие  определения  процедур.  Для  очистки памяти от
         процедур и переменных используйте команду RELEASE.
         RESET всегда используется в скрипте перед приглаше-
         нием пользователю сменить floppy диск.
         
   RETURN команда возврата из скрипта или процедуры.
         Синтаксис: RETURN <<значение>>
         Если поле <<значение>> отсутствует,  то  на  строке
         кроме коментариев ничего не должно находиться.
         Если RETURN встречается внутри процедуры, то проце-


                             - 203 -
         дура  завершается.  Если  RETURN встречается внутри
         скрипта, но вне тела процедуры, скрипт завершается.
         Произвольные значения выражений могут быть  исполь-
         зованы  для  возвращения как из процедуры, так и из
         скриптов. Если процедура вызывается в контексте вы-
         ражением, таким как
             y=foo(x)+3  ; foo - процедура,
         то возвращенное значение есть значение вызова  про-
         цедуры. Процедура, вызванная в контексте выражения,
         должна вычислять значения. Если процедура вызывает-
         ся в автономном контексте, таком как
            foo(x)  ; вызов foo,
         то вычисленное значение игнорируется.
         Если  вычисленное значение возвращается из скрипта,
         то значение высвечивается в окне сообщений PARADOXa
         в правом нижнем углу экрана. Эта особенность полез-
         на для скриптов, которые просто подсчитывают значе-
         ния. Заметим, что любой ввод/вывод на  канву  PALa,
         естественно  стирается, когда игра скрипта заканчи-
         вается. Команда RETURN-исключение из этого правила.
         Побочное  действие  любого исполнения RETURN в том,
         что глобальной переменной retval присваивается  вы-
         численное значение.
         Пример:  Следующая  процедура вычисляет код zip за-
         казчика из таблицы "cust",или строчки "NONE",  если
         заказчик не был найден.
         PROC getzip(name)
           PRIVATE zip
           VIEW "cust"            ; просмотр таблицы
             MOVETO [Name]        ; переход к полю Name
             LOCATE name          ; поиск записи
              IF (retval)         ; была найдена
               THEN zip=[zipCODE] ; присвоение zip кода поля
               ELSE zip "NONE"
              ENDIF
           CLEARIMAGE             ; очистка рабочей области
        ENDPROC


                             - 204 -
         Cледующий cкрипт принимает значение имени от  поль-
         зователя,  вызывает вышеописанную процедуру для по-
         лучения кода zip, затем вычисляет,  высвечивая  код
         zip в окне сообщений. CLEAR
         @10,10 ?? " Введите имя"
         ACCEPT "A30" to name
         RETURN getzip(name)
         
   REVERSETAB     команда    моделирует    нажатие    клавиш
         [Shift][Tab]. Она перемещает курсор  к  предыдущему
         полю изображения.
         Синтаксис: REVERSETAB
         Описание:  Команда  перемещает курсор к предыдущему
         полю таблицы или изображению запроса.  Если  курсор
         находится не в изображении, то команда игнорируется.
         Следующая   таблица   описывает   действие  команды
         REVERSETAB в различных режимах ПАРАДОКСА.
         
             Режим ------------------  Действие
                                                                                                                                                                                                                                                              
 
       Главный, Редактирование,     Перемещает курсор к пре-
       Совместное редактирова-      дыдущему полю в изобра-
       ние                          жении (запроса или таб-
                                    лицы, или формы)
         
       Любой режим/Просмотр         Нет действия
       поля
                                                                                                                                                                                                                                                              
 
       Форма                        Нет действия
         
       Отчет                        Перемещает к предыдущему
                                    полю в границах таблицы
         
       Редактор скриптов            Нет действия
         
         Смотрите также команду TAB.
         


                             - 205 -
   RIGHT команда  моделирует нажатие клавиши [стрелка вправо].
         Синтаксис:  RIGHT
         Действие команды  RIGHT,  как  и  действие  клавиши
         [стрелка вправо] зависит от текущего контекста.Если
         ПАРАДОКС находитися не в подходящем режиме, команда
         игнорируется. Следующая таблица показывает действие
         команды RIGHT в различных режимах ПАРАДОКСА:
         
             Режим ------------------  Действие
        
       Главный, Редактирование,    Перемещает курсор на  одно
       Совместное редактирова-     поле вправо внутри изобра-
       ние                         жения
       Любой режим/Просмотр        Перемещает  курсор  вправо
       поля                        на один символ.
       Форма                       Перемещает  курсор  вправо
                                   на один символ.
       Отчет                       Перемещает  курсор  вправо
                                   на один символ.
       Скрипт                      Перемещает  курсор  вправо
                                   на один символ.
                                               
         Когда курсор находится в последнем  поле  записи  в
         изображении  в  рабочем пространстве, команда RIGHT
         переносит курсор к первому полю следующей записи.
         Смотрите также команду LEFT.
         
   ROTATE  моделирует нажатие клавиш [Ctrl] [R]. Она вращает
         поля вправо.
         Синтаксис: ROTATE
         Описание: Команда ROTATE  перемещает  текущее  поле
         изображения  в режиме просмотра таблицы или запроса
         вправо.  Поле  или колонка ,являющиеся крайним пра-
         вым, перемещается на место первого. В  других  кон-
         текстах команда игнорируется.
         Использование: Аналогично команде FIRSTSHOW, ROTATE
         размещает  таблицу в форме, удобной для Вашего при-
         ложения.
         Смотрите также команду FIRSTSHOW.


                             - 206 -
         
   RUN выполняет команды DOS из PARADOXa. Эта команда выходит
         в  DOS  и выполняет командную линию, представленную
         значением строкового выражения в команде.
         Синтаксис: RUN <<> <команды>>
         Вы можете запустить произвольную команду DOS, такую
         как DIR, RENAME и MKDIR. Вы также можете  запустить
         любые правильные .COM, .EXE и BAT файлы.
         Состояние PARADOXa запоминается, и после исполнения
         команды RUN  скрипт  возвращается  к  следующей  за
         командой  RUN команде. После завершения команды RUN
         состояние экрана восстанавливается, и игра  скрипта
         продолжается.  Выбор  SLEEP  приводит  к  задержке,
         которая    определяется   количеством   миллисекунд
         (тысячные доли секунд)  перед  возобновлением  игры
         скрипта. Значение в поле  должно быть
         целым  числом  из  интервала  от  0  до 30000. Т.о.
         задержка  может  быть  получена  до  30  секунд.  В
         системах с двумя дисководами, если файл COMMAND.COM
         не находится на носителе A, то перед любой командой
         RUN,  пользователю  будет предложено вставить диск,
         содержащий этот файл. В системах с  жестким  диском
         параметры  DOS comspec используются для обнаружения
         COMMAND.COM. Пример: следующий  пример  высвечивает
         директорий  для драйвера A и делает паузу, чтобы вы
         успели с ним ознакомиться. RUN SLLEP 2000 "DIR A"
         
   SAVEVARS команда сохраняет состояние  определенных  пере-
         менных  и  массивов в скрипте, когда его необходимо
         проиграть позже.
         Синтаксис: SAVEVARS <имя перем.1>...<имя перем.n>
              или   SAVEVARS ALL
         Эта команда полезна для сохранения текущих значений
         переменных и массивов в файл, называемый  sevevars.
         Текущие значения переменных и массивов, перечислен-


                             - 207 -
         ных в команде, храняться в форме оператора присваи-
         вания, так что в последующей игре скрипта  savevars
         вызывает  значения  для  восстановления.  Операторы
         присваивания записывают значения только для тех пе-
         ременных и элементов массивов которые определены  в
         команде.
         Заметим, что SAVEVARS может  быть  использован  для
         сохранения  текущих  значений  частных  переменных,
         включая  формальные  параметры процедур и массивов.
         Если эта команда вызывается из той части контекста,
         где определены частные переменные или  массивы,  то
         записываются  частные  значения,  в  противном слу-
         чае используются глобальные значения.
         Команда SAVEVARS сохраняет значения системной пере-
         менной  retval. Команда SAVEVARS полезна для отлад-
         ки. Пример: Если x имеет  значение  3,  y=4,  z="Hi
         there", то команда:
           SAVEVARS x,y,z
         вызовет скрипт savevars для записи на диск перемен-
         ных: x=3, y=4, z="Hi there".
         
   SCAN команда шагает сквозь таблицу,  выполняя  последова-
         тельность команд для каждой записи.
         Синтаксис: SCAN <<логическое выражение><после-
                         довательность команд>
                    ENDSCAN
         Эта команда сканирует таблицу текущего изображения,
         выполняя  последовательность команд, представленных
         в поле <последовательность команд> для каждой запи-
         си.
         Если вы используете последовательность FOR, то пос-
         ледовательность команд выполняется только  для  тех
         записей, которые удовлетворяют условиям в поле <ло-
         гическое выражение>. Если таблица пустая, то скани-
         рование не происходит.
         Сканирование всегда начинается с первой записи таб-
         лицы  вне зависимости от того, какая текущая запись


                             - 208 -
         вызывается.  Если  сканирование  не   заканчивается
         преждевременно,  то  последняя запись таблицы будет
         текущей в конце процесса сканирования. Команды LOOP
         и QUITLOOP могут быть использованы в  теле  команды
         SCAN.  Команда LOOP вызовет пропуск тех команд, ко-
         торые находятся между ней и ENDSCAN (так, что конт-
         роль возвращается к вершине цикла SCAN), в то время
         как QUITLOOP заканчивает  SCAN  в  целом,  оставляя
         последнюю  сканируемую  запись  в канве текущей за-
         писью образа. Пример: В следующем примере  сканиру-
         ется  таблица и высвечивается каждое не пустое зна-
         чение в окне сообщений. SCAN FOR NOT ISBLANK ([])
           MESSAGE []   ; высветить текущее значение поля
           SLEEP 500    ; задержать изображение для просмотра
         ENDSCAN
         
    SELECT команда воспроизводит  сделанный  выбор  из  меню
         PARADOXa.
         Синтаксис: SELECT <выражение>
         Эта  команда  позволяет  вам  сделать выбор из меню
         PARADOXa, описанный в поле <выражение>. Этот  выбор
         аналогичен  выбору  из  меню, записанному в фигурных
         скобках.
         Пример: MENU
                 SELECT "VIEW"
                 SELECT "orders"
         Производит такое же действие, как:
         MENU{VIEW}{orders}
         Если Вы хотите получить перечень всех файлов  опре-
         деленного директория, такого  как  \KEN,  Вы  могли
         сделать выбор:
           MENU {TOOLS}{INFO}{INVENTORY}{FILES}{\\KEN\\*.*}
         Однако,  если вы хотели сделать это для директория,
         чье имя храниться в переменной dir, вам  необходимо
         будет набрать:
           MENU {TOOLS}{INFO}{INVENTOR}{FILES]
           SELECT dir + "*.*"
         (Cмотрите KEYPRESS, TYPEIN)


                             - 209 -
       
   SETDIR  команда  сокращенного меню, которая позволяет Вам
         сменить рабочий носитель, директорий  или  и  то  и
         другое.
         Синтаксис: SETDIR 
         Поле   - строковое выражение, которое опреде-
         ляет путь доступа DOS. Команда  позволяет  изменить
         рабочий    драйвер   и   директорий,   используемый
         PARADOXом.  Перед  использованием  команды   SETDIR
         PARADOX должен находиться в состоянии MAIN.
         Команда  SETDIR очищает рабочую область, уничтожает
         все временные таблицы PARADOXa из памяти,  а  затем
         меняет директорий, драйвер или и то и другое. Заме-
         тим,  что  если строка  в кавычках, то символ
         "\",  появляющийся внутри строки, должен быть двой-
         ным! (Смотрите "Backslashe and Special  Characters"
                     
         Пример:  SETDIR  "A:\\DEMO" Эквивалентна следующему
         записанному                                скрипту:
         MENU{TOOLS}{MORE}{DIRECTORY}{A:\\DEMO\\}{OK}
         
   SETKEY команда определяет макроклавишу, то есть  присваи-
         вает последовательности команд клавише. Также унич-
         тожает и заново переопределяет макроклавиши.
         Синтаксис: SETKEY <команды>
         Поле   является выражением клавишного кода
         в PALе, которой присваивается макрозначение. Поле
         <команды> содержит последовательность команд, кото-
         рая  присваивается  клавише. Последовательность ко-
         манд называется "макроклавиатурой". Выражения  кла-
         вишных  кодов включает ASCII коды, строчки, которые
         представляют собой названия  функциональных  клавиш
         (такие  как  "F1"),  специальные клавиши (такие как
         "MENU") или печатные символы (такие как "Q").
         Последовательность команд, текст которых  находится
         на одной строке, составляет тело макро. Если Вы за-


                             - 210 -
         хотите определить макро с количеством команд больше
         одной  строки,  запишите  их в файл-скрипт, и тогда
         тело макро будет состоять из единственной  команды,
         которая вызывает этот файл. Если макро уже  опреде-
         лено,  то  старое заменяется новым. Макроклавиатура
         вызывается только тогда, когда пользователь работа-
         ет  непосредственно  в PARADOXе. Ее нельзя вызывать
         командами, находящимися в скриптах.  скриптах.  Они
         также  запрещены,  когда активно меню PALa.
         Пример:
         SETKEY "F5" MENU VIEW "orders";высветить
                   таблицу "orders" при нажатии клавиши "F5"
         Пример:
                 SETKEY  "F5"  ;  возвратить старое  название
                               ;  клавиши "F5"
         Пример:
                 SETKEY "Т" MENU ; сделать Т вызовом меню
         
   SETMAXSIZE команда устанавливает максимальный размер таб-
         лицы.
         Синтаксис: SETMAXSIZE <Число>,
         где <Число> это 64, 128, 192, или 256 мегабайт.
         Описание:  команда  SETMAXSIZE позволяет установить
         максимальный размер таблицы, который будет  исполь-
         зоваться  в текущем сеансе ПАРАДОКСа. По умолчанию,
         максимальный размер равен 64 мегабайт.
         Размер таблицы нужно устанавливать осторожно,  т.к.
         команда  SETMAXSIZE меняет размер внутреннего блока
         ПАРАДОКСа, использующегося  в  таблицах.  Запись  в
         таблицу  с  другим размером блока (чем определенный
         при создании) может привести к потере информации.
         Таким образом, если Вы будете использовать  таблицы
         больше   64   мегабайт,   нужно  выполнить  команду
         SETMAXSIZE в программе init, чтобы установить новый
         размер блока. Вам нужно также убедиться, что другие
         пользователи таблицы включили команду SETMAXSIZE  в
         свои программы init.


                             - 211 -
         
   SETPRINTER команда устанавливает порт для принтера.
         Синтаксис:   SETPRINTER <имя принтера>,
         где  <имя  принтера>  - строка, содержащая названия
         LPT1, LPT2, LPT3, COM1 или COM2.
         Описание: Команда SETPRINTER, как  и  эквивалентная
         услуга   REPORT/SetPrinter/Override  позволяет  Вам
         указать, какой порт нужно закрепить  за  принтером.
         По  умолчанию за принтером закреплен порт LPT1. ко-
         манда SETPRINTER изменяет назначение  порта  выдачи
         на  печать  для команд REPORT, PRINT и PRINTER; она
         также управляет устройствами, к которым  обращаются
         команды OPEN PRINTER и CLOSE PRINTER.
         
         Версия:  Команда  SETPRINTER  добавлена в ПАРАДОКСе
         версии 2.0.
         Пример: SETPRINTER "Com1".
         Смотрите  также  команды   PRINT,   PRINTER,   OPEN
         PRINTER, CLOSE PRINTER.
         
   SETPRIVDIR  команда  устанавливает частный директорий для
         текущего сеанса. Синтаксис: SETPRIVDIR <имя  дирек-
         тория>
         Описание:  Команда  SETPRIVDIR, как и эквивалентная
         команда Tools/Net/Private устанавливает частный ди-
         ректорий пользователя для текущего сеанса. При  ра-
         боте в сетевом режиме, частный директорий использу-
         ется  для хранения временных таблиц ПАРАДОКСа и тех
         таблий, которые  назначаются  командой  PRIVTABLES.
         Частный директорий обычно прозрачен для пользовате-
         ля, который считает, что временные таблицы находят-
         ся  в рабочем директории, команда SETPRIVDIR не из-
         меняет текущий директорий ПАРАДОКСа.
         Директорий, указанный в команде SETPRIVDIR  переоп-
         ределяет  частный директорий, указанный через прог-
         рамму установки параметров  ПАРАДОКСа.  При  вызове
         SETPRIVDIR,  ПАРАДОКС  должен  находиться в главном
         режиме.


                             - 212 -
         Использование: Если  Имя  директория  описано,  как
         путь  доступа,  обратные косые черточки должны быть
         парными.
         Более подробно об услуге Tools/Net/SetPrivate смот-
         рите в Главе 12 (Средства) в "Руководстве пользова-
         теля по ПАРАДОКСу".
         
         
         Версия: SETPRIVDIR добавлена в ПАРАДОКСе версии 2.0.
         Примеры: SETPRIVDIR "C:\\paradox2\\"
         эквивалентно
         Menu {Tools}{Net}{SetPrivate}{C:\\Paradox2\\}
         Смотрите также:
         - PRIVDIR, глава 17;
         - Описание услуги Tools/Net/SetPrivate в "Руководст-
         ве пользователя по ПАРАДОКСу".
         
   SETRETRYPERIOD  команда устанавливает период автоматичес-
         кого повтора.
         Синтаксис: SETRETRYPERIOD <число>,
         где <число> - целое между 0 и 30.000, которое обоз-
         начает длительность периода повтора в секундах.
         Описание: При работе в сетевом режиме, если  прило-
         жение  не может получить доступ к некоторому ресур-
         су, блокированному другим  пользователем,  ПАРАДОКС
         автоматически делает попытки повторного доступа че-
         рез  промежутки  времени,  установленные  в периоде
         повторения. По умолчанию, период повтора  равен  0.
         Команда SETRETRYPERIOD позволяет изменить этот вре-
         менной интервал.
         Период повтора может быть установлен от 0 до 30.000
         секунд  (что составит приблизительно 8 часов 20 ми-
         нут). Если период повтора равен 0, повторные попыт-
         ки не делаются.
         Использование: В режиме автоматического повтора уп-
         равление передается ПАРАДОКСу. Управление передает-


                             - 213 -
         ся пользователю в конце периода, или если требуемый
         ресурс стал доступен.
         Если Вы изменяете период повтора в приложении,  Вам
         нужно узнать текущее значение периода повтора с по-
         мощью  функций RETRYPERIOD и сохранить это значение
         в переменной. В этом случае первоначальное значение
         периода повтора может быть  восстановлено  в  конце
         приложения.
         Если  для  приложения некритично время ожидания ре-
         сурса (например, при пакетном режиме в сети ночью),
         Вы можете установить период повтора очень большим.
         Версия: SETRETRYPERIOD добавлен в  ПАРАДОКС  версии
         2.0.
         Примеры: rtp = RETRYPERIOD ; сократить текущее зна-
         чение в переменной
         SETRETRYPERIOD 60 ; если ресурс недоступен, попыта-
                             емся еще раз через минуту
               ; здесь находятся остальные строки приложения
               
         SETRETRYPERIOD rtp ; восстановление прежнего режима
                              повтора
         Смотрите также команду RETRYPERIOD;
         
   SETSWAP команда устанавливает минимальный  объем  памяти,
         используемый  для своппинга процедур из оперативной
         памяти.
         Синтаксис: SETSWAP <число>,
         где <число> - число, обозначающее  объем  памяти  в
         байтах.
         Описание:  Команда SETSWAP используется для измене-
         ния минимального объема оперативной памяти, который
         ПАРАДОКС использует для  автоматического  своппинга
         процедур из памяти.
         Обычно,  ПАРАДОКС  не  начинает операций своппинга,
         пока функция MEMLEFT не выдает значения, равного 0.
         С помощью SETSWAP Вы можете  иметь  гарантированный
         минимальный  объем  памяти  для  образов приложения


                             - 214 -
         (приблизительно 2 килобайта на образ) и переменных.
         Параметр команды определяет количество  оперативной
         памяти  в  байтах,  которое Вы хотите запустить для
         своппинга.  Например,  SETSWAP  10000,  приводит  к
         своппингу,  если MEMLEFT возвращает объем свободной
         памяти 10000 байтов.
         Использование: Поскольку ПАРАДОКС автоматически уп-
         равляет ресурсами памяти,  в  большинстве  приложе-
         ний,Вам  не нужно использовать SETSWAP. Подробнее о
         том, как управлять ресурсами и повысить  производи-
         тельность ПАРАДОКСа, см. в главе
         Версия: SETSWAP добавлена в ПАРАДОКС версии 2.0.
         Пример: SETSWAP 12000.
         
   SETUSERNAME команда устанавливает текущее имя пользовате-
         ля.
         Синтаксис: SETUSERNAME <имя>,
         где <имя> - любая строка до 15 символов длиной.
         Описание:  Команда SETUSERNAME, как и эквивалентная
         команда Tools/Net/UserName  назначает  пользователю
         имя. Это имя ПАРАДОКС использует для извещения дру-
         гих  пользователей,  устанавливающих  блокировки на
         сетевых объектах. Команда SETUSERNAME  переписывает
         любое  имя пользователя, установленное сетевой опе-
         рационной системой или программой определения пара-
         метров ПАРАДОКСа.
         Версия: SETUSERNAME введена в ПАРАДОКС версии 2.0.
         Смотрите  также:
         - Tools/Net/UserName  в  Главе  12(Средства)
         "Руководства пользователя по ПАРАДОКСу".
         -  Описание  многопользовательского доступа в Главе
         17 (управление многопользовательскими приложениями).
         
   SHOWARRAY команда создает меню в системе ПАРАДОКСа на ос-
         нове двух массивов.
         Синтаксис: SHOWARRAY <Массив1 Массив2>
                    <>
                     TO <Переменная>,


                             - 215 -
         где Массив1 состоит из строк Выбора, которые высве-
         чиваются в первой строке экрана, и Массив2  состоит
         из строк пояснений, выдаваемых во второй строке эк-
         рана.
         Описание: Команда SHOWARRAY генерирует меню в стиле
         ПАРАДОКСа  в первой строке экрана, используя значе-
         ния, хранящиеся в двух массивах. Затем она передает
         управление пользователю, который выбирает  из  меню
         нужную услугу. Выбранная услуга заносится в строко-
         вую переменную VarName, после чего управление пере-
         дается программе.
         Массив1  состоит из имен выборов меню, выдаваемых в
         первой строке, а Массив2 состоит  из  пояснительных
         строк, выдаваемых во второй строке при выборе услу-
         ги.
         Кроме  того,  Вы можете использовать акцию DEPAULT,
         чтобы определить текущую услугу при выдаче меню.
         Для того,чтобы выбрать эту услугу, нажмите [Enter].
         Если пользователь нажимает [Esc], управление  пере-
         дается  ПАРАДОКСу,  в  переменную VarName заносится
         код клавиши [Esc], а в переменную RETVAL  заносится
         значение "FALSE".
         Использование:  С  помощью  команды SHOWARRAY можно
         создавать  произвольное  меню.  Поскольку  значения
         массивов  легко изменить в программах, можно созда-
         вать гибкие меню из программ. Например,  с  помощью
         команд SHOWARRAY и COPYTOARRAY, можно создать меню,
         состоящее из текущих строк таблицы.
         С  помощью  команд SHOWARRAY, ACCEPT и SWITCH можно
         создать систему меню в стиле ПАРАДОКСа с любым чис-
         лом уровней. Более подробно о меню в стиле ПАРАДОК-
         Са можно познакомиться в описании команды SHOWMENU.
         Обратите внимание, чтто команда  SHOWARRAY  чустви-
         тельна  к шрифтам, т.е. значение, присвоенное пере-
         менной VarName, начинается с заглавной буквы.  Поэ-
         тому,  будте внимательны при вводе приложений CASE,


                             - 216 -
         чтобы в них использовались те же строки выбора, что
         и в команде SHOWARRAY.
         Версия: Команда SHOWARRAY добавлена в ПАРАДОКС вер-
         сии 2.0.
         Примеры: В этом примере заданы два массива, которые
         затем используются для создания меню:
         Array Item[3]
         Array Expl[3]
         Item[1] = "Первая услуга"
         Item[2] = "Вторая услуга"
         Item[3] = "Третья услуга"
         Expl[1] = "Пояснения к первой услуге"
         Expl[2] = "Пояснения ко второй услуге"
         Expl[3] = "Пояснения к третьей услуге"
         SHOWARRAY
             Item Expl
             DEFAULT Item[1]
         To x
         В следующем примере описана процедура, которая поз-
         воляет передать имена двух произвольных процедур  в
         команду SHOWARRAY.
         PROC Newmenu(arr1, arr2)
         SHOWARRAY
             arr1 arr2
             TO choice
         RETURN choice
         ENDPROC
         
         Смотрите также:
         
         - SWITCH, ACCEPT;
         - Описание меню в Главе 13 (Взаимодействие с поль-
         зователем);
         - SHOWFILES, SHOWMENU, SHOWTABLES.
         


                             - 217 -
   SHOWFILES команда показывает имена файлов в виде меню ПА-
         РАДОКСа.
         Синтаксис: SHOWFILES <><Путь доступа Пригла-
         шение> ТО <Имя переменной>.
         Описание: Команда SHOWFILES генерирует меню в стиле
         ПАРАДОКСа из имен файлов произвольного  директория.
         Меню  выдается в том же формате, что и описание ди-
         ректория, которое  получается,  когда  пользователь
         нажимает  [Enter]  в услуге Tools/Info/Files. Под-
         робнее о меню ПАРАДОКСа смотрите  описание  команды
         SHOWMENU.
         Путь  доступа содержит имя директория и файла и мо-
         жет  включать  макроопределения,  например   "*.*".
         Приглашение  появится  над именами файлов в верхней
         части экрана. Имя файла, выбираемого пользователем,
         записывается в переменную VarName.
         Опция NOEXT может быть использована, чтобы  отде-
         лить  имена  файлов  от расширений имен файлов. Это
         удобно при выборе, например, пограмм ПАРАДОКСа.
         Если ни один файл не удовлетворяет указанному  пути
         доступа,  переменной VarName присваивается значение
         "None". Если пользователь нажимает [Esc] вместо вы-
         бора файла, управление передается ПАРАДОКСу,  пере-
         менной VarName присваивается значение "Esc" и пере-
         менной retval присваивается значение "False".
         Использование:  Если путь доступа задается в кавыч-
         ках, все обратные косые слэши должны быть парными.
         Использование: В примере с помощью команд ACCEPT  и
         SHOWFILES  создаются меню, из которого пользователь
         может выбрать нужный файл.
         SHOWMENU
             "Play" : "Выполнить программу"
             "Exit" : "Выйти из меню"
         TO Choice
         SWITCH
             CASE Choise = "Play":
         ; если пользователь выбрал "Выполнить", используйте
         ; ?? и ACCEPT, чтобы ввести имя программы
         


                             - 218 -
         @0,0 ?? "Программа: "
         @1,0 ?? "Введите имя программы, которую  нужно  вы-
         полнить,  или нажмите [Enter], чтобы высветить спи-
         сок программ"
         @0,8 ACCEPT "A8" TO scrname ; присвоить 8 символов
         IF scrname = "" ; если введено Enter
             THEN SHOWFILES NOEXT ; пользователю нужен  спи-
                                  ;  сок файлов
             "C:\\paradox2\*.sc"  ; из директория Paradox2
             "Выберите имя программы и нажмите [Enter]"
             TO scrname
         ENDIF
         Play scrname
         Case Choise = "Exit" : QUIT
         ENDSWITCH
         Смотрите также:
         - SWITCH, ACCEPT;
         -  Описание меню в Главе 13 (Взаимодействие с поль-
         зователем);
         - SHOWARRAY, SHOWMENU, SHOWTABLES.
         
   SHOWMENU команда создает меню вверху экрана и дает  поль-
         зователю возможность сделать выбор из меню.
         Синтаксис: SHOWMENU <выбор 1>:<подсказка 1>...
                             <выбор N>:<подсказка N>
                      <>> TO <имя переменной>
         При выполнении  этой  команды  PARADOX  высвечивает
         SHOWMENU  в верхней части экрана. Затем, управление
         передается пользователю, который поддерживает инте-
         рактив с меню и делает выбор. Этот выбор присваива-
         ется строковой переменной, название которой опреде-
         ляется полем <имя переменной>. После выбора  управ-
         ление передается опять скрипту.
         Высвеченное  меню представляется значениями выраже-
         ний, представленных в полях <выбор 1>...<выбор  N>,
         во второй строке высвечивается подсказка, представ-
         ленная в полях <подсказка 1><подсказка N>. Вы може-


                             - 219 -
         те  использовать  опцию по "умолчанию" (DEFAULT). В
         этой опции в поле <выбор> содержится та услуга  ме-
         ню,  которая будет отмечена повышенной яркостью при
         появлении меню и вам останется только  поддтвердить
         ее нажатием клавиши [Enter].
         Если  пользователь  нажимает  клавишу [Esc] раньше,
         чем сделает выбор, то интерактивный режим  заверша-
         ется, и значение  Esc  присваивается  переменной  с
         именем,  обозначенным  в  поле  <имя переменной>. В
         комбинации с командой ACCEPT, вы  можете  использо-
         вать  SHOWMENU  для  создания  многоуровниевых  ме-
         ню.(Заметим, что опция DEFAULT позволяет Вам видеть
         выбор в предыдущей услуге, когда вы нажимаете  Esc.
         Пример: Следующий пример создает меню из трех выбо-
         ров: PAY, WASH и IRON SHOWMENU
              "PAR" : "Ввoд пароля",
              "MAR" : "Ввод марки",
              "TAB" : "Ввод таблицы"
            DEFAULT "TAB" TO TT
         SWITCH
              CASE TT= "PAR": PLAY "PAR"
              CASE TT= "MAR": PLAY "MAR"
              CASE TT= "ESC": QUIT
         ENDSWITCH
         
   SLEEP  команда выполняет задержку на указанный промежуток
         времени.
         Синтаксис: SLEEP <миллисекунды>
         Команда вызывает паузу в игре скрипта на  указанное
         число  миллисекунд  в  поле <милисекунды>. Значение
         миллисекунд должно быть целым числом и находиться в
         интервале от 0 до 30000. Следовательно, можно полу-
         чить задержку от 0 до 30 секунд.
         Команда SLEEP полезна для введения искуственной за-
         держки высвеченного изображения  на  экране,  чтобы
         пользователь успел просмотреть сообщения.
         Пример: MESSAGE "Ошибка"
                 SLEEP 1000


                             - 220 -
         
   SORT  команда сокращенного меню, которая производить сор-
         тировку в таблице.
         Синтаксис: SORT <имя таблицы>
                  <<имя поля 1><>...<имя поля n><>
                  < >
         где: <имя таблицы>,<имя  поля  1>,<имя  поля  n>  и
         <имя новой таблицы> - строковые выражения, и n>=1.
         Команда  сокращенного  меню  выбирает  SORT из меню
         PARADOXa, заполняет сортируемую форму, отображая ее
         на экране, и производит сортировку.
         Если  присутствует опция ON, то таблица сортируется
         сначала по полю <имя поля 1>, затем  по  полю  <имя
         поля  2>  и  т.д. Опция ,следующая за выражением
         имени  поля,  обозначает  убывающий  порядок.  Если
         опция ON не определена, записи сортируются по умол-
         чанию слева на право в порядке возрастания.
         Oпция  TO  результат  сортировки записывает в новую
         таблицу с именем, представленным в поле <имя  новой
         таблицы>. Если таблица с таким именем уже существу-
         ет,  то все ее семейство и все данные автоматически
         теряются.
         Если опция TO отсутствует, то результат  сортировки
         записывается  в исходную таблицу имя которой предс-
         тавлено в поле <имя таблицы>.
         Пример:
         SORT "TANN" ; сортировка TANN по всем полям
         
   STYLE команда устанавливает атрибуты для вывода  в  канву
         PALa  символов,  сгенерированных  командой TEXT и ?
         ??.
         Синтаксис: STYLE <опция стиля> или
                    STYLE  ATTRIBUTE <код атрибута> или
                    STYLE
         Команда  STYLE  заставляет  команды TEXT и ? ?? ис-
         пользовать указанные атрибуты экрана.


                             - 221 -
         Первая форма этой команды в поле <опция стиля>, со-
         держит   список  одного  или  более  ключевых  слов
         (REVERSE (обратная видимость), BLINK  (мерцание)  и
         INTENSE(высокая интенсивность)). На цветных монито-
         рах  обратная  видимость  отображается  как голубой
         фон,  а высокая интенсивность - ярко зеленым цветом
         текста. Вторая форма позволяет вам установить любой
         8-ми битовый признак, поддерживаемый  вашей  видео-
         картой  и  монитором.  Признак задается значением в
         поле <код атрибута>, который должен быть целым чис-
         лом от 0 до 255. Третья форма команды STYLE возвра-
         щает стиль к нормальному отображению.  После  уста-
         новки  атрибутов, они остаются таковыми до тех пор,
         пока канва не будет переинициализированна, или пока
         другая команда STYLE не начнет исполняться. Пример:
         STYLE REVERSE, BLINK
         ? "Это сообщение высвечивается в обратном мерцании"
         
   SUBTRACT команда сокращенного меню, которая удаляет  оди-
         наковые записи в двух таблицах.
         Синтаксис:
           SUBTRACT  <исходная  таблица><конечная таблица>
         где:<исходная таблица><конечная  таблица>-строковые
         выражения.  Любая  запись исходной таблицы, которая
         есть в конечной таблице, из конечной таблицы удаля-
         ется. Эта команда исполняется, когда PARADOX  нахо-
         дится в состоянии MAIN.
         
   SWITCH команда выполняет одну из ряда альтернативных пос-
         ледовательностей команд, в зависимости от  значений
         некоторых условий.
         Синтаксис: SWITCH
                       CASE <условие 1>:<команды 1>...
                       CASE <условие n>:<команды n>
                       <>:<команды>/
                    ENDSWITH
         Условия  последовательно  выполняются. Если найдено


                             - 222 -
         истинное условие, то выполняется последовательность
         команд, записанная в поле <команды>. Если  истинное
         условие   не   найдено,   то   используется   опция
         OTHERWISE, и  выполняются  команды,  занисанные  за
         ней.  Если нет истинного значения и не используется
         OTHERWISE, то SWITCH не  имеет  никакого  значения.
         Отметим, что в случае выполнения одного из условий,
         остальные условия не проверяютя.
         
   SYNCCURSOR команда устанавливает курсор на канву ПАЛа  в
         то же место, что и в рабочем поле.
         Синтаксис: SYNCCURSOR
         Описание:  Команда SYNCCURSOR позволяет Вам устано-
         вить курсор в канве ПАЛа в то же место,  в  котором
         он  был в рабочем поле. Она полезна при переходе из
         рабочего поля в канву ПАЛа.
         
         Версия: Команда SYNCCURSOR  добавлена  к  ПАРАДОКСу
                версии 2.0.
         
   TAB команда моделирует нажатие клавиши [Tab], для перехо-
         да в следующее поле образа.
         Синтаксис: TAB
         Описание: TAB, как и клавиша [TAB] служит для пере-
         мещения курсора в следующее поле  образа.  В  любом
         другом контексте, команда игнорируется. Таблица ни-
         же  описывает  результаты TAB в каждом режиме ПАРА-
         ДОКСа.
         
             Режим ------------------  Действие
                                                                                                                                                                                                                                                              
 
       Главный, Редактирование,     передвигает курсор к
       Совместное редактирова-      следующему полю образа
       ние
                                                                                                                                                                                                                                                              
 
       Любой режим/Просмотр         игнорируется
       поля


                             - 223 -
       
       Формы                        игнорируется
         
       Отчет                        Передвигает курсор в
                                    табличном диапазоне
            
       Скриптовый редактор          игнорируется
         
         Смотрите также: - REVERSETAB.
         
   TEXT команда выводит на экран одну или более линий в кан-
         ву PALa.
         Синтаксис: TEXT
                     <текст>
                    ENDTEXT
         Поле <текст> содержит одну или более строк символь-
         ного текста. Текст выводится, начиная с текущей по-
         зиции курсора в канве PALa. Ключевые слова  TEXT  и
         ENDTEXT должны быть на отдельных строках, вне  ком-
         ментариев. Отметим, что текст выбирается посимволь-
         но, начиная с линии, следующей после ключевого сло-
         ва TEXT, и заканчивается линией перед ключевым сло-
         вом ENDTEXT. Пустые  строки  внутри  текста  так  и
         отображаются.   Аттрибуты  отображения,  такие  как
         цвет, видеореверс, могут быть установлены с помощью
         команды STYLE. Текст может быть выведен на  принтер
         с помощью команды PRINTER. (Смотрите также ?, ??,
         @, STYLE)
        
   TYPEIN команда воспроизводит эффект ввода строки символов
         с PARADOX.
         Синтаксис: TYPEIN  <строка>
         Команда позволяет Вам моделировать набор одного или
         более  символов клавиатуры PARADOXа. По эффекту она
         подобна символьным строкам в кавычках, генерируемых
         во время записи сценария,  но  позволяет  вычислять
         строку  символов как значение выражения, заданные в


                             - 224 -
         <строка>. Выражение аргумента  автоматичес-
         ки  преобразуется в строку, если это необходимо.
         Пример: Предположим, что ZipCode-алфавитно-цифровое
         поле текущей записи и  переменная  z  хранит  число
         94025.  Тогда  следующие  команды  присваивают полю
         ZipCode в текущей записи значение 94025.
         EDITKEY
           MOVETO [ZipCode]
           TYPEIN z
           DO_IT!
         
   UNLOCK  команда снимает блокировку с одной или нескольких
         таблиц.
         Синтаксис: UNLOCK  либо ,
         где  Locklist  -  список, содержащий одну или более
         пар записей, которые определяют таблицу и тип  бло-
         кировки.  Тип  блокировки  обозначается  следующими
         ключами: FL (полная блокировка), WL (блокировка за-
         писи), PWL (предотвращает блокировку записи), PFL
         (предотвращает полную блокировку).
         Описание:  Команда UNLOCK используется для удаления
         блокировок, размещенных в  таблицах  пользователем,
         либо  приложением  при помощи команды LOCK. Если Вы
         используете ключевое слово ALL вместо LOCKLIST, все
         таблицы, которые были заблокированы  из  приложения
         или пользователем разблокируются. Команда UNLOCK не
         снимает  блокировку с таблиц, заблокированных ПАРА-
         ДОКСом.
         Системная переменная retval устанавливается в  зна-
         чение  "Ложь", если Вы пытаетесь разблокировать ка-
         кие-либо таблицы, которые не были заблокированы.
         Использование: Всякий раз, когда Вы блокируете  оп-
         ределенный  объект, будте уверены, что Вы разблоки-
         руете его, как только  необходимость  в  блокировке
         отпадет.  Это  приведет  к максимальной доступности
         объектов.
         Версия: Команда UNLOCK была введена в версию ПАРА-
         ДОКСА 2.0.


                             - 225 -
         Примеры: Следующая команда удаляет предыдущие  бло-
         кировки  и  полную  блокировку  из таблицы orders и
         полную блокировку из таблицы stock.
         
            UNLOCK "orders" PWL, "orders" PFL, "stock" FL
         Смотрите также: команды LOCK, UNLOCKRECORD.
         
   UNLOCKRECORD команда снимает блокировку с текущуей  запи-
         си.
         Синтаксис:  UNLOCKRECORD
         Описание: Команда UNLOCKRECORD разблокирует текущие
         записи, если они были предварительно заблокированы.
         Тот же эффект имеет  одновременное  нажатие  клавиш
         [Alt][L]  над  заблокированной  записью.  Для того,
         чтобы использовать команду  UNLOCKRECORD,  ПАРАДОКС
         должен находиться в режиме совместного редактирова-
         ния.
         Если Вы пытаетесь разблокировать запись, которая не
         была  заблокирована, то системная переменная retval
         будет установлена в значение "Ложь" .
         Версия:  Команда UNLOCKRECORD введена в ПАРАДОКС вер-
         сии 2.0.
         Смотрите также команды KEYLOOKUP, LOCKKEY, LOCKRECORD
         и UNLOCK.
         
   UNPASSWORD команда позволяет скрипту "снять" пароль т.о.,
         что  он  может  передать управление пользователю не
         покидая таблиц, защищенных паролем.
         Синтаксис:   UNPASSWORD<пароль1>...<пароль  n>
         В основном, хорошо иметь скрипт,  начинающийся  ко-
         мандой  PASSWORD,  которая представляет пароли всех
         защищенных таблиц,  используемых  во  время  работы
         скрипта. Затем, перед завершением скрипта необходи-
         мо  выполнить команду UNPASSWORD для отмены доступа
         к этим таблицам. Обычно, скрипт сам должен быть за-
         щищен для предотвращения несанкционированного прос-


                             - 226 -
         мотра текста скрипта через редактор и, следователь-
         но, просмотра паролей в сценарии.
         Заметим, что команда UNPASSWORD не открывает табли-
         цы  и скрипты, защита и открытие которых должны де-
         латься посредством выбора PROTECT из TOOLS меню.
         Пример: PASSWORD "TTTTT"   ; пароль
                 EDIT "orders"      ; редактирование
                 UNPASSWORD "TTTTT" ; перезащита
         
   UP    моделирует нажатие клавиши [Up].
         Синтаксис: UP
         Действие команды UP аналогично действию при нажа-
         тии  клавиши [Up Arrow], и зависит от текущего
         контекста. Если ПАРАДОКС находитися не в подходящем
         режиме, команда игнорируется. Следующая таблица по-
         казывает действие команды UP в различных  режимах
         ПАРАДОКСА:
                                                                                                                                                                                                                                                              
 
             Режим ------------------  Действие
                                                                                                                                                                                                                                                              
 
       Главный, Редактирование,     Cдвигает курсор на одну
       Совместное редактирова-      запись вверх
       ние/ПросмотрТаблиц
                                                                                                                                                                                                                                                              
 
       Главный, Редактирование,     Сдвигает курсор на одно
       Совместное редактирова-      поле вверх
       ние/Просмотр Формы
                                                                                                                                                                                                                                                              
 
       Редактирование,Совмест-      Сдвигает курсор на стро-
       ное редактирование/Про-      ку вверх в разделенном
                                    поле
       
       Формы                        Сдвигает курсор на одну
                                    строку вверх
                                                                                                                                                                                                                                                              
 
       Отчет                        Сдвигает курсор на одну
                                    строку вверх


                             - 227 -
                                                                                                                                                                                                                                                              
 
       Скриптовый редактор          Сдвигает курсор на одну
                                    строку вверх
                                                                                                                                                                                                                                                              
 
         Смотрите также команду DOWN.
         
   UPIMAGE  команда  моделирует нажатие клавиши [F3] и пе-
         ремещает курсор вверх к предыдущему изображению в
         рабочем пространстве .
         Синтаксис:  UPIMAGE
         Когда в  рабочем  пространтве  находятся  несколько
         изображений  объектов,  команда  UPIMAGE переносит
         курсор с текущего изображения к изображению,  нахо-
         дящемуся выше текущего в рабочем пространстве.
         Команда UPIMAGE работает только в Главном режиме,
         режиме редактирования или режиме Совместного редак-
         тирования.  В других контекстах команда игнорирует-
         ся. Она также не работает если текущее  изображение
         является самым  верхним  или единственным в рабочем
         пространстве. Если текущее изображение находится  в
         режиме  просмотра  формы,  команда  UPIMAGE имеет
         действие выхода из прсмотра формы в просмотр табли-
         цы для изображения, находящегося выше.
         Пример: Смотрите пример в описании команды DOWNIMAGE.
         Cмотрите  также  команды  DOWNIMAGE  ,  FIRSTSHOW.
         
   VERTRULER  команда  моделирует  нажатие клавиш [Ctrl][V],
         для включения/выключения на экран счетчика строк  в
         отчетах или редакторе программ.
         Синтаксис: VERTRULER
         Описание:  Команда   VERTRULER,   как   и   клавиши
         [Ctrl][V]  включают/выключают счетчик строк в гене-
         раторе отчетов или  редакторе  программ.  В  других
         контекстах команда игнорируется.
         Смотрите также:
         - Описание генератора отчетов в книге "Руководство
         пользователя по ПАРАДОКСу";
         -  Описание  редактора  скриптов  в книге "Редактор
         скриптов ПАЛа".


                             - 228 -
         
   VIEW команда сокращенного меню, которая помещает  таблицу
         в рабочую область
         Синтаксис: VIEW <имя таблицы>
         Команда используется  кагда  PARADOX  находиться  в
         состоянии MAIN.
         Новый образ отображения указанной таблицы помещает-
         ся  в  рабочую  область PARADOXа. Этот образ стано-
         виться текущим образом, а его первая  запись  (если
         такая  имеется)  становиться  текущей записью. Поле
         номера  записи становиться текущим полем. Если таб-
         лицы с указанным именем не существует, выдается со-
         общение об ошибке.
         Пример:  Переменная  х  содержит  строку   значений
         "orders"
         VIEW х
         Эквивалентна последовательности выбора из меню:
         MENU{VIEW}{orders}
         
   WAIT  команда облегчает ввод/вывод в форму или таблицу.
         Синтаксис:
         WAIT  FIELD << PROMT<<, >> >>
                     << MESSAGE >> UNTIL
         WAIT  RECORD<< PROMT<<, >> >>
                     << MESSAGE >> UNTIL
         WAIT  TABLE << PROMT<<, >> >>
                     << MESSAGE >> UNTIL
         
         Где  ,  и  любые выраже-
         ния, а -список одного или более выражений
         клавишных кодов PALa, разделенных запятыми.
         Эта мощная команда позволяет Вам  дать  ограничения
         для пользователя в интерактивном ежиме с таблицами,
         которые помещены в рабочую область PARADOXа. Управ-
         ление возвращается к  скрипту,  когда  пользователь


                             - 229 -
         нажмет одну из определенных клавиш. В типичном при-
         ложении  вы  можете сначала выполнить команду VIEW,
         для того, чтобы поместить  таблицу  в  рабочую  об-
         ласть,  продвинуться к определенной записи, выбрать
         форму, войти в состояние режима  редактирования   и
         ввести команды: WAIT RECORD
              PROMT "Pедактируется запись N"+STRVAL(RECNO()),
              "Нажмите [F2], когда кончите редактирование"
         UNTIL "F2"
         Подсказка "Редактируется запись N" и  номер  записи
         высвечивается  пользователю в верхней части экрана.
         Подсказка  "Нажмите [F2]", когда кончите редактиро-
         вание, высвечивается на второй строке экрана. Поль-
         зователь теперь может интерактивно работать с  выс-
         веченной записью обычным способом PARADOXа. Пользо-
         ватель может двигаться от поля к полю и модифициро-
         вать одно или более значений полей. Если Вы не вош-
         ли  в  режим  редактирования  до  появления команды
         WAIT, пользователь не сможет редактировать и  будет
         ограничен  только просмотром записей. RECORD в WAIT
         RECORD ограничивает пользователя  передвижением  по
         полям  в  текущей  записи.  Форма WAIT RECORD может
         быть использована для  продвижения  пользователя  в
         текущем  поле. Форма WAIT TABLE позволяет пользова-
         телю передвигаться по всей  таблице.  Заметим,  что
         используя  свойства полей Displey Only при создании
         заказных форм, Вы  можете  ограничить  пользователя
         отдельными  полями.  Например,  Вы  можете защитить
         ключевые поля, позволяя пользователю корректировать
         только неключевые.
         Во всех этих трех формах пользователь лишен возмож-
         ности вызывать меню PARADOXa и  даже  переключатель
         форм  [F7]. Опция PROMPT дает возможность использо-
         вания двух верхних строк экрана для вывода  сообще-
         ний  в течение режима WAIT. Эти сообщения не должны
         превышать 80 символов каждое.
         Опция  MESSAGE позволяет Вам вывести на экран сооб-


                             - 230 -
         щение в окно  сообщений  PARADOXа,  но  как  только
         пользователь нажмет любую клавишу это сообщение ис-
         чезает.  В отличие от этого, сообщения в двух верх-
         них строках остаются до тех пор, пока  пользователь
         не  нажмет  определенную  клавишу  в  конце команды
         WAIT. В качестве побочного эффекта  команды,  пере-
         менной  "retval" присваивается значение кода клави-
         ши, которую пользователь нажимает в  конце  команды
         WAIT.  Например: WAIT TABLE UNTIL "Help","DO_IT!" В
         данном примере заканчивается взаимодействие,  когда
         нажата  клавиша  помощи [F1] или клавиша выполнения
         [F2]. Если для окончания взаимодействия нажата кла-
         виша [F1], то строковой переменной "retval" присва-
         ивается строковое  значение  "Help".  Скрипт  может
         проанализировать  эту переменную и выполнить дейст-
         вие присваивания этого значения. Заметим,  что  ис-
         пользуя  свойства  полей  Displey Only при создании
         заказных форм, Вы  можете  ограничить  пользователя
         отдельными  полями.  Например,  Вы  можете защитить
         ключевые поля, позволяя пользователю корректировать
         только неключевые поля.  В  комбинации  с  командой
         WAIT  может быть осуществлен контроль, например по-
         падание в интервал, отсутствие значений  и  т.п.  и
         пока  все виды контроля не будут проведены, пользо-
         ватель не сможет выйти из режима WAIT. Пример: Сле-
         дующий цикл ввода данных присоединяет записи к кон-
         цу таблицы orders. EDIT "orders"  ;  редактирование
         таблицы END ; переход к последней записи PICKFORM 2
         ; вывод формы F2
          WHILE (TRUE)       ; цикл
           PgDn              ; открыть пустую запись
           WAIT RECORD
           PROMPT "Нажмите [F2] на нужной записи. Esc-выход"
           UNTIL "F2","ESC"
           IF retval="ESC" THEN QUITLOOP ENDIF
          ENDWHILE
         DO_IT!              ; конец редактирования


                             - 231 -
         
   WHILE  команда выполняет последовательность команд в цик-
         ле, пока указанное условие истинно.
         Синтаксис: WHILE <условие>
                          <команды>
                    ENDWHILE
         Поле <условие> -  логическое  выражение.  Если  его
         значение  истинно,  то выполняются команды, которые
         представлены в поле <команды>. Затем контроль пере-
         дается в вершину цикла, и условие проверяется  сно-
         ва. Эти шаги будут повторяться до тех пор, пока ло-
         гическое  выражение  не будет ложным. В этом случае
         цикл заверщается и управление  передается  команде,
         следующей  за  ENDWHILE. Вы можете использовать ко-
         манду LOOP в теле WHILE, чтобы была возможность пе-
         рескакивать через команды, находящиеся между LOOP и
         ENDWHILE. Команда QUITLOOP может быть  использована
         для  обхода  всех команд цикла. Команды WHILE могут
         быть вложены одна в  другую  произвольным  образом.
         Пример:  Следующие команды вычисляют n!, где n вво-
         дится пользователем. CLEAR
         @10,10 ?? "Введите номер: "
         ACCEPT "S" MIN 0 MAX 1000 TO N
           product = 1
           WHILE n>0
            product = product * n
            n=n-1
           ENDWHILE
         MESSAGE "Результат: ", product
         
   WRITELIB  команда делает синтаксический анализ процедур и
         сохраняет их в в библиотеке
         Синтаксис: WRITELIB <имя  библиотеки><имя  процеду-
                              ры 1>...<имя процедуры N>
         Как только процедуры загружаются в библиотеку,  они
         могут быть считаны из скрипта с использованием ко-
         манды  READLIB. Эти процедуры уже готовы для выпол-


                             - 232 -
         нения, и нет необходимости их переопределять. Преж-
         де, чем записать процедуры в библиотеку, ее необхо-
         димо создать с помощью команды CREATLIB, процедуры,
         которые  необходимо  записать,  должны находиться в
         памяти.
         Вы можете хранить до 50 процедур в каждой библиоте-
         ке.  Поскольку имя каждой библиотеки занимает неко-
         торую память, лучше иметь меньшее количество библи-
         отек с большим количеством процедур. Вы можете  за-
         писать  процедуры в библиотеку столько раз, сколько
         Вам это необходимо. Новые процедуры записываются  в
         библиотеку  на  существующие процедуры. Возможности
         выкинуть процедуру из библиотеки нет. Когда  проце-
         дура  записывается  в  библиотеку, ее имя храниться
         вместе с ней. Для отладки хранящейся процедуры  она
         должна  быть  представлена на драйвере и в директо-
         рии, в котором она была  расположена  до  записи  в
         библиотеку.  Пример:  Следующий  скрипт  записывает
         процедуру, названную CHECKPRINT, в библиотеку, наз-
         ванную UTILITY. Предполагается, что библиотека  уже
         создана с помощью CREATLIB. PROC CHECKPRINT()
              IF PRINTSTATUS() = FALSE
                THEN
                 MESSAGE " Принтер не готов "
                 RETURN FALSE
                ELSE
                 RETURN TRUE
              ENDIF
         ENDPROC
         WRITELIB "UTILITY" CHECKPRINT
         
   ZOOM команда моделирует действие клавиш [Ctrl][Z], перед-
         вигая курсор к первой записи с указанными величина-
         ми в изображении.
         Синтаксис: ZOOM
         Описание:  Команда  ZOOM прекращает действие услуги
         ПАРАДОКСа Image/Goto/Value. Ее действие заключается


                             - 233 -
         в высвечивании следующего сообщения:
          Value:
          Enter a value or pattern to search for
          (введите величину или образец для поиска)
         В этом месте Вы должны  ввести  величину  и  нажать
         [Enter]  для  начала  поиска. Аналогично, Вы можете
         применить команду SELECT; в обоих случаях  вводится
         величина и нажимается [Enter]. Если курсор находит-
         ся  вне  изображения, в режиме просмотра таблиц или
         форм, ZOOM игнорируется. Если величина, заданная  в
         качестве  образца для поиска не найдена, то в рабо-
         чем пространстве ПАРАДОКСа высвечивается сообщение:
         "No match found"; заметим, что системная переменная
         retval не устанавливается в этом случае.
         Использование: Из-за того, что ПАРАДОКС поддержива-
         ет один ключ поиска на изображение, при использова-
         нии команды ZOOM повторно для поиска другой величи-
         ны  в  том  же изображении, Вы должны быть уверены,
         что Вы очистили текущий ключ поиска.  Использование
         команды  SELECT  для ввода величины и начала поиска
         приведет к очистке величины из меню. Благодаря  вы-
         сокоуровневой  поддержке управления поиском в боль-
         шинстве приложений команда LOCATE  обычно  ставится
         перед командой ZOOM.
         Версия: Команда ZOOM введена в ПАРАДОКС версии 2.0.
         Примеры:  Следующий пример переводит курсор к пер-
         вой записи таблицы orders, содержащей указанную да-
         ту заказа (июнь 1988г):
         
             VIEW "orders"
             MOVETO FIELD "Date"
             ZOOM SELECT "6/../88" ;  переместить  курсор  к
             первой записи с датой заказа "Июнь 1988г"
         Смотрите   также:   Команды  LOCATE,  QUERY,  SCAN,
         ZOOMNEXT.
         


                             - 234 -
   ZOOMNEXT  команда моделирует нажатие клавиш [Alt][Z]. Пе-
         реносит курсор к следующему полю с указанной  вели-
         чиной в изображении на экране.
         Синтаксис: ZOOMNEXT
         Описание: Команда ZOOMNEXT используется после того,
         как использовалась команда ZOOM, которая установила
         ключ    поиска    или   после   выполнения   услуги
         Image/Goto/Value. Команда ZOOMNEXT переносит курсор
         к следующей записи  текущего  изображения,  которая
         удовлетворяет  заданному  ключу  поиска. Если такой
         записи нет, сообщение "No match found" высвечивает-
         ся  в  рабочем  простанстве ПАРАДОКСа. Заметим, что
         системная переменная retval  не  устанавливается  в
         этом  случае.  Если курсор не находится в изображе-
         нии, то команда игнорируется.
         Использование: Благодаря более высокоуровневой под-
         держке  управления  поиском, в большинстве приложе-
         ний, команды LOCATE и LOCATE NEXT  обычно  ставятся
         перед командами ZOOM и ZOOMNEXT.
         Версия:  Команда  ZOOMNEXT  была введена в ПАРАДОКС
         версии 2.0.
         Смотрите также:  Команды LOCATE, QUERY, SCAN, ZOOM.
.

                             - 235 -
                              
                                               Г Л А В А  10
 ___________________________________________________________
         
                       Ф У Н К Ц И И
 ___________________________________________________________
         
                   ПЕРЕЧЕНЬ ФУНКЦИЙ
 
 ABS         абсолютное значение числа
 ACOS        арккосинус числа
 ARRAYSIZE   размерность массива
 ASC         перевод символа в код ASCII
 ASIN        арксинус числа
 ATAN        арктангенс числа
 ATAN2       четвертый квадрант арктангенса
 ATFIRST     является ли текущая запись первой
 ATLAST      является ли текущая запись последней
 BANDINFO    текущая запись в генераторе отчетов
 BLANKDATE   возврат строки чистой даты
 BLANKNUM    возврат пустого числа
 BOT         указывает начало таблицы
 CAVERAGE    среднее значение столбцов
 CCOUNT      счетчик значений в колонке
 CHARWATING  ожидает символ в буфере с клавиатуры
 CHR         перевод кода ASCII в символ
 CMAX        максимальное значение столбца
 CMIN        минимальное значение столбца
 CNPV        чистое настоящее значение
 COL         позиция колонки курсора
 COLNO       номер текущего столбца
 COS         косинус угла
 CSTD        стандартное отклонение значений в столбце
 CSUM        сумма значений в столбце
 CURSORCHAR  возврат односимвольной строки,содержащей символ
             курсора
 CVAR        изменение значений в столбце


                             - 236 -
 DATEVAL     перевод строки в дату
 DAY         выдает день месяца даты
 DIRECTORY   имя текущего директория
 DOW         день недели как строка
 DRIVESPACE  количество свободных байтов на диске
 DRIVESTATUS проверка готовности диска
 EOT         индикация конца таблицы
 EXP         показатель числа
 FIELD       имя текущего поля
 FIELDINFO   текущее  поле в генераторе отчетов и в состоянии
             формы
 FIELDNO     номер поля
 FILL        повтор символов
 FORMAT      форматирование выражения
 GETCHAR     считать символ с клавиатуры
 IMAGENO     номер текущего образа
 IMAGETYPE   тип текущего образа
 INT         целая часть числа
 ISASSIGNED  определена ли переменная или элемент массива
 ISBLANK     пустое ли выражение
 ISEMPTY     пустая ли таблица
 ISFIELDVIEW находится ли PARADOX в режиме просмотра поля
 ISFILE      существует ли файл
 ISFORMVIEW  находится ли текущий образ в режиме просмотра форм
 ISINSERTMODE находиться ли PARADOX  в режиме вставки
 ISTABLE     существует ли таблица
 LEN         длина строки
 LN          натуральный логарифм
 LOG         логарифм числа
 LOWER       перевод строки в нижний регистр (маленькие буквы)
 MATCH       сверить строку с образом
 MAX         выдать максимальное число из двух чисел
 MENUCHOICE  текущий выбор меню
 MIN         выдать мимимальное из двух чисел
 MOD         модуль одного числа по отношению к другому
 MONITOR     тип текущего монитора
 MONTH       месяц даты в виде числа


                             - 237 -
 MOY         месяц даты в виде строки
 NFIELDS     количество полей в таблице
 NIMAGES     количество образов в рабочем пространстве
 NKEYFIELDS  количество ключевых полей в таблице
 NPAGES      количество страниц
 NRECORDS    количество записей в таблице
 NROWS       количество строк в текущем образе
 NUMVAL      преобразует строку в число
 PAGENO      номер текущей страницы в отчете или форме
 PAGEWIDTH   ширина строки текущей спецификации отчета
 PI          число PI
 PMT         погашение закладной стоимости
 POW         возведение числа в степень
 PRINTERSTATUS готов ли принтер
 PV          представляет значение в виде серии взносов
 RAND        выдает случайное число
 RECNO       номер текущей записи
 ROUND       округляет число
 ROW         позиция ряда курсора на канве
 ROWNO       номер строки в текущей записи
 SEARCH      поиск подстроки в строке
 SIN         синус угла
 SPACES      выдает строку интервалов
 SQRT        квадратный корень числа
 STRVAL      преобразует выражение в строку
 SUBSTR      перевод подстроки в строку
 SYSMODE     текущее состояние PARADOXа
 TABLE       имя текущей таблицы
 TAN         тангенс угла
 TIME        время дня
 TODAY       сегодняшняя дата
 TYPE        тип выражения
 UPPER       перевод строки в верхний регистр
 VERSION     выдать номер версии PARADOXа
 WINDOW      текст текущего окна сообщений
 YEAR        год
.

                             - 238 -
                              
 
                ФУНКЦИИ PALа ПО КАТЕГОРИЯМ
 
          Функции даты и времени
          ----------------------
 BLANKDATE   возврат строки чистой даты
 DAY         выдает день месяца даты
 DOW         день недели как строка
 MONTH       месяц даты в виде числа
 MOY         месяц даты в виде строки
 TIME        время дня
 TODAY       сегодняшняя дата
 YEAR        год
 
          Финансовые функции
          ------------------
 CNPV        чистое настоящее значение
 PMT         погашение закладной стоимости
 PV          представляет значение в виде серии взносов
 
          Информационные функции
          ----------------------
 ARRAYSIZE   размерность массива
 BOT         указывает начало таблицы
 EOT         индикация конца таблицы
 ISASSIGNED  определена ли переменная или элемент массива
 ISBLANK     пустое ли выражение
 ISEMPTY     пустая ли таблица
 ISFILE      существует ли файл
 ISTABLE     существует ли таблица
 TYPE        тип выражения
 
          Функции ввода вывода
          --------------------
 CHARWATING  ожидает символ в буфере с клавиатуры
 GETCHAR     считать символ с клавиатуры


                             - 239 -
 
          Математические функции
          ----------------------
 ABS         абсолютное значение числа
 ACOS        арккосинус числа
 ASIN        арксинус числа
 ATAN        арктангенс числа
 ATAN2       четвертый квадрант арктангенса
 BLANKNUM    возврат пустого числа
 COS         косинус угла
 EXP         показатель числа
 INT         целая часть числа
 LN          натуральный логарифм
 LOG         логарифм числа
 MOD         модуль одного числа по отношению к другому
 PI          число PI
 POW         возведение числа в степень
 RAND        выдает случайное число
 ROUND       округляет число
 SIN         синус угла
 SQRT        квадратный корень числа
 TAN         тангенс угла
 
          Функции статистики
          ------------------
 CAVERAGE    среднее значение столбцов
 CCOUNT      счетчик значений в колонке
 CMAX        максимальное значение столбца
 CMIN        минимальное значение столбца
 CSTD        стандартное отклонение значений в столбце
 CSUM        сумма значений в столбце
 СVAR        изменение значений в столбце
 MAX         выдать максимальное число из двух чисел
 MIN         выдать минимальное из двух чисел
 


                             - 240 -
          Функции обработки строк
          -----------------------
 ASC         перевод символа в код ASCII
 CHR         перевод кода ASCII в символ
 DATEVAL     перевод строки в дату
 FILL        повтор символов
 FORMAT      форматирование выражения
 LEN         длина строки
 LOWER       перевод строки в нижний регистр (маленькие буквы)
 MATCH       сверить строку с образом
 NUMVAL      преобразует строку в число
 SEARCH      поиск подстроки в строке
 SPACES      выдает строку интервалов
 STRVAL      преобразует выражение в строку
 SUBSTR      перевод подстроки в строку
 UPPER       перевод строки в верхний регистр
 
          Функции состояния системы
          -------------------------
 DIRECTORY   имя текущего директория
 DRIVESPACE  количество свободных байтов на диске
 MONITOR     тип текущего монитора
 PRINTERSTATUS готов ли принтер
 SYSMODE     текущее состояние PARADOXа
 VERSION     выдать номер версии PARADOXа
 
          Функуции состояния рабочего пространства
          ----------------------------------------
 
 ATFIRST     является ли текущая запись первой
 ATLAST      является ли текущая запись последней
 BANDINFO    текущая запись в генераторе отчетов
 COL         позиция колонки курсора
 COLNO       номер текущего столбца
 CURSORCHAR  возврат односимвольной строки,содержащей
             символ курсора
 FIELD       имя текущего поля
 FIELDINFO   текущее  поле в генераторе отчетов и в состоянии
             формы


                             - 241 -
 FIELDNO     номер поля
 IMAGENO     номер текущего образа
 IMAGETYPE   тип текущего образа
 ISFIELDVIEW находится ли PARADOX в режиме просмотра поля
 ISFORMVIEW  находится ли текущий образ в режиме просмотра форм
 ISINSERTMODE находится ли PARADOX  в режиме вставки
 MENUCHOICE  текущий выбор меню
 NFIELDS     количество полей в таблице
 NIMAGES     количество образов в рабочем пространстве
 NKEYFIELDS  количество ключевых полей в таблице
 NPAGES      количество страниц
 NRECORDS    количество записей в таблице
 NROWS       количество строк в текущем образе
 PAGENO      номер текущей страницы в отчете или форме
 PAGEWIDTH   ширина строки текущей спецификации отчета
 RECNO       номер текущей записи
 ROW         позиция ряда курсора на канве
 ROWNO       номер строки в текущей записи
 TABLE       имя текущей таблицы
 WINDOW      текст текущего окна сообщений
.

                             - 242 -
                              
  
                     ОПИСАНИЕ ФУНКЦИЙ
 
 
 ABS выдает абсолютное значение числа
     Синтаксис: ABS(<число>)
     Пример: y=ABS(-5) y=5
     
 ACOS  вычисляет арккосинус числа, выраженного в радианах.
     Синтаксис: ACOS(<выражение>)
     Пример: y=ACOS(1)  y=0
     
 ARRAYSIZE  выдает размерность  размерность массива.
     Синтаксис: ARRAYSIZE <имя массива>
     Функция  вычисляет  размерность массива, т.е. количество
     элементов, которые он может содержать.
     Если задать вместо имени массива другое имя, то функция
     ARRAYSIZE выдаст 0. Таким образом с помощью этой  функ-
     ции можно проверять, является ли данное выражение ииме-
     нем массива. Пример: ARRAYSIZE a[10]
             MESSAGE ARRAYSIZEя2 я0(a)
     
 ASC переводит символ в код ASCII.
     Синтаксис: ASC (<код клавиши>)
     Аргумент  <код  клавиши> может быть некоторым выражением
     PALa, включающий  последовательность  символов,  которая
     является описанием функциональных клавиш (например,"F3")
     или  одним  из  специальных  названий  клавиши PARADOXа
     ("PgUp"). Если описанная клавиша  имеет  обычный  ASCII
     код,  ASC выдает положительное число, обозначающее этот
     код. Если клавиша имеет расширенный код ABM,  этот  код
     выдается как отрицательное число. Пример: ASC("1")=49
             ASC("F10")=-68
             ASC("MENU")=-68
     
             VAL="g"
             MESSAGE ASC(VAL) высветит 103


                             - 243 -
     
 ASIN вычисляет арксинус числа, выраженного в радианах.
     Синтаксис: ASIN (<число>)
     Если аргумент не является числом из интервала [-1;1], то
     выдается ошибка. Вычисленное значение всегда находится в
     пределах от -PI/2 до  PI/2.
     Пример: Если ASIN(x)=y, то SIN(y)=x
             ASIN(0.5)=0.523593
     
 ATAN  вычисляет 2-ой квадрант арктангенса числа, выраженного
     в радианах.
     Синтаксис: ATAN (<число>)
     Полученное значение ATAN(n) есть угол в  радианах,  есть
     угол  в радианах, тангенс которого равен n. ATAN называ-
     ется 2-ой квадрант арктангенса, потому что он  вычисляет
     значения  как в 1-ом, так и в 4-ом квадранте, т.е. между
     -PI/2 и PI/2. TAN-обратная функция.
     Пример: если ATAN(х)=у, то TAN(у)=х
             ATAN(0.5)=0.4636476
     
 ATAN2 вычисляет четвертый квадрант арктангенса числа,  выра-
     женного в радианах.
     Синтаксис: ATAN2 (,)
     ATAN2(x,y)  вычисляет  угол в радианах, косинус которого
     х, а синус у. ATAN2 называется 4-ым  квадрантом  арктан-
     генса,  так  как  он  вычисляет значения во всех четырех
     квадрантах.
     Пример: ATAN(1,0)=0
             ATAN(-1,0)=PI()
     
 ATFIRS определяет является ли текущая запись первой в  таб-
     лице.
     Синтаксис: ATFIRST()
     Предполагает, что текущий образ в рабочей  области-образ
     высвеченной на дисплее формы или таблицы.
     Результата  True,  если текущий ряд есть первая запись в


                             - 244 -
     таблице или если таблица пустая, в противном случае  ре-
     зультата-False.
     Пример: VIEV "Stock"       ; поместить в рабочую область
             MESSAGE ATFIRST()  ; результат True
             END                ; к концу таблицы
             MESSAGE ATFIRST()  ; True, если Stock имеет одну
                                    или не имеет записей
 ATLAST   проверяет, является ли текущая запись последней за-
     писью в таблице.
     Синтаксис: ATLAST()
     Предполагается,  что текущий образ есть образ выведенный
     на экран, как для просмотра таблиц, так и для  просмотра
     форм.  В результате будет выдаваться значение True, если
     текущий ряд - последняя запись таблицы или если  таблица
     пустая, в противном случае результат будет False.
     Пример: VIEV "Stock"       ; поместить в рабочую область
             MESSAGE ATLAST()   ; результат True, если таблица
                                  имеет 1 или 0 записей
             END                ; к концу таблицы
             MESSAGE ATFIRST()  ; True
                                    
 BANDINFO  выдает  текущую  запись  в генераторе отчетов. Эта
     функция не имеет аргументов.
     Синтаксис: BANDINFO ()
     Если она используется  не  в  режиме  отчетов,  выдается
     ошибка. Указатель групп Генератора Отчетов помещается на
     вторую  линию в верхнем левом углу экрана. Он показывает
     в какой группе спецификации отчетов находится в  настоя-
     щее  время  курсор. Эта функция будет выдавать значения,
     такие как "Report Header", "Page Header", "Page  FOOTER"
     и "Report FOOTER".
                       
 BLANKDATE  выдает строки чистой даты.
     Синтаксис: BLANKDATE()
     Эта  функция  полезна для генерации чистого значения дат
     для того, чтобы присвоить переменной или полю.
     Пример: MESSAGE ISBLANK (BLANKDATE()) ;результат TRUE


                             - 245 -
             EDIT "orders"                 ;редактирование
                                             таблицы "orders"
             [ORDER DATE] = BLANKDATE()    ;очистить поле
             DO_IT!                        ;завершить редактир.
     
 BLANKNUM   выдает пустое число.
     Синтаксис: BLANKNUM ()
     Функция  полезна для образования пустого числового зна-
 чения для того, чтобы назначить ее переменным или  числовым
 полям.
     Пример: MESSAGE ISBLANK (BLANKNUM());результат TRUE
             x=BLANKNUM()                ;установка х
             EDIT "orders"               ;редактирование
                                          таблицы "orders"
             MOVETO RECORD 100           ;перевод к 100 записи
             [QUAN Ordered] = x          ;очистить поле
             DO_IT!                      ;завершить редактир.
                                       
 BOT  проверяет начало текущей таблицы.
     Синтаксис: BOT ()
     Эта  функция  выдает TRUE, если номер текущей записи 1,
 или если в результате какой либо команды, текущий номер бу-
 дет меньше 1. В противном случае  в  результате  получается
 FALSE.
     Команда  BOT не имеет аргументов. Она предполагает, что
 текущий образ-это образ,  высвеченный  на  экране  как  при
 просмотре таблиц, так и при просмотре форм. Для более боль-
 ших   приложений   предпочтительнее   использовать  функцию
 ATFIRST.
     Пример: Следующий скрипт перемещается вверх по  таблице
 по  одному  экрану.  Когда будет достигнуто начало таблицы,
 выдается сообщение пользователю.
     Пример: WHILE NOT BOT()
              PgUp
              WHIT RECORD
              PROMPT "Запись номер :"+ STRVAL (RECNO())
              MESSAGE "Нажмите [F2] для продолжения"


                             - 246 -
              UNTIL "F2"
             ENDWHILE
             BEEP
             MESSAGE "Начало таблицы"
 CAVERAGE  вычисляет среднее значение столбцов.
     Синтаксис: CAVERAGE <имя таблицы>, <имя поля>
     Пустые значения не включаются в это  среднее  значение.
 Эта функция используется только для полей с числовыми выра-
 жениями.
     Пример: Пусть имеется таблица: orders  tann
                                    ------------
                                      1      10
                                      2      20
                                      3       0
                                      4      30
     x=CAVERAGE "orders","tann"
     MESSAGE "Среднее значение: ", x  ; равно 20
     
 CCOUNT считает непустые значения в колонке.
     Синтаксис: CCOUNT(<имя таблицы>, <имя поля>)
     Пустые  значения  не  входят в сумму. Эта функция может
     быть использована только для числовых полей.
     Пример: Смотрите таблицу в предыдущем примере.
     х=CCOUNT ("orders","tann")
     MESSAGE "Количество значений: ", x  ; равно 3
     
 CHARWATING проверяет, ожидается ли символ в буфере с клави-
     атуры.
     Синтаксис: СHARWATING()
     Выдает TRUE, если символ ожидается в буфере с клавиату-
     ры,  и  FALSE  -  в противном случае. Символ может быть
     считан  с  помощью  функции  GETCHAR.   Пример:   WHILE
     CHARWATING() ;есть ли символ
              x=GETCHAR()        ;тогда убрать его
             ENDWHILE
     


                             - 247 -
 CHR  переводит код ASCII в односимвольное представление.
     Синтаксис: CHR(<код символа>)
     CHR выдает односимвольную строку, состоящую из символов
     ASCII. Если это значение не является целым числом, и не
     лежит в интервале от 1 до 255, то регистрируется  ошиб-
     ка.
     Вы  можете использовать CHR для генерации символов, ко-
     торые  нельзя  использовать  с  клавиатуры,  такие  как
     "Happe fase".
     Пример: CHR(47)="7"
             CHR(48)="О"
             CHR(65)="А"
             CHR(9732)=" " (Space)
     
 CMAX  выводит  максимальное значение столбца из содержимого
     таблицы.
     Синтаксис: CMAX (<имя таблицы>,<имя поля>)
     Пустые значения в поле игнорируются. Если все поле пус-
     тое, то выдается ощибка. Эта функция может быть исполь-
     зована только для числовых полей.
     Пример: Пусть имеется таблица: orders  tann
                                    ------------
                                      1      10
                                      2       0
                                      3      30
     х=CMAX ("orders","tann")
     MESSAGE "Максимальное значение: ", x  ; равно 30
     
 CMIN  выводит  минимальное значение столбца из содержимого
     таблицы.
     Синтаксис: CMIN (<имя таблицы>,<имя поля>)
     Пустые значения в поле игнорируются. Если все поле пус-
     тое, то выдается ощибка. Эта функция может быть исполь-
     зована только для числовых полей.
     Пример: Пусть имеется таблица: orders  tann
                                    ------------
                                      1      10
                                      2       0
                                      3      30


                             - 248 -
     х=CMIN ("orders","tann")
     MESSAGE "Минимальное значение: ", x  ; равно 10
     
 CNPV выводит чистое значение серии денежных доходов, предс-
     тавленные содержимым числовых столбцов таблицы.
     
     Синтаксис: CNP (<имя таблицы><имя поля><процент>)
     Эта функция возвращает чистое настоящее значение непус-
     тых доходов в поле, интерпретируемом как будущие денеж-
     ные доходы. Денежные доходы исчисляются в конце  после-
     довательных  периодов, имеющих одинаковую продолжитель-
     ность (чаще всего месяц или год).
     Пустые поля игнорируются. Будьте особенно осторожны при
     определении нулевых значений для любого периода с нуле-
     выми денежными потоками.
     Для  того, чтобы посчитать чистое значение денежных до-
     ходов в начале каждого периода нужно следующее:
     
     (1+i)*CNPV<имя таблицы>,<имя поля>,<процент налога>
     где: i-доля налога за предыдущий период.
     Для налога используется в CNPV десятичное число (напри-
     мер .12), не как процент 12. Если период  меньше  года,
     ежегодный  налог будет вычисляться как составной налог.
     Например, если период является месяцем, и месячная доля
     налога  составляет .01, то соответствующий действитель-
     ный налог будет равен .12682523, а не .12. Формула  для
     превращения из периода в составной налог:
                     annual rate = (1+i)*(n-1)
     где: i-доля налога за предыдущий период, n-число перио-
     дов предыдущего года.
     Пример: Предположим, что будущий денежный поток  пока-
     занный  в следующей таблице, произошел в конце 4-х сле-
     дующих друг за другом лет. Доля налога равна .10 или 10
     процентов предыдущего года.


                             - 249 -
        сash  cash flow
        ----------------
          1      200
          2     -100
          3      150
          4      300
     x=CNPV ("сash", "cash flow".10)
       MESSAGE x  ; высветится 416.77
     
 COL выводит номер позиции колонки курсора на канве PALa.
     Синтаксис: COL()
     Позиция  столбца возвращается как число от 1 до 79. Она
     не имеет аргументов.
     Заметим,  что  функции COL и ROW не выдают информации о
     позиции курсора в рабочей области.
                                                                                                                                                                                                                                                              
 
     Пример: y=COL()
     
 COLNO выводит   номер  текущего столбца. В режиме MODE  или
     EDIT  функция COLNO возвращает номер текущего столбца в
     дисплее или образе запросов.
     Синтаксис: COLNO()
     Самый левый столбец образа (поле номера записи)  всегда
     столбец 1, самое левое поле данных, столбец 2 и т.д.
     В Генераторе Отчетов и Редакторе Скриптов функция COLNO
     возвращает  позицию  столбца.  В любом другом контексте
     выдается ошибка.
     Пример: VIEW "TAN"
             MOVETO [CLASS]
             Y=COLNO()
             MESSAGE Y
     
 COS вычисляет косинус угла в радианах.
     Синтаксис: COS (<числовое выражение>)
     Значения должны быть из интервала [-1;1]
     Пример: y=COS(0)    ;возвращает 1
             y=COS([])   ;возвращает косинус значения
                          текущего поля


                             - 250 -
     
 CSTD  вычисляет  стандартное отклонение значений в столбце.
     Синтаксис: CSTD (<имя таблицы>,<имя поля>)
     Эта функция вычисляет квадратный корень совокупных зна-
     чений CVAR.
     Пустые элементы игнорируются. Для "простых" стандартных
     используется формула:
     SQRT(CVAR(<имя таблицы>,<имя поля>)*(N/(N-1)),
     где: N=ccount(<имя таблицы>,<имя поля>)
     Если  ccount(<имя  таблицы>,<имя поля>) есть 0, то CSTD
     возвращает ошибку.
     Пример: Имеется таблица:   orders  days
                                ------------
                                  1      48
                                  2      13
                                  3      60
                                  4       0
              y=CSTD(<"orders">,<"days">)
              MESSAGE y   ; высветиться 24.55987581
                                                                                                                                                                                                                                                              
 
 CSUM вычисляет сумму значений в столбце.
     Синтаксис: CSUM (<имя таблицы>,<имя поля>)
     Эта функция может быть использована только для числовых
     полей.
     Пример: Имеем таблицу: оrders  kol
                            ------------
                              1      15
                              2      25
                              3       0
                              4       5
            
              y=CSUM(<"orders">,<"kol">)
              MESSAGE y   ; высветиться 45
     


                             - 251 -
 CURSORCHAR выводит односимвольную строку, содержащую символ
     курсора.
     Синтаксис: CURSORCHAR()
     Эта функция возвращает символ курсора в режимах форм, от-
     чета  и  в  режиме редактирования скрипта. Если функция
     вызывается в другом  контексте,  выдается  ошибка.  Эта
     функция выдает сообщение в рабочей области PARADOXa,  а
     не в канве PALa. Функция не имеет аргументов.
     Пример:  Если курсор расположен над символом "Т" в спе-
     цификации отчета, то выдается сообщение "Т".
     
 CVAR возвращает совокупные  изменения  значений  в  столбце
     таблицы.
     Синтаксис: CVAR (<имя таблицы>,<имя поля>)
     Пустые значения игнорируются.
     
 DATEVAL     переводит строку в дату.
     Синтаксис:  DATEVAL (<дата>)
     Поле <дата> должно быть представлено в одной из форм:
     mm/dd/yy,  mm/dd/yyyy,   dd-mon-yy,  dd-mon-yyyy
     Если выражения представленны в другой форме, или предс-
     тавляют собой неправильную дату, то выдается ошибка.
     
 DAY  выдает день месяца даты.
     Синтаксис: DAY(<дата>)
     Поле <дата> должно быть представлено в одной из форм:
     mm/dd/yy,  mm/dd/yyyy,   dd-mon-yy,  dd-mon-yyyy
     Если выражения представленны в другой форме, или предс-
     тавляют собой неправильную дату, то выдается ошибка.
     Пример: T=DAY (5/1/60)
             MESSAGE T
                      
 DIRECTORY   выдает имя текущего директория как строку.
     Синтаксис: DIRECTORY()
     Функция не имеет аргументов.
     Текущий директорий может быть изменен путем выбора сле-
     дующих команд из главного меню PARADOXa.
     MENU{TOOLS}{MORE}{DIRECTORY}
     Пример: T=DIRECTORY()
             MESSAGE T    ; высветится с:\\TAB


                             - 252 -
     
 DOW  выдает день недели как строку
     Синтаксис: DOW(<дата>)
     Выданное значение имеет следующие значения:
     Mon, Tue, Wed, Thu, Fri, Sat, Sun
     Пример: T=DOW (5/01/60)
             MESSAGE T
     
 DRIVESPACE выдает количество свободных байтов на диске.
     Синтаксис:  DRIVESPACE (<имя драйвера>)
     Имя  драйвера должно состоять из одной буквы. Двоеточие
     после имени драйвера не ставится.
     Если драйвер не готов, появиться ошибка.
     Пример: IF DRIVESPACE("A") < tablesize
               THEN MESSAGE "Нет места на диске"
               ELSE COPY "orders" "A:orders"
             TNDIF
 DRIVESTATUS проверяет, готов ли указанный драйвер.
     Синтаксис: DRIVESTATUS (<имя драйвера>)
     DRIVESTATUS выдает значение TRUE, если  указанный  диск
     готов, и FALSE в противном случае.
     Имя  драйвера должно состоять из одной буквы. Двоеточие
     после имени драйвера не ставится.
     Пример: IF NOT DRIVESTATUS("A")
               THEN MESSAGE "Ваш драйвер не готов"
               ELSE COPY "orders" "A:orders"
             ENDIF
     
 EOT индикация конца таблицы.
     Синтаксис: EOT()
     Если текущий номер является записью таблицы, то резуль-
     тат будет True, в противном случае выдается False.
     EOT не имеет аргументов.
     Пример:  Следующий скрипт продвигаеся вперед по таблице
     экран за экраном. Когда обнаружен конец таблицы,  выда-
     ется сообщение.


                             - 253 -
     WHILE NOT EOT()
          PgDn
      WAIT RECORD
          PROMPT "Просмотр номера записи"+STRVAL(RECNO())
          MESSAGE "Нажмите [F2] для продолжения"
      UNTIL "F2"
     ENDWHILE
     BEEP
     MESSAGE"Нет записи для просмотра"
     
 EXP вычисляет показатель числа
     Синтаксис: EXP((<числовое выражение>)
     EXP(х) вычисляет "е" в степени "х", где е=2.7182845905
     Обратная функция Ln.
     Пример:EXP(1)=2.7182845905
     
 FIELD  выдает имя текущего поля.
     Синтаксис: FIELD()
     Функция  возвращает цепочку символов, которая представ-
     ляет собой текущий столбец текущего  образа  в  рабочей
     области.
     Если текущий столбец является самый левый столбец обра-
     за, то возвращается строка "#".
     Если в рабочей области не содержится образ, то выдается
     ошибка.
     Пример: MOVETO [order date]
             MESSAGE FIELD()
     
 FIELDINFO  выдает  текущее  содержание  поля, указанное как
     строка.
     Синтаксис: FIELDINFO ()
     Указатель поля располагается в верхнем правом углу  эк-
     рана,  когда отчет или форма разрабатываются. Он указы-
     вает имя поля, в котором находится курсор. Если  курсор
     не  находится в поле, возвращается пустая строка. Функ-
     ция должна вызываться, когда PARADOX находится в состо-
     янии MAIN.


                             - 254 -
     
 FIELDNO  выдает номер поля.
     Синтаксис: FIELDNO (<имя поля>,<имя таблицы>)
     Если таблица с таким полем существует, то  возвращается
     номер этого поля. В противном случае выдается ошибка.
     Номер поля соответствует порядку полей в структуре таб-
     лицы. Значение функции FIELDNO недействительно при вра-
     щении полей высвеченного образа таблицы.
     Пример: t=FIELDNO()
             MESSAGE t
     
 FILL выдает строку, состоящую  из  символов,  повторяющихся
     столько раз, сколько потребуется в команде.
     Синтаксис: FILL (<выражение>,<длинна>)
     FILL  переводит  значение  выражения в строку, если это
     необходимо,  и  затем выдает строку определенной длины,
     составленную из первого символа строки.  Значение  поля
     <длина>,  должно  быть целым числом в интервале от 0 до
     255. Если его значение 0, то FILL выдаст пустую строку.
     Функция полезна для оформления отчета или экрана.  При-
     мер: t=FILL("x",3) ; выдаст "xxx"
             t=FILL("TKF",5)  ; выдаст "TTTTT"
     
     
 FORMAT форматирование выражения. Устанавливает спецификации
     для высвечивания и вывода типов данных.
     Синтаксис: FORMAT (<спецификация формата>,<выражение>)
     Поле  <спецификация  формата> состоит из заключенного в
     кавычки  перечня одного или более опций форматирования,
     и строкового выражения.
     Команда позволяет вам управлять  выводом:  верхний  или
     нижний регистр, форматирование дат и т.п.
     Следующая таблица показывает все возможные типы формата
     и тип данных, для которых они применяются.
     Пример:
     MESSAGE FORMAT("CU","abcd")  ; высветится ABCD
     MESSAGE FORMAT("D2",5/1/60)  ; высветится May 1,60
     
.

                             - 256 -
 ____________________________________________________________
     
  Формат        Спецификация                          Тип
 ____________________________________________________________
     
 Ширина  Wn     числовые значения                      all
         Wn.m   числовое значение с десятичной точкой  N$
 Выров-  AL     левоустановленный                      all
 ненный  AR     правоустановленный                     all
         AC     центрированный                         all
 Регистр CU     заглавные буквы (верхний регистр)      all
         CL     прописные буквы (нижний регистр)       all
         CC     только заглавные буквы                 all
 Редакти-E$     плавающая запятая                      N,S,$
 рование EC     отделяет каждые три целые цифры        N,S,$
         EZ     печать незначащих нулей                N,S,$
         EB     бланк для печатающих нулей             N,S,$
         EI     международный формат                   N,S,$
         ES     печать в научных системах              N,S,$
         S+     печать "+" или "-" числа               N,S,$
         S-     печать "-" числа                       N,S,$
         SP     печать отрицательного числа            N,S,$
         SD     печать в DB или CR системах            N,S,$
         SC     печать CR после отрицательного числа   N,S,$
         D1     использование формата даты mm/dd/yy    D
         D2     использование формата Month dd/yy      D
         D3     использование формата mm/dd            D
         D4     использование формата mm/yy            D
         D5     использование формата dd-Month         D
         D6     использование формата Mon yy           D
         D7     использование формата dd-Mon-yyyy      D
         D8     использование формата mm/dd/yyyy       D
         D9     использование формата dd.mm.yy         D
         D10    использование формата dd/mm/yy         D
         D11    использование формата yy-mm-dd         D
         LY     использование Yes/No для  True/False   L
         LO     использование On/Off для True/False    L
    Типы:  N  - целое, S - дробная часть, $-валюта,   D-дата,
     L-логическое.


                             - 257 -
 GETCHAR функция считывает символ  из  буфера  клавиатуры  и
     возвращает его ASCII код.
     Синтаксис: GETCHAR ()
     Если буфер клавиатуры пустой, функция GETCHAR() ожидает
     чтобы набрали символ.
     Пример: MESSAGE GETCHAR() высвечивает ASCII код следую-
     щего набранного символа (или следующего символа в буфе-
     ре  клавиатуры,  если пользователь набрал его предвари-
     тельно).
     Пример:  следующий пример показывает,как очистить буфер
     клавиатуры перед приемом  символа.  WHILE  GETCHAR()  ;
     есть ли в буфере символ
       X=GETCHAR     ; считать его
     ENDWHILE
     MESSAGE  "Нажмите клавишу для продолжения"
     X=GETCHAR()     ; считывание символа
     
.

                             - 258 -
 
 IMAGENO выдает номер текущего образа в рабочей области.
     
     Синтаксис: IMAGENO()
     Функция  возвращает номер текущего образа или 0, если в
     рабочей области нет образов.
     Образы считаются начиная с "вершины"  рабочей  области.
     Первый  образ  имеет  номер 1, второй - номер 2, и т.д.
     Заметим, что образы запроса всегда группируются  вместе
     в   верхней   части   рабочей  области.  Пример:  WHILE
     IMAGENO() > 1
              UpImage
             ENDWHILE
                     
 IMAGETYPE  выдает  тип текущего образа.
     Синтаксис: IMAGETYPE()
     Эта  функция  возвращает  строковое значение "Display",
     "Query" или "None"
     Значение "Display" выдается, если  текущий  образ  есть
     высвеченный образ. Высвеченный образ может быть как при
     просмотре форм, так и при просмотре таблиц.
     Значение  "Query" выдается, если текущий образ есть об-
     раз запроса.
     Значение "None" выдается, если образы не представлены.
     Пример:
          IF IMAGETYPE() = "None"
             THEN VIEW "Orders"
          ELSE MESSAGE "Таблица готова к использованию"
                                                       
 INT определяет целую часть числа.
     Синтаксис: INT (<число>)
     Функция удаляет дробную часть числа.
     Пример: MESSAGE INT (1.5)  ; высветится 1
             MESSAGE INT (-1.5) ; высветится -1
             


                             - 259 -
 ISASSIGNED определяет присвоено ли значение переменной  или
     элементу массива.
     Синтаксис: ISASSIGNED (<имя меременной>)
     Выдает True, если указанная переменная или элемент мас-
     сива  имеют  значения  в  текущем контексте, и False- в
     противном случае.
     Заметим, что ссылка на неопределенную переменную приво-
     дит к ошибке. Эта функция дает вам возможность  провер-
     ки, было ли присвоено значение переменным.
     Пример:  MESSAGE  ISASSIGNED(х) ; False, если х не
                                       определен
              х=3
              MESSAGE ISASSIGNED(х)  ; True
                                           
     Следующий пример высвечивает элементы массива А,  кото-
     рым были присвоены значения.
     i=1
     WHILE i=ARRAYSIZE(A)
        IF ISASSIGNED(A[i]) THEN
         MESSAGE "Элементы массива", A[i]
        ENDIF
         i=i-1
     ENDWHILE
             
 ISBLANK проверяет имеет ли выражение пустое значение или нет.
     Синтаксис: ISBLANK(<выражение>)
     Эта функция выдает True, если полю <выражение> присвоено
     пустое значение.
     Пустое строковое значение обозначается " ".
     Пример: MESSAGE ISBLANK(" ") ;высветится True
             MESSAGE ISBLANK(5)   ;высветится False
             MESSAGE ISBLANK([PARTNO]) ; True, если поле те-
                                        кущей записи в рабочей
                                        области пусто, False-в
                                        противном случае
 ISEMPTY  проверяет, пустая ли таблица.
     Синтаксис: ISEMPTY(<имя таблицы>)
     Выдается  значение True, если указанная таблица пустая,
     и False - в противном случае. Если названной таблицы не


                             - 260 -
     существует,   то   выдается    ошибка.    Пример:    IF
     ISEMPTY(x)=True
      THEN MESSAGE "Таблица",х,"пустая"
      ELSE MESSAGE "Таблица",х,"имеет"
      NRECORDS(x),"records"
     ENDIF
     
 ISFIELDVIEW  проверяет, находится ли PARADOX в режиме прос-
     мотра поля. Синтаксис: ISFIELDVIEW()  Если  был  выбран
     режим  FIELD VIEW, то выдается значение True, в против-
     ном случае  выдается  значение  False.  ISFIELDVIEW  не
     имеет аргументов. Пример: VIEW "Stock"
             FIELDVIEW
             MESSAGE ISFIELDVIEW(); выдаст True
     
 ISFILE  проверяет,  существует ли файл.
     Синтаксис: ISFILE(<имя файла>)
     Если  файл с таким именем существует, то выдается значение
     True, в противном случае, выдается значение False.
     Для поиска существующего файла функция использует теку-
     щий директорий. В противном случае, необходимо  указать
     имя драйвера и имя директория.
     Функция не может использоваться для определения сущест-
     вования  таблицы, если эта таблица была создана в тече-
     ние сеанса, в котором вызывалась функция ISFILE.
     Пример: ISFILE ("a:config.sys") ; выдается  True,  если
                                       файл существует
     
.

                             - 261 -
 ISFORMVIEW выдает, находится ли текущий образ в режиме FORM
     VIEW.
     Синтаксис:  INFORMVIEW()  Если в рабочей области
     текущий образ находится в режиме просмотра  форм  (FORM
     VIEW),  данная функция возвращает значение True, в про-
     тивном случае она возвращает  False.  Ошибка  выдается,
     если PARADOX не находится в главном режиме MAIN или ре-
     жиме  редактирования. Функция ISFORMVIEW не имеет аргу-
     ментов. Пример:
      VIEW "orders"
      MESSAGE  ISFORMVIEW () ; возвращает FALSE
      FORMKEY                ; входит в просмотр форм
      MESSAGE  ISFORMVIEW () ; возвращает True
      
 ISINSERTMODE проверяет, находится ли PARADOX в режиме вставки
     INSERT.
     Синтаксис: ISINSERTMODE()
     Эта функция выдает True, если PARADOX находится в режи-
     ме вставки и False - в противном случае.
     Режим вставки определяется индикатором вставки, который
     появляется в верхнем правом углу экрана в режиме  Отче-
     та,  режиме  Форм  и редакторе скриптов. Во всех других
     контекстах,  при  вызове  функции  ISFORMVIEW  выдается
     ошибка. Пример: IF ISFORMVIEW () = FALSE
         THEN
           TEXT
             CAREFULI
           ENDTEXT
     ENDIF
      
  ISTABLE проверяет, существует ли данная таблица.
     Синтаксис: ISTABLE (<имя таблицы>)
     Возвращает True,  если  названная  таблица  существует,
     False в противном случае.
     Функция  использует  для нахождения таблицы текущий ди-
     ректорий. Если имя таблицы квалифицируется определенным
     драйвером и находится в другом директории, то  указыва-


                             - 262 -
     ется  путь  доступа. Испльзование функции ISTABLE пред-
     почтительнее, чем ISFILE, т.к. она всегда  используется
     для  определения  существования только таблиц.
     
     Пример:
     
     ISTABLE ("orders") ; выдает TRUE, если таблица orders
                          ; существует в текущм рабочем дир-
                          ; ектории PARADOXA
     
     ISTABLE ("b:\\data\\stock")  ; выдает TRUE, если таблица
                                  ; stock существует в дирек-
                                  ; тории \data драйвера b:
      
 LEN  выдает длину сроки и выдает количество символов в ней.
     Синтаксис: LEN (<выражение>)
     Пример:
      MESSAGE LEN ("abc")     ; = 3
      MESSAGE LEN (456)       ; = 3
      MESSAGE LEN ("")        ; = 0
     
 LN  вычисляет натуральный логарифм числа.
     Синтаксис: LN(<выражение>)
     Функция возвращает логарифм числа по основанию "е"аргу-
     мента. Константа "е" равна 2.7182845905.
     Если  значение  аргумента меньше либо равно 0, выдается
     ошибка.
     Обратная функция - EXP.
     Смотрите LOG для вычисления логарифма числа по  основа-
     нию 10.
     
     Пример:
     
     MESSAGE LN (1)     ; = 0
     MESSAGE LN (85)    ; = 4.44265
 


                             - 263 -
     
 LOG вычисляет логарифм числа
     Синтаксис: LOG(<выражение>)
     Функция возвращает логарифм числа по основанию 10. Если
     значение аргумента меньше либо равно 0, выдается  ошиб-
     ка.
     Обратная функция - EXP.
     Пример:
     MESSAGE LOG (1)     ; = 0
     MESSAGE LOG (10)    ; = 1
     
 LOWER  перевод строки в нижний регистр (маленькие буквы)
     Синтаксис: LOWER(<строка>)
     Эта  функция  переводит свой аргумент сначала в строку,
     если это необходимо, а затем  переводит  в  нижний  ре-
     гистр.
     Пример:
     LOWER ("ankA") ; ahka
     LOWER ("DATA") ; data
     
 MATCH проверяет, соответствует ли данная строка  образцу.
     Синтаксис: MATCH(<строка>,<образец>,<переменная  1>,...
     <переменная n>)
     Строка-образец, состоит из произвольных символов, чере-
     дующихся с элементами универсального сравнения,  такими
     как ".." и "@". Элемент ".." сопоставляется с любым ко-
     личеством  символов  в то время, как "@" сопоставляется
     только с единственным символом. Как и в запросах   раз-
     личие верхнего и нижнего регистра не происходит.
     Если  сравнение  прошло  успешно,  то выдается значение
     True, в противном случае - False.
     Если функция снабжена именами переменных  (присутствуют
     поля  (переменная  1), (переменная n)), и сопоставление
     прошло успешно, то части строки сопоставляются  с  эле-
     ментами  универсального  сопоставления  и присваиваются
     переменным слева направо.


                             - 264 -
     Пример:
     t=MATHC("Dogfood","D..")      ; t=True
     t=MATHC("Dogfood","dog..")    ; t=True
     t=MATHC("Dogfood","..d..d..") ; t=True
     t=MATHC("Dogfood","..d..d..",x,y,z); x=" ",y="ogfoo",
                                          z=" ", t=True
     
 MAX функция  выдает максимальное число из двух чисел.
     Синтаксис: MAX(<число 1>,<число 2>)
     Используется только для числовых выражений.
     Пример: MESSAGE  MAX(18,4) ; =18
     
 MENUCHOICE выдает строку, содержащую текущий выбор меню.
     Синтаксис: MENUCHOICE()
     Если  в  настоящее время выведен  на дисплей и высвечен
     выбор, MENUCHOICE возвращает значения высвеченного  вы-
     бора как строку. Если никакого выбора не было, то выда-
     ется ошибка.
     
 MIN функция  выдает минимальное число из двух чисел.
     Синтаксис: MIN(<число 1>,<число 2>)
     Используется только для числовых выражений.
     Пример: MESSAGE  MIN(18,4) ; = 4
     
 MOD  модуль одного числа отноcительно  другого.
     Синтаксис: MOD(<число 1>,<число 2>)
     Значение  MOD(,) есть модуль или остаток от деле-
     ния числа х на число у. Если у=0, то возвращается 0.
     Для вычисления используется формула:x-(y*INT(x/y)
     Пример: MESSAGE MOD (8,-3)  ; = 2
             MESSAGE MOD (75,12) ; = 3
     
 MONITOR функция выдает  тип текущего монитора.
     Синтаксис: MONITOR()
     Возможны значения:"Mono","B&W" и "Color".
     Пример: IF MONITOR()="Color"
                THEN STYLE ATTRIBUTE 148
                ELSE STYLE REVERSE
             ENDIF
             TEXT
               Внимание
             ENDTEXT


                             - 265 -
     
 MONTH выдает месяц даты в виде числа.
     Синтаксис: MONTH (<дата>)
     Пример:MESSAGE MONTH (5/1/60)   ; = 5
            MESSAGE MONTH (1-may-60) ; = 5
     
 MOY  выдает месяц даты в виде строки.
     Синтаксис: MOY (<дата>)
     Функция возвращает трехбуквенное  сокращенное  название
     месяца данной даты.
     Для  обозначения сокращенного названия месяца использу-
     ются сокращения:
     Jan, Feb, Mar, Apr, May, Jun,
     Jul, Aug, Sep, Oct, Nov, Dec
     Пример:
     MESSAGE MOY(5/1/60)   ;=May
     
 NFIELDS выдает количество полей в таблице.
     Синтаксис: NFIELDS(<имя таблицы>)
     Если таблица не существует, то выдается ошибка.
     Пример: Если таблица имеет четыре поля, то:
        MESSAGE NFIELDS("TAN")  ; =4
     
 NIMAGES  выдает количество образов в рабочем пространстве.
     Синтаксис: NIMAGES()
     Если  в  данный  момент в рабочей области не содержится
     образов, то выдается 0.
     Пример: Следующий  цикл  имеет  такой  же  эффект,  как
     CLEARALL, т.е. он очищает рабочую область.
     WHILE (NIMAGES() > 0)
      CLEARIMAGE
     ENDWHILE
     


                             - 266 -
 NKEYFIELDS  выдает количество ключевых полей в таблице.
     Синтаксис: NKEYFIELDS(<имя таблицы>)
     Если  таблица  не имеет ключевых полей, возвращается 0.
     Если таблица с данным именем не существует, то выдается
     ошибка.
     Пример:  Если таблица  содержит два ключевых поля, то:
           MESSAGE NKEYFIELDS("TAN") ; =2
     
 NPAGES  выдает количество страниц в отчете или форме.
     Синтаксис: NPAGES()
     Функция  не  имеет аргументов. В режиме отчета, функция
     возвращает общее количество страниц в отчете  (показан-
     ная  правым  числом  в индикаторе страниц в правом углу
     экрана). В режиме форм, функция возвращает общее  коли-
     чество страниц в форме. (показанная правым числом в ин-
     дикаторе  страниц в правом углу экрана). Во всех других
     контекстах эта функция дает ошибку.
     Пример: VIEW "tan"
             FORMKEY
             PICKFORM 2
             MESSAGE NPAGES()
     
 NRECORDS  выдает  количество записей в таблице.
     Синтаксис: NRECORDS(<имя таблицы>)
     Если  таблицы с таким именем не существует, то выдается
     ошибка.
     Пример: EMPTY "TAB"             ; очистить таблицу
             MESSAGE NRECORDS("TAB") ; выдает 0
     
 NROWS выдает количество строк в текущем образе таблицы  или
     спецификации отчета.
     Синтаксис: NROWS()
     Функция  должна быть вызвана, когда PARADOX находится в
     режиме редактирования или в  главном  режиме.  Во  всех
     других режимах  вызов этой функции дает ошибку. В глав-
     ном  режиме или режиме редактирования текущий образ мо-
     жет быть или образом на дисплее, или  образом  запроса.
     Образ  дисплея  должен  быть  в режиме просмотра таблиц


                             - 267 -
     (Table View). Минимальное количество  рядов  1,  макси-
     мальное 22. В режиме Отчета NROWS выдает общее количес-
     тво рядов в текущей спецификации.
     Пример:  Предположим,  что  таблица "Name" имеет 22 или
     более записей.
        VIEW "Name"
        MENU{IMAGE}{TABLESIZE} Up Up Up ;уменьшить  размер
                                         дисплея на 3 строки
        MESSAGE NROWS()                 ; = 19
     
 NUMVAL  преобразует строку в число.
     Синтаксис: NUMVAL(<строка>)
     Функция превращает значение поля <строка> в число.
     Если поле <строка> имеет недопустимую для формата выво-
     да PARADOXa форму, выдается ошибка.
     Пример:
     NUMVAL("5")          ; =5
     NUMVAL("/543.245)")  ; =-543247
     NUMVAL("")           ; =Error
     
 PAGENO выводит номер текущей страницы в отчете или форме.
     Синтаксис: PAGENO()
     Функция PAGENO не имеет аргументов.
     В  режиме  Отчет   функция  PAGENO выдает текущий номер
     страницы (левое число в индикаторе  страниц  в  верхнем
     правом углу экрана)
     В  режиме  формы и Главном режиме, PAGENO выводит номер
     страницы созданной формы, который расположен в  верхнем
     правом углу экрана.
     Во всех других случаях использование этой функции выда-
     ется ошибка скрипта.
     Пример:VIEW "TAB"
            FORMKEY
            PICFORM 4
            PgDn
            PgDn
            MESSAGE PAGENO()
     В  этом  примере  предполагается,  что форма 4 имеет по
     крайней мере 3 страницы.


                             - 268 -
     
 PAGEWIDTH  выдает ширину строки текущей спецификации отчета.
     Синтаксис: PAGEWIDTH ()
     Функция не имеет аргументов. Если PARADOX не  в  режиме
     Отчета, то выдается ошибка скрипта.
     Пример: Предположим, что ширина текущей страницы отчета
     равна 80 столбцов.
     MESSAGE PAGEWIDTH()     ; = 80
                                   
 PI  выдает число PI (число PI равно 3,14159265).
     Пример: MESSAGE SIN (PI/2) ; =1
                                    
 PMT погашение закладной стоимости.
     Синтаксис: PMT(<начальная сумма>,<прибыль>,<период>)
     Заметим, что платежи погашаются в конце каждого периода.
     Если  Ваш  период  для  функции PMT - месяц, то прибыль
     равна ежегодной прибыли, деленной на 12. Если ваш пери-
     од для функции PMT - квартал, то прибыль равна  ежегод-
     ной прибыли, деленной на 4. Пример: Начальная сумма за-
     ема
     $1.000, платежи погашаются в конце каждого месяца, про-
     должительность заема равна два года.  PMT  (1000,  .01,
     24)
     
 POW  возведение числа в степень.
     Синтаксис: POW(<число>,<степень>)
     Пример: MESSAGE POW(7,2)    ;=49
             MESSAGE POW(2,10)   ;=1024
     

 PRINTERSTATUS проверяет  готовность принтера.
     Синтаксис: PRINTERSTATUS()
     Возвращает True, если принтер подключен и готов к рабо-
     те, False в противном случае.
     Пример:IF PRINTERSTATUS() = "True"
               THEN REPORT "orders" "R"
               ELSE MESSAGE "Включите, пожалуйста, принтер"
            ENDIF


                             - 269 -
     
 PV  вычисляет значение в виде серии взносов.
     Синтаксис: PV(<плата>,<прибыль>,<период>)
     Эта функция вычисляет настоящее значение из серии  рав-
     ных платежей, вкладываемых данным приращением прибыли в
     течение данного числа периодов.
     Пример: MESSAGE PV(200, .1, 12) ;=1362,738
     
 RAND  выдает случайное число от 0 до 1.
     Синтаксис: RAND ()
     Выданное значение есть случайное число, нормально расп-
     ределенное от 0 до 1. 0 = < RAND() < 1.
     
 RECNO выдает номер текущей записи.
     Синтаксис: RECNO()
     Функция  выдает  номер  текущей записи текущего образа.
     Если в рабочей области не содержится образов, или теку-
     щий образ  не  является  дисплейным  образом,  выдается
     ошибка скрипта.
     Пример: VIEW "TAN"
             MOVETO RECORD 15
             MESSAGE RECNO()        ; = 15
     
 ROUND  функция  округляет число.
     Синтаксис: ROUND(<число>,<степень округления>)
     Поле  (степень  округления) должно быть целым числом от
     -15 до 15 включительно. Если поле (стапень  округления)
     содержит 0, то число округляется до  ближайшего  целого
     числа.
     Пример: MESSAGE ROUND (123.456,0)     ; =123
             MESSAGE ROUND (12345.6789,2)  ; =12345.68
             MESSAGE ROUND (12345.6789,-2) ; =12300
             MESSAGE ROUND (-123.456,1)    ; =123.5
     


                             - 270 -
 ROW выдает  позицию ряда курсора на канве PALa.
     Синтаксис: ROW()
     Функция выдает число от 0 до 24.
     Заметим,  что  функции ROW и COL не выдают информации о
     позиции курсора в рабочей области.
     Пример: Cледующий скрипт высвечивает диагональную линию
     на экране.
     CLEAR
      @ 0,0
      X=ROW()
      Y=COL()
     WHILE X<24
      ?? "\\"
      X=X+1
      Y=Y+1
      @ X,Y
     ENDWHILE
     
 ROWNO  выдает номер строки текущей записи на текущем образе
     спецификации отчета, формы или образе запроса.
     Синтаксис: ROWNO()
     В режиме  Редактирование  или  Главном  режиме  функция
     ROWNO выдает позицию текущей записи. Верхний ряд высве-
     ченного образа есть ряд с номером 1. Максимальное число
     рядов,  которое  может  быть высвеченно в образе, равно
     22. Функция работает с дисплейными образами  как в  ре-
     жиме просмотра таблиц, так и в режиме просмотра форм. В
     режиме Отчет, функция ROWNO - это текущая линия в теку-
     щей  спецификации отчета. В режиме Форм ROWNO - это те-
     кущая линия текущей страницы высвеченной формы.  Макси-
     мальный номер ряда для формы равен 22. Пример: В состо-
     янии  Main  или Edit выдается номер записи первого ряда
     текущего образа таблицы.
             RECNO() - ROWNO() + 1
     


                             - 271 -
 SEARCH функция осущетвляет поиск подстроки в другой строке.
     Синтаксис: SEARCH (<подстрока>,<строка>)
     Функция SEARCH превращает свои  аргументы  в  строки  и
     ищет подстроку внутри строки. Если подстрока появляется
     внутри  строки, то выдается номер позиции самого левого
     совпадающего символа. Если подстрока не  находится,  то
     выдается 0. Функция SEARCH нечувствительна к регистрам.
     Пример: MESSAGE SEARCH("lia","GOLIATH")   ; =3
             MESSAGE SEARCH("lai","GOLIATH")   ; =0
             MESSAGE SEARCH(3,435)   ; =2
     
 SIN вычисляет синус угла в радианах.
     Синтаксис: SIN (<числовое выражение>)
     Значения должны быть из интервала [-1;1]
     Пример: y=SIN(0)    ;возвращает 0
             
 SPACES  выдает строку, состоящую из определенного числа про-
     белов.
     Синтаксис: SPACES(<число>)
     Значение в поле (число) должно быть в интервале от 0 до
     255 включительно.
     Пример: MESSAGE SPACES(5) ; высветит "_ _ _ _ _ "
     Пример: Печатаются поля переменной длинны  таким  обра-
     зом, что их содержимое попадает в столбцы 1, 31 и 71.
      PRINT name, SPACES(31 - LEN(name)), address,
                  SPACES(40 - LEN(address)), phone
     
 SQRT вычисляет  квадратный корень числа.
     Синтаксис: SQRT(<число>)
     Поле (число) должно содержать только положительные зна-
     чения, если в нем содержится отрицательное значение, то
     выдается ошибка.
     Пример: MESSAGE SQRT(9)      ; = #
             MESSAGE SQRT(-3)     ; ошибка
     
 STRVAL функция  преобразует выражение любого типа в строку.
     Синтаксис: STRVAL(<выражение>)
     Если аргумент строковый, он остается без изменений, ес-
     ли аргумент - дата, то выражение приобразуется в форма-


                             - 272 -
     те  mm/dd/yy,  если  логическое  выражение, то выдается
     True или False. В основном, все функции  PALa,  которые
     производят  действия со строками, автоматически перево-
     дят их аргументы в строки, поэтому, функция  STRVAL  не
     очень   часто   используется.  Пример:  MESSAGE  STRVAL
     ("Программа") ;="Программа"
             MESSAGE STRVAL (5*5)          ;=25
             MESSAGE STRVAL (5/1/60 + 1)   ;=5/2/60
             MESSAGE (STRVAL(2)+STRVAL(3)) ;=23
     
 SUBSTR  функция  переводит подстроку  в строку.
     Синтаксис: SUBSTR(,<начальная позиция>,<длина>)
     Функция SUBSTR выводит подстроку строки, начинающуюся с
     позиции  <начальная  позиция> и содержащую число симво-
     лов, указанных в поле <длина>. Поля <начальная позиция>
     и  <длина>  -  числовые  поля. Начальная позиция должна
     быть целым числом, не менее 1 и  не  более,  чем  число
     символов содержащихся в поле <строка>. Поле <длина> вы-
     числяется по формуле:
      <длина> = <строка>+1 - <начальная позиция>
     Пример: x="Congratutations"
             MESSAGE SUBSTR (x,7,1)   ; = t
               
 SYSMODE выдает  текущее состояние PARADOXа.
     Синтаксис: SYSMODE()
     Функция  выдает строку, которая показывает в каком сос-
     тоянии находится PARADOX. Строка может  быть  одной  из
     следующей:   "MAIN",   "CREATE",  "DATAENTRY",  "EDIT",
     "FORM", "REPORT", "RESTRUCTURE", "SCRIPT", "SORT".
     
 TABLE выдает имя текущей таблицы.
     Синтаксис: TABLE()
     Функция выдает строку, содержащую имя таблицы  текущего
     образа.  Образ может быть как дисплейным, так и образом
     запросов. Дисплейный образ  может  быть  как  в  режиме
     просмотра  форма, так и в режиме просмотра таблиц. Если
     в рабочей области нет таблиц, то выдается ошибка скрип-
     та.


                             - 273 -
     Пример: MESSAGE  TABLE ()
     В следующем примере курсор передвигается к образу ниже,
     если текущая таблица не "orders".
     IF TABLE() <> "orders"
        THEN DownImage
     ENDIF
     
 TAN  вычисляет тангенс угла.
     Синтаксис: TAN(<числовое выражение>)
     Вычисляет тангенс угла, выраженного в радианах.
     Поле <числовое выражение>  должно  содержать  значение,
     находящееся в интервале от -PI/2 до PI/2.
     Обратные функции ATAN и ATAN2.
     Функция TAN возвращает значение от наиболее отрицатель-
     ного к наиболее положительному числу PALa.
     Пример: MESSAGE TAN(PI()/4)   ;=1
     
 TIME выдает  время дня  как строку.
     Синтаксис: TIME()
     Функция  выдает строку, дающую текущее время в 24 часо-
     вом формате. Выводимая строка имеет форму: "hh:mm:ss".
     Функция выдает значение времени, установленного в Вашем
     компьютере.
     Пример: IF TIME() >="23:00:00"
                THEN MESSAGE "Good Crief: It's late "
             ENDIF
     
 TODAY выводит сегодняшняшнюю дату.
     Синтаксис: TODAY()
     Пример: MESSAGE TODAY()
     
 TYPE  выводит строку, дающую тип выражения.
     Синтаксис: TYPE (<выражение>)
     Функция выводит строку, дающую тип значения  аргумента.
     Если значение поля <выражение> логическое, то возвраща-
     ется True или False.


                             - 274 -
     Пример: MESSAGE TYPE ("Dogfood") ;="A7"
             MESSAGE TYPE (27.5)      ;="N"
             MESSAGE TYPE (5/1/60)    ;="D"
             MESSAGE TYPE (5=5)       ;="L"
     
 UPPER  перевод строки в верхний регистр
     Синтаксис: UPPER (<выражение>)
     Эта  функция переводит свой аргумент в строку, если это
     необходимо, а затем выводит ее заглавными буквами. Фун-
     кция эффективна только для букв.
     Пример: MESSAGE UPPER ("abC")      ; = "ABC"
     
 VERSION выдает номер версии PARADOXа.
     Синтаксис: VERSION()
     Функция выдает номер версии PARADOXa, который использу-
     ется в данный момент. Эта функция  может  исользоваться
     для подтверждения того, что Ваши приложения будут рабо-
     тать во всех версиях PARADOXa. Если используется версия
     1.0, то выдается 1, если используется  версия  1.1,  то
     выводится 1.1. Пример: IF VERSION()=1
                THEN PLAY "SCRIPT 1"
                ELSE PLAY "SCRIPT 2"
             ENDIF
     
 WINDOW  выдает текст текущего окна сообщений PARADOXa.
     Синтаксис: WINDOW()
     Если окно сообщений в настоящий момент высвечено на ра-
     бочей  области  PARADOXa, то WINDOW возвращает значение
     сообщения, содержащееся в окне. Если в рабочей  области
     окно  в  данный  момент  не представляется, то выдается
     пустая строка.
     Заметим, что WINDOW  полезна  только  внутри  скриптов,
     т.к.,  если  сообщения высвечиваются в рабочей области,
     для выбора VALUE выбор WINDOW дает эффект очистки сооб-
     щения с экрана.
     


                             - 275 -
     Функция WINDOW не имеет аргументов. Она не имеет досту-
     па к сообщениям, высвеченным на канве PALa  посредством
     команды MESSAGE. Она высвечивает только сообщения, сге-
     нерированные системой.
     Пример:  IF  WINDOW() ="Нажмите клавишу [F9], если Вы
                             хотите изменить"
                  THEN EDITKEY
              ENDIF
 YEAR  выдает год даты как число.
     Синтаксис: YEAR(<дата>)
     Функция выводит значение года как число.
     Пример: MESSAGE YEAR (5/1/60)     ; = 1960
             MESSAGE YEAR (1-may-60)   ; = 1960


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