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



 

Часть 4

4.79 RELEASE
---------------------------------------------------------------

   Освободить память, занятую переменными памяти

   Формат: RELEASE <список_перем_пам>
           RELEASE ALL [LIKE/EXCEPT <скел>]
      
   Команда  RELEASE используется для удаления из памяти перемен-
ных и программ на Ассемблере.
   Команда RELEASE <список_перем_пам> используется для  удаления
только тех переменных, которые приведены в списке.
   Команда  RELEASE  ALL удаляет из памяти все сохраняемые в ней
переменные памяти.
   Команда RELEASE ALL LIKE/EXCEPT <скел> используется либо  для
удаления всех переменных памяти, аналогичных приведенному скеле-
ту  <скел>, либо всех переменных памяти, кроме тех, которые ана-
логичны приведенному скелету <скел>. <скел> имеет ту  же  форму,
что и в формате команды DISPLAY FILES.

   Примеры:

   *.STORE 59.95 TO T:cost
   *.STORE 49.95 TO M:cost
   *.STORE 39.95 TO Cost
   *.STORE "THE BLUE BROTHERS" TO T:movie
   *.STORE "THE COTTON CLUB" TO M:movie
   *.STORE "SOUNDER" TO Movie
   *.DISPLAY MEMORY
   T:COST      Pub   N         59.95   (         59.95000000)
   M:COST      Pub   N         49.95   (         49.95000000)
   COST        Pub   N         39.95   (         39.95000000)
   T:MOVIE     Pub   C    "THE BLUES BROTHERS"
   M:MOVIE     Pub   C    "THE COTTON CLUB"
   MOVIE       Pub   C    "SOUNDER"
         6 variables defined            64 bytes used
       250 variables available        5936 bytes available

   *.RELEASE ALL LIKE T:*
   *.DISPLAY MEMORY
   M:COST      Pub   N         49.95   (         49.95000000)
   COST        Pub   N         39.95   (         39.95000000)
   M:MOVIE     Pub   C   "THE COTTON CLUB"
   MOVIE       Pub   C   "SOUNDER"
         4 variables defined            38 bytes used
       252 variables available        5962 bytes available

   *.RELEASE ALL EXCEPT M:*
   *.DISPLAY MEMORY
   M:COST      Pub   N         49.95   (         49.95000000)
   COST        Pub   N         39.95   (         39.95000000)
   M:MOVIE     Pub   C   "THE COTTON CLUB"
         2 variables defined            23 bytes used
       254 variables available        5977 bytes available

   *.RELEASE ALL
   *.DISPLAY MEMORY
         0 variables defined             0 bytes used
       256 variables available        6000 bytes available

   Смотри также: CLEAR MEMORY, RETURN, SAVE, STORE


4.80 RELEASE MODULE
---------------------------------------------------------------

   Освобождает область памяти, занятую программным модулем в
двоичном формате

   Формат: RELEASE MODULE <файл>

   Команда  RELEASE MODULE <файл> удаляет из памяти программы на
Ассемблере, которые были ранее загружены в память при помощи ко-
манды LOAD.

   Смотри также: CLEAR MEMORY, LOAD, CALL


4.81 RENAME
---------------------------------------------------------------

   Переименовать дисковый файл

   Формат: RENAME <стар_файл> TO <нов_файл>

   Команда RENAME используется для переименования файла и назна-
чения ему вместо его текущего  имени  <стар_файл>  нового  имени
<нов_файл>.  Расширения  имен  файлов должны быть ведены как для
старого  имени  файла  <стар_файл>,  так  и  для  нового   имени
<нов_файл>. Могут быть приведены указатели дисководов, если фай-
лы расположены не на принятом по умолчанию дисководе.
   Для  работы команды RENAME должны выполняться несколько усло-
вий. Первое, файл с именем <нов_файл>  не  должен  существовать.
Второе,  файл  с  именем  <стар_файл> должен существовать и быть
закрытым.
   
   Смотри также: CLOSE, COPY


4.82 REPLACE
---------------------------------------------------------------

   Корректировка записей базы данных

   Формат: REPLACE [<диапазон>] <поле>
           WITH <выраж>
           [,<поле2> WITH <выраж2>...]
           [FOR <логич_выраж>]
           [WHILE <логич_выраж>]

   Для активного файла базы данных команда REPLACE выполняет за-
мену данных, находившихся в поле <поле> на данные, приведенные в
выражении <выраж>. При необходимости может быть указан  параметр
диапазона  [диапазон]. Диапазоном по умолчанию является одна те-
кущая запись.
      
    _________________________________________
    ! В связи с тем,  что  команда  REPLACE !
    ! производит корректировку активных ин- !
    ! дексных  файлов  при каждом своем вы- !
    ! полнении, корректировки не должны вы- !
    ! полняться в отношении ключевого  поля !
    ! индексированного  файла с использова- !
    ! нием операторов [диапазон], FOR  <вы- !
    ! раж> или WHILE <выраж>.               !
    !_______________________________________!

   Если это предупреждение проигнорировано, то существует  веро-
ятность, что будет произведена только часть необходимых замен.
   В числовых полях в случае, когда выражение WITH по своей дли-
не превосходит ширину поля, команда REPLACE согласует их следую-
щим образом:

   *  Дробные десятичные знаки будут отброшены, а остальные зна-
чащие цифры округлены. Если значения все же не согласуются

   * Cодержимое указанного поля будет заменено на числа в  науч-
ном  формате  (с фиксированной запятой)(При этом уменьшится точ-
ность). Если и в этом случае не будет достигнута согласованность

   * Содержимое поля будет заменено на звездочки (*).

   Пример:

   *.USE Video
   *.REPLACE ALL Cost_rent WITH Cost_rent+.25
      35 replacements


4.83 REPORT
---------------------------------------------------------------

   Создать отчет

   Формат: REPORT [FORM <файл>]
           [<диапазон>]
           [FOR <логич_выраж>]
           [WHILE<логич_выраж>]
           [PLAIN/HEADING <симв_выраж>]
           [NOEJECT]
           [TO PRINT]
           [TO FILE <файл>]
           [SUMMARY]

   Команда REPORT используется для создания отчетов по  активной
в текущий момент базе данных. Отчетные форматы следует создавать
при  помощи  команд  CREATE или MODIFY REPORT. Отчеты могут быть
направлены на принтер, на экран, или в текстовый файл ASCII.
   Для форматных файлов отчета расширением по умолчанию  принято
.FRM.
   Будут  распечатаны  все записи в составе базы данных, если не
заданы операторы диапазона [диапазон], FOR или WHILE <выраж>.
   Если задан дополнительный параметр PLAIN, FoxBASE+ будет  по-
давлять  печать  номеров  страниц  и даты в верхней части каждой
страницы отчета. Заголовок страницы будет выведен только в нача-
ле отчета. Парметр HEADING используется  для  указания  дополни-
тельной  строки заголовка, которая печатается на каждой странице
отчета. Если указаны оба параметра, PLAIN  и  HEADING,  параметр
PLAIN будет иметь более высокий приоритет.
   Параметр NOEJECT подавляет начальный прогон формата перед на-
чалом печати отчета.
   Параметр  TO PRINT указывает, что отчеты будут направляться и
на экран и на принтер. Если этот  параметр  отсутствует,  отчеты
направляются только на экран.
   Параметр TO FILE направляет отчет в текстовый файл ASCII.
   Параметр  SUMMARY позволяет подавлять вывод каждой строки от-
чета. Будут выводиться только промежуточные и окончательные ито-
ги.

   Смотри также: CREATE REPORT, MODIFY REPORT


4.84 RESTORE FROM
---------------------------------------------------------------

   Восстановить переменные памяти из файла .MEM

   Формат: RESTORE FROM <файл> [ADDITIVE]

   Команда RESTORE восстанавливает значения  переменных  памяти,
сохраненных  ранее командой SAVE в файл .MEM и помещает их в па-
мять. При вводе команды RESTORE переменные памяти, находящиеся в
памяти в текущий момент, будут удалены, если в строке команды не
указано управляющее слово ADDITIVE. Если  количество  переменных
памяти,  вводимых  в память с использованием параметра ADDITIVE,
превышает максимально разрешимое в FoxBASE+ количество  перемен-
ных  памяти,  то из файла .MEM будет перенесено в память столько
переменых памяти, сколько является допустимым.
   Когда команда RESTORE вводится в составе  программного  файла
.PRG,   все  переменные  памяти  восстанавливаются  со  статусом
PRIVATE. Если вы вводите команду RESTORE от точечной  подсказки,
переменные памяти восстанавливаются со статусом PUBLIC.

   Примеры:

   *.STORE "GREMLINS" TO Movie
   *.STORE 49.95 TO Cost
   *.LIST MEMORY
   COST        Pub   N         49.95   (         49.95000000)
   MOVIE       Pub   C   "GREMLINS"
         2 variables defined            16 bytes used
       254 variables available        5984 bytes available

   *.SAVE TO Movie
   *.RELEASE ALL
   *.LIST MEMORY
         0 variables defined            0 bytes used
       256 variables available        6000 bytes available

   *.RESTORE FROM Movie
   *.LIST MEMORY
   COST        Pub   N         49.95   (         49.95000000)
   MOVIE       Pub   C   "GREMLINS"
         2 variables defined            16 bytes used
       254 variables available        5984 bytes available

   Смотри также: SAVE, RELEASE


4.85 RESTORE SCREEN
---------------------------------------------------------------

   Восстановить образ экрана из памяти

   Формат: RESTORE SCREEN [FROM <перем_пам>]

   Команда  RESTORE  SCREEN востанавливает текущий вид экрана из
буфера или переменной памяти. Образ экрана долен быть ранее  за-
несен в буфер или переменную памяти командой SAVE.
   Переменные памяти, содержанием которых является образ экрана,
при  выводе командой DISPLAY MEMORY обозначаются "S". Образы эк-
рана, сохраненные в переменных памяти, могут заноситься и  вызы-
ваться  из файлов переменных памяти аналогично другим переменным
памяти. Возможность сохранять и  восстанавливать  образы  экрана
при  помощи команд SAVE и RESTORE избавляет вас от необходимости
последовательно восстанавливать вид экрана каждый раз при  необ-
ходимости вывода.

   Смотри также: SAVE SCREEN

   
4.86 RESUME
---------------------------------------------------------------

   Возобновляет выполнение приостановленной программы

   Формат: RESUME

   Команда  RESUME  вызывает  продолжение  выполнения программы,
прерванное командой SUSPEND.
   Выполнение приостановленной  программы  будет  продолжено  со
строки, на которой было приостановлено выполнение.
   Использование команд SUSPEND и RESUME  поможет  разработчикам
при  отладке программ. Когда выполнение программы приостановлено
командой SUSPEND,  можно  увидеть  текущий  статус  конфигурации
FoxBASE+, чтобы понять, из-за чего возникло затруднение.
   Рекомендуется  вводить  команду  CLEAR  или  команды  SAVE  и
RESTORE перед командой RESUME, с тем, чтобы команды, введенные в
период, когда программа была приостановлена, не мешали своим ви-
дом при вводе/выводе на экран.

   Смотри также: CANCEL, RETURN, SUSPEND


4.87 RETRY
---------------------------------------------------------------

   Повторить выполнение предыдущей команды

   Формат: RETRY

   Команда  RETRY  возвращает  управление  вызвавшей  программе.
Строка, которая была выполнена последней в вызвавшей  программе,
выполняется вновь. Команда RETRY аналогична команде RETURN с той
разницей  между  ними,  что  в случае команды RETURN выполняется
следующая строка вызвавшей программы, а в случае команды  RETRY,
как было указано, повторяется выполнение последней строки.
   Команда  RETRY особенно полезна в случае, когда некоторый на-
бор команд должен повторяться до тех пор, пока не будет выполне-
но некоторое условие, или в процедурах обработки ошибок.

   Смотри также: RETURN


4.88 RETURN
---------------------------------------------------------------

   Возвратить управление вызвавшей процедуре

   Формат: RETURN [TO MASTER/<выраж>]

   Команда RETURN является командой, завершающей командный файл.
Затм эта команда возвращает управление вызвавшему файлу, в инте-
рактивный режим или в операционную систему.
   Использование команды RETURN в конце  программы  не  является
обязательным, поскольку выполнение последнего выражения програм-
мы автоматически приведет к выполнению оператора RETURN.
   При  выполнении  команды  RETURN будут удалены все переменные
памяти PRIVATE.
   Если использован параметр TO MASTER, управление передается  в
вызвавшую программу самого верхнего уровня.
   Если  программа будет рассматриваться, как заданная пользова-
телем фукнция, после слова  RETURN  должно  следовать  выражение
<выраж>.  Если программа, которая рассматривается в качестве за-
данной пользователем функции используется также и с командой  DO
<файл>, возвращенное командой RETURN значение игнорируется.

   Смотри также: UFD's, PRIVATE, PUBLIC


4.89 RUN|!

   Выполнить команду DOS

   Форматы: RUN <команда>
            ! <команда>
   
   Команда  RUN  выполянет команду операционной системы, а затем
возвращает управление в FoxBASE+.
              
    _________________________________________________________
    ! Предупреждения:                                       !
    !    1. Для использования команды RUN в   MS-DOS должен !
    ! быть сделан доступным   посредством переменной  среды !
    ! MS-DOS   PATH файл COMMAND.COM.                       !
    ! 2.  Находясь в FoxBASE+ не запускайте программы реор- !
    ! ганизации файловой структуры,  такие,  как  например, !
    ! CHKDSK.  Изменяя содержимое дисков, эти программы мо- !
    ! гут нарушить работу FoxBASE+                          !
    !_______________________________________________________!
   
   Для получения дополнитель ной информации о работе SET COMSPEC
смотрите ваше руководство по DOS.
   
   Примеры:

   *.RUN FOXCOMP Tape=lib.PRG
   *.STORE "07/03/86" TO Today
   *.? DATE()
   06/22/86
   *.! DATE &Today         && изменение системной даты
   *.? DATE()
   07/03/86


4.90 SAVE SCREEN
---------------------------------------------------------------

   Сохранить образ экрана в памяти

   Формат: SAVE SCREEN [TO <перем_пам>]

   Команда SAVE SCREEN сохраняет образ текущего экрана  в  буфер
или в переменную памяти с тем, чтобы восстановить его в дальней-
шем командой RESTORE.
   Переменные памяти, содержанием которых является образ экрана,
при  выводе командой DISPLAY MEMORY обозначаются "S". Образы эк-
рана, сохраненные в переменных памяти, могут заноситься и  вызы-
ваться  из файлов переменных памяти аналогично другим переменным
памяти. Возможность сохранять и  восстанавливать  образы  экрана
при  помощи команд SAVE и RESTORE избавляет вас от необходимости
последовательно восстанавливать вид экрана каждый раз при  необ-
ходимости вывода.

   Смотри также: RESTORE SCREEN


4.91 SAVE TO
---------------------------------------------------------------

   Формат: SAVE TO <файл>
           [ALL LIKE/EXCEPT <скел>]

   Команда SAVE сохраняет текущие переменные памяти в файл памя-
ти.
   Расширением имени файла памяти по умолчанию принято .MEM.
   Если  задан  параметр  ALL LIKE <скел>, сохраняются только те
переменные  памяти,  которые  аналогичны  приведенному   скелету
<скел>.  Если  задан параметр ALL EXCEPT <скел>, сохраняются все
переменные памяти, кроме тех,  которые  аналогичны  приведенному
скелету <скел>.
   При  задании  <скел> вопросительный знак (?) обозначает любой
отедльный символ, а звездочка (*) обозначает наличие или отсутс-
твие любого символа.
   Используйте команду RESTORE для обратной  загрузки  в  память
сохраненных командой SAVE переменных памяти.

   Примеры:


   *.STORE "GREMLINS" TO Movie
   *.STORE 49.95 TO Cost
   *.LIST MEMORY
   COST        Pub   N         49.95   (         49.95000000)
   MOVIE       Pub   C   "GREMLINS"
         2 variables defined            16 bytes used
       254 variables available        5984 bytes available

   *.SAVE TO Movie
   *.RELEASE ALL
   *.LIST MEMORY
         0 variables defined            0 bytes used
       256 variables available        6000 bytes available

   *.RESTORE FROM Movie
   *.LIST MEMORY
   COST        Pub   N         49.95   (         49.95000000)
   MOVIE       Pub   C   "GREMLINS"
         2 variables defined            16 bytes used
       254 variables available        5984 bytes available

   Смотри также: RESTORE, RELEASE, SET SAFETY


4.92 SCATTER
---------------------------------------------------------------

   Перемещать данные из базы данных в массив

   Формат: SCATTER [FIELDS <список_полей>]
           TO <массив>

   Команда SCATTER позволяет перемещать данные из текущей записи
базы данных в массив переменных памяти. Поля записи перемещаются
начиная  с первого указанного поля в массив, заполняя последова-
тельно элементы массива. Если оператор FIELDS отсутствует, пере-
мещаются все поля.
   Если количество элементов массива превосходит количество  пе-
ремещаемых полей, остальные элементы массива сохраняют значения,
которые они имели до выполнения операции SCATTER. Если соответс-
твующий  массив  не  существует или количество элементов массива
меньше, чем количество полей, автоматически создается и описыва-
ется командой DIMENSION новый массив.
   Типы даных элементов массива задаются в соответствии с типами
соответствующих им полей в записи.
   Поля MEMO при выполнении команды SCATTER игноирруются.

   Смотри также: GATHER, DIMENSION
   
   
4.93 SCROLL
---------------------------------------------------------------
                                                               
   Прокручивание экрана
   
   Формат: SCROLL <коорд1>, <коорд2>, <числ_выраж>
   
   По этой команде прямоугольная область  экрана  прокручивается
вверх или вниз.
                 
<коорд1>  - Экранные координаты верхнего левого угла прямоуголь-
            ника
<коорд2>  - Экранные координаты нижнего правого угла прямоуголь-
            ника
<числ_выраж>  - Количество строк, на которое должна быть прокру-
            чена прямоугольная область. Если эта величина  отри-
            цательна,   то   происходит  прокручивание  вниз  на
            <числ_выраж> строк, если положительна - то вверх.
   

4.94 SEEK
---------------------------------------------------------------

   Поиск в индексированной базе данных

   Формат: SEEK <выраж>

   Команда SEEK производит поиск в индексированной  базе  данных
первого вхождения указанного выражения <выраж>, которое соответ-
ствует ключевому выражению.
   Для ввода символьного выражения <выраж> должны быть использо-
ваны  одиночные  кавычки ('), двойные кавычки (") или квадратные
скобки ([ ]).
   Команда SEEK аналогична команде FIND; однако комнда  SEEK  не
ограничена выполнением поиска только для строк символов, и может
быть использована для поиска произвольных выражений.

   Пример:

   *.USE Video
   *.SEEK UPPER("south pacific")
   *.DISPLAY TITLE
   Record#      TITLE
       30      SOUTH PACIFIC

   Смотри также: FIND, INDEX, USE


4.95 SELECT
---------------------------------------------------------------

   Активировать рабочую область

   Формат: SELECT <рабочая область/псевдоним>

   Команда SELECT используется для осуществления переходов между
10 различными рабочими областями. FoxBASE+ автоматически начина-
ет  работу  в области 1. Рабочая область <рабочая область> может
быть указана цифрами с 1 по 10 или буквами с A по J. Когда  база
данных  открыта  в  рабочей области, рабочая область может также
выбираться командой SELECT с помощью псевдонима.
   Аргументом команды SELECT может быть ноль. Если указан  ноль,
то  выбирается еще неиспользованная рабочая область с наименьшим
номером.
   Переменные полей базы данных доступны в любой рабочей  облас-
ти.  При  доступе  к полям, которые расположены в другой рабочей
области, отличной от выбранной в текущий момент командой  SELECT
рабочей области, слледует использовать следующий формат:

   <псевдоним> -> <поле>

   Обычно указатель записи перемещается только в текущей рабочей
области.  Дополнительная информация об одновременном перемещении
указателя записи в нескольких рабочих областях приведена в опии-
сании команды SET RELATION.
   В каждой из рабочих областей  могут  быть  открыты  различные
форматные файлы; однако отдельный форматный файл может быть отк-
рыт только в одной рабочей области.
   Дополнительная  информация по этому вопросу приведена в главе
3 в разделе "Использование псевдонимов при вводе команд".

   Примеры:

   *.SELECT 1
   *.USE Video
   *.SELECT 2
   *.USE Transaction
   *.SELECT 1
   *.? DBF()
   C:\FOX\VIDEO.DBF

   Смотри также: SET RELATION


4.96 SET
---------------------------------------------------------------

   Вызвать управляемую меню команду SET

   Формат: SET

   Команда SET, введенная без аргументов, это  управляемая  меню
команда, которая позволяет вам выводить и корректировать различ-
ные значения параметров команды SET.
   В меню команды SET представлены 7 возможностей: Options/Пара-
метры/,  Screen/Экран/, Keys/Клавиши/, Disk/Диск/, Files/Файлы/,
Margin/Поле/, Decimals/Дробные знаки/.

Options - Эта строка меню позволяет  вывести  список  параметров
            команды SET, имеющих только 2 возможных значения (ON
            и  OFF). Значение SET переключается при нажатии кла-
            виши ВВОД.
Screen - Эта строка меню позволяет изменять цвета и другие пара-
            метры вывода на экран.
Keys - Эта строка меню позволяет  изменять  назначения  функцио-
            нальных  клавиш F2 - F10. Строка символов, представ-
            ляющая соответствующую функцию, может иметь длину до
            254 символов.
Disk - Эта строка меню позволяет вам  указывать  принимаемый  по
            умолчанию дисковод и маршрут (path).
Files - Эта строка меню позволяет вам открывать файлы форматные,
            индексные  и  накопления  (для буферизации экранного
            вывода).
Margin - Эта строка меню позволяет вам  задавать  размер  левого
            поля в отчетах и ширину поля вывода в полях мемо.
Decimals  -  Эта строка меню позволяет вам задавать максимальное
            количестов дробных десятичных знаков, выводимых  при
            распечатке  числовой  функции или результатов расче-
            тов.

4.97 Команды SET
---------------------------------------------------------------
                                 
   Команды управления конфигурацией FoxBASE+

   Команда SET может быть использована с большим количеством ар-
гументов для изменения параметров, управляющих работой FoxBASE+.
В  следующем  далее разделе первыми в командной строке приведены
параметры, заданные по умолчанию. Косая черта  (/)  используется
просто  для разделения различных значений параметров, их не сле-
дует вводить, как часть команды.


   SET ALTERNATE TO [файл] или SET ALTERNATE OFF/ON

   Команда SET ALTERNATE TO [файл] позволяет вам создавать файл,
который может быть использован для сохранения на диске  информа-
ции,  выведенной  на экран. Если файл [файл] не указан в составе
команды, эта команда закрывает файл вывода. Расширение имени та-
кого файла по умолчанию .TXT.
   Команда SET ALTERNATE ON/OFF  используется  для  переключения
записи  выводимой на экран информации в выходной файл, созаднный
командой SET ALTERNATE TO [файл]. ON разрешает такую запись; OFF
выключает этот режим.


   SET BELL ON/OFF

   Эта команда SET включает (ON) или выключает (OFF) режим пода-
чи терминалом звукового сигнала при достижении  или  прохождении
конца поля или при вводе недопустимых данных.


   SET CARRY OFF/ON

   Этот  флажок  дает/отменяет возможность переносить информацию
из ранее введенной записи в новую (текущую) запись при использо-
вании полноэкранных команд APPEND или INSERT. ON разрещает такой
перенос; OFF выключает его.
   Вставленная запись, которая была перенесена в  следующую  за-
пись,  не будет сохранена, если она не изменена каким-либо обра-
зом.


   SET CENTURY OFF/ON

   Эта команда SET позволяет вводить и выводить век при работе с
переменными даты. Параметр ON  выводит  год  в  четырезразрядном
формате. OFF выводит год в двухразрядном формате, при этом в вы-
числениях подразумевается двадцатый век.
   При  установленном  SET CENTURY ON длина выведенной даты сос-
тавляет 10 символов, а длина поля базы данных - 8 символов.


   SET CLEAR OFF/ON

   Команда SET CLEAR определяет, очищается ли экран при выполне-
нии команд:

   * SET FORMAT TO <имя файла>, и

   * QUIT

   Эта команда предоставляет возможность  разработчику  наклады-
вать  образы экранов данных FORMAT на существующий образ экрана.
Если установить SET CLEAR OFF перед вводом команды QUIT, то  об-
раз экрана выхода из FoxBASE+ будет сохранен на экране даже пос-
ле выполнения этого выхода.


   SET COLOR TO [ [/[,]]]
   SET COLOR ON/OFF

   Команда SET COLOR позволяет вам задавать параметры экрана,ис-
пользуемые  с  цветным  или  монохромным  монитором. Команда SET
COLOR TO... может быть исользована в форматных файлах.
   Команда SET COLOR ON/OFF позволяет  вам  переключаться  между
цветным и монохромным режимами вывода.
   Команда  SET  COLOR  TO восстанавливает параметры экрана к их
принятым по умолчанию значениям - черно-белому режиму.
   Команда SET COLOR  TO  [  [/[,]]]
[,]] задает различные параметры для цветных и монох-
ромных  мониторов.  Обычный или особый режим вывода определяются
выбором двух кодов цветов, разделенных косой чертой (/). Парметр
рамки (только для цветных мониторов) представляется одним цвето-
вым кодом.

      -------------------------------------
      | Цвет       Код      Цвет      Код   |
      |                                     |
      |Черный       N      Зеленый    G     |
      |Пусто        X      Пурпур    RB     |
      |Голубой      B      Красный    R     |
      |Коричневый  GR      Белый      W     |
      |Морск.волна BG      Желтый    GR+    |
       ------------------------------------

   Звездочка (*) используется для обозначения  мигания,  а  знак
плюс (+) обозначает повышенную интенсивность.
   Для  монохромных мониторов U является дополнительным парамет-
ром, обозначающим подчеркивание, а l обозначает вывод в  инверс-
ном режиме.
   Параметр цвета "Пусто" удобен при вводе пароля.


   SET CONFIRM OFF/0N

   Обычно,  при  вводе последнего символа в поле в полноэкранном
режиме операция ввода автоматически  завершается.  Затем  курсор
перемещается к следующему полю, и выдается звуковой сигнал, если
установлено SET BELL ON.
   Этот  принятый  по умолчанию режим (CONFIRM OFF) очень удобен
для полей, в которые вводится всегда одинаковое количество  сим-
волов,  например,  почтовые коды, личный номер, номер телефона и
т.д.
   Если задано SET CONFIRM ON, пользователь должен ввести  огра-
ничивающий  символ  (CR,  PgUp, и т.д.) для указания, что ввод в
поле закончен. Это особенно полезно при вводе в поле  информации
переменной длины.


   SET CONSOLE ON/OFF

   В  режиме  ON  весь вывод направляется на экран. В режиме OFF
вывод на экран прекращается.
   Команда SET CONSOLE не оказывает влияния на выполнение команд
@...SAY и @...GET. Вывод команды @...SAY контролируется установ-
кой DEVICE.
                                

   SET DATE <тип даты>

   Эта команда задает формат дат для выражений даты. Ниже приве-
ден список имеющихся типов и форматов дат:

      AMERICAN === mm/dd/yy
      ANSI     === yy.mm.dd
      BRITISH  === dd/mm/yy
      ITALIAN  === dd-mm-yy
      FRENCH   === dd/mm/yy


   SET DEBUG OFF/ON

   Эта команда определяет, направляется ли результат команды SET
ECHO на печать или на экран. Параметр OFF  направляет  вывод  на
экран.  Параметр  ON  направляет вывод на принтер. Одновременное
включение DEBUG и ECHO ON удобно при  отладке  прикладных  прог-
рамм, позволяя выводить трассировку программы на принтер, не на-
рушая нормального вывода на экран.


    SET DECIMALS TO <числ_выраж>

   Эта команда SET позволяет вам задавать минимальное количество
дробных  десятичных  знаков,  выводимых  в результате выполнения
числовых функций и вычислений. Команда SET  DECIMALS  влияет  на
операции деления, EXP(), LOG(), и SQRT().
   По умолчанию выводятся два знака после запятой.
   Количество выводимых дробных знаков определяется в соответст-
вии с видом констант и производимыми вычислениями.
   

   SET DEFAULT TO [<дисковод>]

   Эта  команда  указывает  FoxBASE+  считать названный дисковод
принятым по умолчанию для дальнейших операций ввода/вывода.
                                                             
    ____________________________________________________________
    ! Необходимо заметить, что FoxBASE+ сохраняет в памяти ко- !
    ! мандные файлы для дальнейшего использования, в  связи  с !
    ! этим  командный файл, находящийся в памяти в текущий мо- !
    ! мент, будет выполнен независимо от изменений  назначения !
    ! принятого по умолчанию дисковода.                        !
    !__________________________________________________________!
   
   Для  удаления командного файла, сохраненного в памяти в теку-
щий момент, необходимо выполнить команду  CLEAR  PROGRAM.  После
выполнения команды CLEAR PROGRAM новое принятое по умолчанию на-
занчение дисковода будет соблюдаться во всех случаях.
   Дополнительная  информация  об этой команде приведена в главе
3, в разделе "Поддержка маршрута".


   SET DELETED OFF/ON

   Если в этом случае выбрано ON, любая  команда,  работающая  с
записями  с  использованием параметра диапазона, будет игнориро-
вать записи, помеченные для удаления. Команды, работающие с  те-
кущей  записью  или имеющие диапазон, заданный выражением RECORD
<числ>, игнорируют команду SET DELETED ON.
   Задание значения OFF предоставит таким  командам  возможность
работать со всеми записями, независимо от того, помечены они для
удаления, или нет.
   Команды  INDEX  и  REINDEX работают со всеми записями в файле
базы данных независимо от статуса команда SET DELETED.
   Команда RECALL ALL не отменит пометку никаких  записей,  если
задано SET DELETED ON.


   SET DELIMITERS ON/OFF или
   SET DELIMITERS TO <симв_выраж>/DEFAULT

   Команда SET DELIMITERS позволяет вам указать, выделяете ли вы
поля,  заключая их в символы ограничители в полноэкранном режиме
и тип символов, которые вы при этом используете в качестве огра-
ничителей.
   Состояние SET DELIMITERS OFF является состоянием  по  умолча-
нию. В этом режиме для выделения полей используется режим инвер-
сной видеозасветки. В состоянии SET DELIMITERS ON поля ограничи-
ваются  двоеточиями  (:)  или другими ограничивающими символами,
которые были выбраны командой SET DELIMITERS TO.
   Команда SET DELIMITERS TO <симв_выраж> позволяет  вам  назна-
чить  другой  тип  ограничителей для вывода полей. Символическое
выражение <симв_выраж> может содержать один или два символа. Ес-
ли указывается один символ, этот символ  будет  использован  для
ограничения  полей  и  в начале, и в конце. Если указываются два
символа, первый символ ограничивает начало поля, а второй символ
является завершающим.
   Команда SET DELIMITERS TO DEFAULT устанавливает тип  символов
ограничителей, заданных по умолчанию (двоеточие).


   SET DEVICE TO SCREEN/PRINT

   Эта   команда   SET  управляет  выводом,  заданным  командами
@...SAY. Этот вывод может производиться на экран или на принтер.
   Когда значения <коорд>, заданные в  команде  @...SAY,  меньше
заданных в предыдущей команде @...SAY, пропускается страница.


   SET DOHISTORY OFF/ON

   Эта  команда  SET  позволяет вам определить, сохраняются ли в
буфере HISTORY команды из программных файлов. Эти команды  могут
быть отредактированы и выполнены, когда они помещены около приг-
лашающего знака "точка", точно таким же образом, как если бы они
были введены в интерактивном командном режиме.

    ____________________________________________________________
    ! Необходимо  заметить,  что хотя команда SET DOHISTORY ON !
    ! помогает разработчикам при отладке программ, но она зна- !
    ! чительно замедлит выполнение программы. Пэтому на  расп- !
    ! ространяемых  прикладных  программах  эта команда должна !
    ! быть обязательно выключена (OFF).                        !
    !__________________________________________________________!


   SET ECHO OFF/ON

   Если  задано SET ECHO ON, каждая строка выполняемой программы
будет выводиться на экран в процессе ее выполнения. В  состоянии
ECHO OFF эта информация не выводится.
   Одновременное включение ECHO и DEBUG является удобным средст-
вом при отладке программ.
   В рабочей версии FoxBASE+ режим SET ECHO ON отсутствует.

    ____________________________________________________________
    ! Рекомендация  для пользователей рабочей версии FoxBASE+: !
    ! В качестве дополнительной меры защиты текстов ваших  ис- !
    ! ходных  программ  мы  рекомендуемвам вводить команду SET !
    ! ECHO OFF в качестве самой первой строки программ,  кото- !
    ! рые вы предполагаете поставлять совместно с рабочей вер- !
    ! сией FoxBASE+.                                           !
    !__________________________________________________________!


   SET ESCAPE ON/OFF

   Состояние  OFF  предотвращает  использование  клавиши Esc для
прерывания выполнения программы. В состоянии ON выполнение прог-
раммы может быть прервано при помощи нажатия клавиши Esc.
   Если вы нажмете клавишу Esc при выполнении команды в интерак-
тивном режиме, на экран будет выведено сообщение :
***INTERRUPTED*** /ПРЕРВАНО/.
   Если вы нажмете клавишу Esc в процессе выполнения  командного
файла, на экран будет выведено следующее сообщение:
   Called from <файл> xxxxxxxx - Cancel, Ignore, Suspend?
   /Прервано выполнение файла <файл> - Отменить, игнорировать,
   приостановить?/
   Пользователь  может  выбрать  одно из перечисленных действий,
нажав соответственно C, I или S. Дополнительная информация  при-
ведена в главе 3, разделе "Сообщения об ошибках".


   SET EXACT OFF/ON

   Если  задано  EXACT OFF, могут сравниваться две строки даже в
том случае, есил у них разная длина. При этом, если строки сопа-
дают до конца более короткой из них, они считаются равными. Если
задано EXACT ON, строки должны  совпадать  посимвольно,  и  быть
одинаковой длины для того, чтобы они могли считаться равными.


   SET EXCLUSIVE

   Конфигурация: Многопользовательская
   Команда SET EXCLUSIVE позволяет вам задать статус совместного
использования для открытых файлов баз данных.
   В  состоянии  SET EXCLUSIVE ON никакой другой пользователь не
может работать с используемыми вами файлами базы данных. В  сос-
тоянии  SET EXCLUSIVE OFF все открываемые файлы баз данных могут
использоваться многими пользователями (до тех пор, пока в коман-
де USE отсутствует опция EXCLUSIVE).
   Изменение состояния EXCLUSIVE не влияет  на  состояние  ранее
открытых баз данных.


   SET FIELDS OFF/ON

   Если  задано  SET  FIELDS OFF, то все поля активной в текущий
момент базы данных доступны пользователю. Если задано SET FIELDS
ON, то пользователю будут доступны только те поля, которые пере-
числены в списке в команде SET FIELDS TO.


   SET FIELDS TO [<список_полей>/ALL]

   Эта команда определяет поля, которые будут доступны в  актив-
ной  в  текущий  момент базе данных. Заданный список полей <спи-
сок_полей> будет активирован при вводе команды SET FIELDS ON.
   Команда SET FIELDS TO (без списка  полей  <список_полей>  или
параметра  ALL) удаляет из списка полей <список_полей> все поля,
которые имеются в активной в текущий момент базе данных.
   Команда SET FIELDS TO ALL вводит в список  полей  <список_по-
лей> все поля, имеющиеся в составе активной в текущий момент ба-
зы данных.
   Команда SET FIELDS TO <список_полей> определяет поля, которые
будут  доступны  в  активных в текущий момент файлах баз данных.
Для расширения списка доступных полей могут  вводиться  дополни-
тельные команды SET FIELDS TO <список_полей>.
   Команда SET FIELDS TO <список_полей> автоматически задает ре-
жим SET FIELDS ON.
   В  следующих случаях с именем поля должен быть указан псевдо-
ним:

   * При обращении к полю в базе данных, не занесенной в текущую
     рабочую область.

   * Если в связанных файлах имеются поля с одинаковыми именами.


   SET FILTER TO [<выраж>]

   Команда SET FILTER используется для указания группы записей в
активной базе данных, которая соответствует  указанному  условию
<выраж>.  Если введена эта команда, база данных для пользователя
будет выглядеть так, как-будто в ней есть только  записи,  соот-
ветствующие  указанному  условию.  Условие  SET FILTER оказывает
влияние на все команды, работающие с записями активной базы дан-
ных.
   Команда SET FILTER TO (без выражения <выраж>) выключает отбор
записей в соответствии с ранее введенным выражением.
   Для каждого из активных файлов базы данных может  быть  уста-
новлен отдельный фильтр FILTER.
   Необходимо заметить, что фильтр не действует до тех пор, пока
указатель записи в файле базы данных не будет перемещен.


   SET FIXED OFF/ON

   Эта  команда  SET  позволяет вам указывать количество дробных
десятичных знаков после запятой, выводимых при выводе чисел.
   Если задано SET FIXED OFF, количество дробных знаков при  вы-
воде  определяется  видом констант, переменных и операторов, ис-
пользованных в выражении. Поля базы данных выводятся с указанным
количеством дробных знаков.
   Если задано SET FIXED ON, количество выводимых дробных  деся-
тичных  знаков  определяется командой SET DECIMALS. По умолчанию
задано два дробных десятичных знака.


   SET FORMAT TO [<файл>]

   Эта команда SET использует  дополнительно  созданные  форматы
вывода с командами APPEND, EDIT, INSERT, READ и т.д.
   Если имя файла <файл> в составе команды SET опущено, соответ-
ствтующий форматный файл более не используется.
   Расширение файла <файл> по умолчанию .FMT.
   Путем  введения  команды  READ  в конец каждой страницы могут
быть созданы многостраничные форматные файлы. В одном  форматном
файле  могут быть до 128 страниц. Клавиши PgUp и PgDn могут быть
использованы для перехода между страницами в пределах форматного
файла. При использовании команды READ с форматным файлом имеется
возможность редактирования полей MEMO. (Обычно команде READ поля
мемо недоступны).


   SET FUNCTION <выраж> TO <симв_строка>/<симв_выраж>

   Эта команда SET позволяет вам назначить строку символов (дли-
ной до 254 символов) функциональной клавише. FoxBASE+ преобразу-
ет точки с запятой (;) в составе строки в символы  возврата  ка-
ретки.
   Значение  выражения  <выраж>  может быть в диапазоне от F2 до
F10, включительно.
Хотя клавиша F1 не может быть переназначена таким  способом,  но
еена  можнот  определить  как "hot key"и тем самым иметь возмож-
ность изменить ее функцию.
   Текущее назначение функциональных клавиш может быть  выведено
при помощи команды LIST STATUS. Если не производилось переназна-
чение, при этом будет выведено назначение функциональной клавиши
по умолчанию. Ниже приведены назначения функциональных клавиш по
умолчанию:

Клавиша  Функция       Клавиша    Функция
 
F1       help;              F6       display status;
F2       resume;            F7       display memory
F3       list;              F8       display;
F4       dir;               F9       append;
F5       display structure; F10      edit;


   SET HEADING ON/OFF
 
   В  этой команде SET вы можете указать, выводятся ли заголовки
столбцов для каждого поля при работе в командах  DISPLAY,  LIST,
SUM, и AVERAGE.


    SET HELP ON/OFF

   Эта команда SET используется для совместимости с dBASE, одна-
ко в FoxBASE+ она не выполняет никаких функций.


SET HISTORY ON/OFF

   Команда SET HISTORY ON/OFF позволяет включить и выключить за-
несение команд в буфер HISTORY для их дальнейшего использования.
В состоянии SET HISTORY ON все введенные  команды  будут  сохра-
няться  в буфере HISTORY для вызова, редактирования и повторного
выполнения в дальнейшем. Дополнительные сведения даются в  главе
3,  разделе "Интерактивный ввод и редактирование командной стро-
ки".
   В состоянии SET HISTORY OFF запись команд в буфер прекращает-
ся. Однако команды, занесенные в буфер перед введением этой  ко-
манды  могут все же быть вызваны для редактирования и повторного
выполнения.


   SET HISTORY TO <числ_выраж>

   Эта команда задает количество команд, которые будут  выведены
при  вводе  команд  DISPLAY HISTORY. Она не оказывает влияния на
количество сохраняемых команд. Последний параметр задается пере-
менной HMEMORY в файле CONFIG.
   По умолчанию сохраняются 20 команд.


    SET INDEX TO [<список_файлов>]

   Эта команда SET выбирает один или несколько индексных  файлов
для  использования  с  текущим файлом базы данных. Эти индексные
файлы автоматически корректируются при добавлении  или  удалении
записей в базе данных. Первый файл в списке индексных файлов бу-
дет управляющим индексным файлом. Для изменения управляющего ин-
дексного  файла в списке <список_файлов> может быть использована
команда SET ORDER TO.
   С одним файлом базы данных может быть связано до семи индекс-
ных файлов.
   Если в составе команды опущен список файлов  <список_файлов>,
база данных используется без индексного файла; все ранее исполь-
зованные индексные файлы при этом деактивируются.


   SET INTENSITY ON/OFF
   
   Команда SET INTENSITY указывает, используется ли особый атри-
бут  экрана  для  вывода  вводимых полей в полноэкранном режиме.
Обычно атрибутом экрана является черный на белом, но  его  можно
изменять с помощью команды SET COLOR.
   В состоянии SET INTENSITY ON осбый атрибут экрана использует-
ся для подсветки вводимых полей. В состоянии SET  INTENSITY  OFF
используется обычный атрибут экрана.
   Команда SET INTENSITY гказывает воздействие и на вывод на эк-
ран статусной строки.
   Поля могут быть также выделены при помощи ограничивающих сим-
волов посредством использования команды SET DELIMITER TO.


   SET MARGIN TO <числ_выраж>

   Эта команда устанавливает размер левого поля <числ_выраж> для
принтера.
   Размер левого поля по умолчанию равен 0.


   SET MEMOWIDTH TO <числ_выраж>

   Эта команда SET позволяет вам задать ширину поля мемо при вы-
воде в командах LIST и DISPLAY и ширину по умолчанию для команды
REPORT.
   Ширина вывода поля мемо по умолчанию равна 50 символам.


   SET MENU ON/OFF

   Эта  команда SET позволяет вам включать и выключать меню кла-
виш управления курсором при работе в полноэкранных командах.
   Для включения и выключения этого меню может  быть  также  ис-
пользована клавиша F1.


   SET MESSAGE TO [симв_выраж>/<числ_выраж>]

   Эта  команда SET позволяет вам вывести заданную пользователем
строку символов на последней строке экрана при работе  в  режиме
SET STATUS ON.
   Строка символов может содержать до 79 символов. Строка должна
быть  ограничена  одиночными кавычками (' '), двойными кавычками
(" ") или квадратными скобками ([ ]).
   Это сообщение выводится при работе в интерактивном режиме или
в процессе выполнения команд редактирования в полноэкранном  ре-
жиме.
   Команда  SET MESSAGE TO <числ_выраж> назначает строку экрана,
на которой может выводиться дополнительное сообщение  MESSAGE  в
процессе  выполнения  команды  MENU  TO. Если числовое выражение
имеет значение 0, сообщения выводиться не будут.
   Команда SET MESSAGE TO ( без строки символов [симв]) заменяет
введенную строку символов нулевой строкой.

                                 
   SET ODOMETER TO <числ_выраж>
   
   Команда SET ODOMETER используется для  изменения  интервалов,
используемых командой TALK. Интервал, принятый по умолчанию, ра-
вен 100.
   
   
   SET ORDER TO [<числ_выраж>]

   Эта  команда  SET позволяет вам указать управляющий индексный
файл, из выбранных ранее, как управляющий индексный файл для ба-
зы данных, находящейся в текущей рабочей области.
   Числовое выражение <числ_выраж> ссылается на  позицию,  соот-
ветствующую индексному файлу в списке индексов, как он был опре-
делен  командой  SET  INDEX  TO  или  USE...  Числовое выражение
<числ_выраж> может быть числом в пределах от 0 до 7 в зависимос-
ти от количества задействованных индексов.
   Если <числ_выраж> имеет значение 0, режим работы с индексаци-
ей выключен. При этом записи в файле при работе с командами LIST
и т.п. будут обрабатываться в порядке их следования в соответст-
вии с номерами. Режим работы с индексированием может быть  также
выключен  при помощи команды SET ORDER TO (без числового выраже-
ния <числ_выраж>).
   При выполнении команды SET ORDER перемещение указателя записи
не происходит. Эта команда позволяет корректировать все  индекс-
ные файлы всеми командами, которые приводят к изменению ключевых
полей  без  потерь  в скорости работы, связанных с отслеживанием
структуры по индексу.


   SET PATH TO [<список_маршрутов>]

   Эта команда используется для задания списка каталогов, в  ко-
торых  FoxBASE+  будет  производить поиск файлов, не найденных в
текущем рабочем каталоге.
   Каталоги, перечисленные в  списке  каталогов  <список_маршру-
тов>, должны быть разделены запятыми или точками с запятой.
   Необходимо заметить, что FoxBASE+ сохраняет командные файлы в
памяти  для  дальнейшего  выполнения;  в  связи с этим командный
файл, сохраненный в памяти в текущий момент, будет выполнен  не-
зависимо от изменений, внесенных в список каталогов <список_мар-
шрутов>.  Для  удаления  из памяти сохраненного командного файла
может быть использована команда CLEAR PROGRAM. Текущее  назначе-
ние  списка  каталогов  будет выполняться во всех случаях только
после команды CLEAR PROGRAM. Дополнительная информация по  этому
вопросу приведена в описании команды CLEAR PROGRAM.


   SET PRINT OFF/ON

   В состоянии ON разрешен вывод на принтер; в состоянии OFF вы-
вод  на принтер запрещен. Вывод, который формируется посредством
команд @...SAY не обязательно направляется на принтер в  состоя-
нии  PRINT  ON.  Для  направления  соответствующей информации на
принтер необходимо использовать команду SET DEVICE TO PRINT.


   SET PRINTER TO <устройство/файл>

   FoxBASE+ позволяет назначить принтером либо устройство,  либо
файл.  Если  задано SET PRINTER TO <файл>, должна быть приведена
полная идентификация файла.
   Если  в  качестве принтера задано печатающее устройство, весь
вывод, который обычно направляется на принтер,  направляется  на
устройство <устройство>.
   Устройством печати по умолчанию задано  устройство  PRN:  для
MS/PC-DOS.


   SET PROCEDURE TO [<файл>]

   Эта команда SET открывает указанный процедурный файл <файл>.
   Подразумевается расширение имени файла .PRG, если оно не ука-
зано явно в имени файла <файл>.
   В  любой  момент времени может быть открыт только один проце-
дурный файл.
   Команда SET PROCEDURE TO (без имени файла  <файл>)  закрывает
любой открытый процедурный файл.


   SET RELATION TO[<выраж>INTO<псевдоним>][ADDITIVE]

   Эта команда SET связывает два открытых файла базы данных пос-
редством  ключевого выражения <выраж>, совместимого с обоими ба-
зами данных. Одна из баз данных является активной в текущий  мо-
мент, а вторая база данных является открытой базой данных в дру-
гой рабочей области. Эта вторая база данных указывается операто-
ром INTO <псевдоним>. Всякий раз, когда в выбранной базе переме-
щается  указатель  записи, то он перемещается и в связанной базе
данных на соответствующую запись. Если соответствующая запись не
находится в связанной базе данных, указатель  записи  этой  базы
данных устанавливается на конец записи.
   Ниже описаны два способа связывания баз данных:
   Ключевой выражение может быть следующим:
   
   * Индексировнные <псевдоним> файлы - когда файл <псевдоним>
   является индексипованным,  то  для  определения  индексного
   ключа во второй базе должна быть возможность оценки <выраж>
   при  использовании  констант и полей выбранной в данной мо-
   мент базы данных. База данных <псевдоним> должна  быть  ин-
   дексирована  <выраж>  (которое  может быть символом, числом
   или датой); в противном случае возникает сообщение об ошиб-
   ке.
   
   * неиндексированные <псевдоним> файлы -  когда  <псевдоним>
   файл не индексирован, <выраж> должно быть числовым. Выраже-
   ние оценивается для текущей записи, и результат использует-
   ся как номер записи в связанной базе данных.

   С  командой  SET  RELATION  TO ... может быть указано новое
   ключевое слово ADDITIVE. Если  в  составе  команды  введено
   ключевое  слово  ADDITIVE,  ранее созданные связи останутся
   без изменений.

   Примеры:

   *.SELECT 1
   *.USE Employee
   *.SELECT 2
   *. USE Salary INDEX Emp_num
   *.SELECT 3
   *.USE Department INDEX Dept_num
   *.SELECT 1
   *.SET RELATION TO Emp_num INTO B
   *.SET RELATION TO Emp_num INTO C ADDITIVE

   Приведенные выше примеры позволяют  связать  активную  базу
   данных  с  двумя другими базами данных. Затем при просмотре
   базы данных Video пользователю  будет  автоматически  будет
   предоставляться   информация   из   баз   данных  Salary  и
   Department.
   
   
   SET RELATION TO[<выраж>INTO<псевдоним>]
[,<выраж>INTO<псевдоним>]...[,<выраж>INTO<псевдоним>][ADDITIVE]
    
   Этот вариант команды SET RELATION позволяет создавать множес-
твенные связи с одной командой. Соответствующие выражения разде-
ляются запятыми. Если связь уже установлена, то можно определить
ключевое слово ADDITIVE, и существующая связь останется неизмен-
ной.  Эта команда дает другой способ для установки множественных
связей.
   
   
   SET SAFETY ON/OFF

   Эта команда SET позволяет вам устанавливать и отменять допол-
нительные средства защиты в FoxBASE+.
   Если  установлено SAFETY ON, пользователю выдается предупреж-
дение перед выполнением любой команды, которая может  произвести
запись  на существующую базу данных или разрушить файл базы дан-
ных.
   Если установлено SAFETY OFF, пользователю не выдается сообще-
ние о потенциально опасных командах перед их выполнением.

   
   SET SCOREBOARD ON/OFF

   Эта  команда  вместе  с  командой SET STATUS позволяют задать
место вывода сообщений FoxBASE+ на экране. Информация о состоянии
выводится на строке номер 0, если задано SET  SCOREBOARD  ON,  а
STATUS OFF. Однако, если задано SET STATUS ON, информация о сос-
тоянии  выводится  в  строке  22,  вне  зависимости от установки
SCOREBOARD. Если выключены и STATUS и SCOREBOARD,  информация  о
состоянии на экран не выводится.
   Информация о состоянии включает индикаторы текущей конфигура-
ции  (т.е.  состояния  клавиатуры  и записей), а также сообщения
FoxBASE+ (т.е. сообщения об ошибках @... GET RANGE).
   Дополнительная информация по этому вопросу приведена в описа-
нии команды SET STATUS.


    SET STATUS ON/OFF

   Если установлено SET STATUS ON, строка  статуса  выводится  в
нижней части экрана на строке 22.
   Информация, выведенная на строке статуса, включает в себя те-
кущую  команду,  которая  выполняется, рабочий каталог, активный
файл базы данных, положение указателя записи, количество записей
в файле и информацию о сотоянии (CAPS - включен верхний регистр,
и т.д.). Строка статуса корректируется каждый раз при выполнении
команды, изменяющей информацию о статусе.
   Если задано SET STATUS OFF, а SCOREBOARD установлено ON,  ин-
формация  состояния  выводится  на  строке  0.  Если  и STATUS и
SCOREBOARD установлено OFF, информация о статусе не будет  выво-
дится на экран.
   Дополнительная информация по этому вопросу приведена в описа-
нии команды SET SCOREBOARD.


   SET STEP ON/OFF

   Эта команда SET используется в режиме отладки.
   Если задано SET STEP ON, выполнение программы приостанавлива-
ется после каждого оператора, и пользователю выдается сообщение:

   Press SPACE to step, S to suspend, or Esc to cancel...
   /Нажмите ПРОБЕЛ для выполнения шага, S для приостановки, или
   Esc для прекращения выполнения .../

   В  этой  точке вы можете нажать S для приостановки выполнения
программы и проверки занчений переменных памяти, или  выполнения
каких-либо  промежуточных  команд.  Для  продолжения  выполнения
программы в этом случае достаточно вветси команду RESUME. Допол-
нительная информация по этому вопросу приведена в  описании  ко-
манды RESUME.


   SET TALK ON/OFF

   Если  установлено SET TALK ON, результаты выполнения всех ко-
манд (таких как SORT, PACK и пр.) выводятся на экран. Если уста-
новлено SET TALK OFF, результаты выполнения команд не выводятся.
   Интервал  между  сообщениями,  по умолчанию равный 100, может
быть изменен с помощью команды  SET  ODOMETER.  Скорость  работы
программы  значительно понижается, если установлено SET TALK ON,
поскольку при этом на экрант должен  быть  выведен  значительный
объем информации.


   SET TYPEAHEAD TO <числ_выраж>

   Эта  команда SET используется для установки, включения и вык-
лючения буфера клавиатуры.
   Если установлено SET TYPEAHEAD TO 0, в  буфер  клавиатуры  не
смогут  быть занесены никакие символы. Если задано SET TYPEAHEAD
в пределах от 1 до 32 000 (максимально допустимое значение),  то
в  буфер клавиатуры могут быть занесены до 128 символов. Если вы
установили SET TYPEAHEAD TO 0, функция  INKEY  и  команда  ONKEY
функционировать  не  смогут.  Дополнительная информация по этому
вопросу приведена в описаниях функции INKEY() и команды ON KEY.


   SET UNIQUE OFF/ON

   Эта команда SET определяет, сохраняются ли во вновь создавае-
мом индексном файле записи с дублирующимися значениями ключа.
   Если установлено SET UNIQUE ON, все  записи  с  дублирующимся
значением  ключа не будут включены в индексный файл. В индексный
файл в этом случае будут включаться только первые из  записей  с
дублирующимся значением индексного ключа.
   Файл сохраняет свой статус UNIQUE при выполнении переиндекса-
ции командой REINDEX.
   Дополнительная информация по этому вопросу приведена в описа-
нии команды INDEX ON.
   
   
   SET VIEW<файл_для_просмотра>
   
   
   Команда SET VIEW TO <файл_для_просмотра> восстанавливает кон-
фигурацию FoxBASE+ в состояние, которое у нее было, когда созда-
вался файл <файл_для_просмотра>.
   

4.98 SKIP
---------------------------------------------------------------
   

   Переместить указатель записи в базе данных

   Формат: SKIP [<числ_выраж>]

   Команда SKIP перемещает указатель записи с его текущего поло-
жения.  Простая команда SKIP перемещает указатель записи на сле-
дующую запись. Если используется индексирование, порядок  следо-
вания  записей соответствует порядку следования значений ключа в
активном индексном файле базы данных.
   Если числовое выражение <числ_выраж>  является  положительным
числом,   указатель  записи  перемещается  вперед  по  файлу  на
<числ_выраж> записей. Если числовое выражение <числ_выраж> явля-
ется отрицательным числом, указатель записи  перемещается  назад
по файлу на <числ_выраж> записей.
   Если  указатель записи установлен на последнюю запись в файле
и выполняется команда SKIP, функция RECNO() принимает  значение,
на  единицу превышающее номер последней записи в файле и функция
EOF() принимает значение "Истинно". Если указатель записи  уста-
новлен  на  первой записи в файле и выполняется команда SKIP -1,
функция RECNO() принимает значение 1, а функция BOF()  принимает
значение "Истинно".

   Примеры:

   *.USE Video
   *.? RECNO()
         1
   *.SKIP
   Record No. 2
   *.SKIP 15
   Record No. 17
   *.SKIP -2*3
   Record No. 11
   *.SKI[P -15
   Record No. 1

   Смотри также: SET DELETED, SET FILTER, RECNO()


4.99 SORT
---------------------------------------------------------------

   Сортировать базу данных

   Формат: SORT TO <файл>
           ON <поле> [/A][/C][/D]
           [,<поле> [/A][/C][/D]...]
           [<диапазон>]
           [FOR <логич_выраж>]
           [WHILE <логич_выраж]
           [FIELDS<список_полей>]

   Команда SORT сортирует активную базу данных по указанному по-
лю  <поле>.  Отсортированная  база  данных  записывается  в файл
<файл>.
   Команда SORT выполняется в возрастающем порядке [/A], если не
указан убывающий порядок [/D]. Параметр [/C] задает сортировку с
игнорированием верхнего и нижнего регистра.  Параметр  /C  может
быть  использован совместно с параметрами /A и /D. Если вводятся
два параметра, используется только одна косая черта (напр. /AC).
   В команду SORT может  быть  включен  дополнительный  параметр
FIELDS  со списком полей. Это позволяет создавать файлы, содежа-
щие лишь некоторые из полей исходных файлов. Поля в списке полей
могут быть как из активной базы данных, так и из открытых, но не
активных в текущий момент баз данных. Поля из неактивных в теку-
щий момент баз данных должны упоминаться с указанием псевдонима.

 ______________________________________________________________
 ! Убедитесь, что на вашем диске достаточно места для  записи !
 ! выходного  файла <файл> и рабочих файлов перед выполнением !
 ! команды SORT. Для выполнения этой команды необходимо приб- !
 ! лизительно в три раза больше места, чем занимает  активный !
 ! файл базы данных.                                          !
 !____________________________________________________________!

   Смотри также: INDEX


4.100 STORE
---------------------------------------------------------------

   Занести данные в переменную памяти

   Формат: STORE <выраж>
           TO <список_перем_пам>/<имя_массива> или
           <перем_пам>/<имя_массива> = <выраж>

   Команда STORE устанавливает значение каждой переменной памяти
в списке переменных памяти  <список_перем_пам>  равным  значению
выражения  <выраж>.  Если при этом переменная памяти существует,
команда STORE заменяет ее прежнее значение на новое значение вы-
ражения <выраж>. Если переменная памяти не существует, она  соз-
дается и инициализируется значением выражения <выраж>.
   Команда STORE может быть также использована для инициализации
каждого  элемента массива переменных памяти указанным значением.
Для выполнения этой операции массив должен  быть  предварительно
описан командой DIMENSION.


4.101 SUM
---------------------------------------------------------------

   Вычислить сумму для числовых полей

   Формат: SUM [<диапазон>]
           [<список_выраж>]
           [TO <список_перем_пам>]
           [FOR <логич_выраж>]
           [WHILE <логич_выраж>]

   Команда SUM суммирует значения числовых полей в активном фай-
ле базы данных. Суммируются все записи активной базы данных, ес-
ли  не указан параметр диапазона [диапазон] или условные выраже-
ния FOR/WHILE <выраж>. В списке врыажений  [список_выраж]  могут
быть  указаны  одно  или несколько полей. Полученные суммы могут
быть занесены в переменные памяти, если в состав команды включе-
на конструкция TO <список_перем_пам>. Если переменная памяти  до
этого не существовала, FoxBASE+ задаст ее.
   Если  не  указан список выражений [список_выраж], суммируются
все числовые поля.

   Смотри также: AVERAGE


4.102 SUSPEND
---------------------------------------------------------------

   Приостановить выполнение программы

   Формат: SUSPEND

   Эта команда позволяет приостановить выполнение программы  для
выполнения  промежуточных  команд или проверки содержимого пере-
менных памяти. Эта команда очень удобна для  отладки  прикладных
программ FoxBASE+.
   Все  переменные  памяти, которые создаются в приостановленном
состоянии программы имеют статус PRIVATE.
   Команда RESUME позволяет продолжить выполнение  программы  со
строки кода программы, на которой ее выполнение было приостанов-
лено.

   Cмотри также: RESUME, RETRY, CANCEL, SET ECHO, SET STEP


4.103 TEXT...ENDTEXT
---------------------------------------------------------------

   Выводит строки текста

   Формат: TEXT
           <строки текста>
           ENDTEXT
   
   Эти  команды  структурного  программирования  вызывают  вывод
строк текста на экран или на принтер.
   Команда TEXT указывает  FoxBASE+  начать  точное  копирование
приведенных  далее  строк  текста  на текущее устройство вывода.
Этот процесс продолжается либо до появление  выражения  ENDTEXT,
либо  до конца текущего командного файла, в зависимости от того,
что произойдет ранее.


4.104 TOTAL
---------------------------------------------------------------

   Вычислить итоги для числовых полей

   Формат: TOTAL TO <файл> ON <ключ>
           [<диапазон>]
           [FIELDS <список>]
           [FOR <логич_выраж>]
           [WHILE <логич_выраж>]

   Команда TOTAL суммирует значения числовых полей активной базы
данных и заносит полученные результаты  и  ключ  <ключ>  в  файл
<файл>.
   В  файле TO <файл> создается по одной записи для каждого вст-
реченного ключевого выражения <ключ>. Числовые поля активной ба-
зы данных суммируются и результат заносится в  эту  запись.  Для
данных  нечислового  типа  значение поля первой из встреченных в
соответствии с ключевым выражением <ключ> записей будет  перене-
сено в эту запись файла <файл>.
   Активная  база данных должна быть либо отсоритрована командой
SORT, либо индексирована по ключу <ключ>. Если файл  <файл>  еще
не существует, FoxBASE+ создаст его.
   Будут  суммироваться все записи, если не указан параметр диа-
пазона [диапазон] или условные операторы FOR/WHILE <выраж>.
   По умолчанию суммируются все числовые поля, если в состав ко-
манды не включен оператор FIELDS.
   Расширение имени файла <файл> по умолчанию .DBF.

   Пример:
   
   *.USE Video INDEX Rating
   *.TOTAL TO V_stotal ON Rating FIELDS Rating,Num_sold
   *.* V_stotal was not predefined.
   *.USE V_stotal
   *.LIST
   Record#   RATING NUM_SOLD
         1   G           675
         2   N/R        2205
         3   PG        21244
         4   R         14351


4.105 TYPE
---------------------------------------------------------------

   Вывести файл ASCII

   Формат: TYPE <файл> [TO PRINT]

   Команда TYPE служит для вывода стандартных файлов ASCII.
   Для файла <файл> должно быть указано расширение имени.
   Для вывода ифнормации на принтер в составе команды может быть
использован параметр TO PRINT.

 4.106 UNLOCK
---------------------------------------------------------------

   Откменить запрет на доступ к записям и файлам

   Формат: UNLOCK [ALL]

   Конфигурация: Многопользовательская.

   Команда UNLOCK позволяет вам отменить  запрет  на  доступ  ко
всем  записям и/или файлам активной базы данных. Текущие состоя-
ния доступа к записям  определяются  последними  использованными
функциями  FLOCK(),  LOCK()  или  RLOCK() в отношении файла базы
данных в используемой в текущий момент рабочей области.
   Команда  UNLOCK ALL отменяет запрет на доступ ко всем записям
и файлам во всех рабочих областях.


4.107 UPDATE
---------------------------------------------------------------

   Скорректировать базу данных данными из другой базы

   Формат: UPDATE ON <ключ>
           FROM <псевдоним>
           REPLACE <поле> WITH <выраж>
           [,<поле> WITH <выраж>...]
           [RANDOM]

   Команда UPDATE позволяет откорректировать данные  в  активном
файле  базы данных с использованием файла FROM <псевдоним>. Файл
FROM <псевдоним> должен быть занесен в одну из невыбранных рабо-
чих областей. Корректировка производится на  основании  значений
ключевого  поля  <ключ>. Имя ключевого поля <ключ> должно совпа-
дать в обоих базах данных.
   При отсутствии параметра RANDOM  активный  файл  базы  данных
обязательно должен быть индексированным по полю <ключ> или отсо.
ртирован  по полю <ключ>. Записи в файле FROM <псевдоним> должны
быть индексированы или рассортированы по полю <ключ>.
   При наличии параметра RANDOM активная база данных должна быть
проиндексирована или отсортирована по полю <ключ>.


4.108 USE
---------------------------------------------------------------

   Задать активную базу данных

   Формат: USE [<файл>]
           [INDEX <список_файлов_ndx>]
           [ALIAS <псевдоним>]
           [EXCLUSIVE]

   Команда USE делает файл <файл> активным в текущей рабочей об-
ласти. Файл <файл> должен быть сформирован ранее.  Если  команда
USE  вводится без указания файла <файл>, активный файл базы дан-
ных закрывается. Активный файл базы данных закрывается и  в  том
случае, если вводится команда USE для другого файла.
   Конструкция  INDEX  в  составе команды позволяет использовать
один или несколько индексных файлов. Активными одновременно  мо-
гут быть до семи индексных файлов. Очередность доступа к записям
в  файле  базы  данных в процессе выполнения команд FIND, SKIP и
т.д. будет определяться только одним индексным файлом (по  умол-
чанию  - первым в списке индексных файлов), однако при изменении
ключа будут автоматически корректироваться все активные  индекс-
ные файлы.Индексный файл должен быть создан ранее при помощи ко-
манды INDEX.
   Для указания псевдонима для файла <файл> может быть использо-
ван дополнительный оператор ALIAS <псевдоним>.
   Оператор  EXCLUSIVE указывает должна открываться для исключи-
тельного использования. Для получения дополнительной  информации
смотрите главу "Многопользовательский FoxBASE+".
   Дополнительная  информация  по этому вопросу приведена в глав
3, в разделе "Использование псевдонимов при вводе команд".

   Смотри также: INDEX, SELECT, SET INDEX

4.109 WAIT
---------------------------------------------------------------

   Ожидать ввода с клавиатуры
   
   Формат: WAIT [подсказка][TO <перем_пам>]

   Команда WAIT приостанавливает работу FoxBASE+ до ввода с кла-
виатуры символа. При этом не нужно нажимать клавишу  ВВОД  (хотя
он  может  быть введенным символом). Символ может быть сохранен,
если в состав команды введен параметр TO <перем_пам>; в  против-
ном случае этот символ будет потерян.
   Команда  WAIT TO <перем_пам> заносит в переменную памяти <пе-
рем_пам> символ, введенный с клавиатуры. Если переменная  памяти
не  была задана ранее, она будет создана при выполнении команды.
Если с клавиатуры введен символ, не имеющий графического  анало-
га, он будет сохранен, как нуль.
   Подсказка  по умолчанию, выводимая при этом на экран, гласит:
"Press any key to continue..."/Нажмите любую клавишу для продол-
жения.../, однако может быть задана  и  любая  другая  подсказка
[подсказка].

   Смотри также: ON

4.110 ZAP
---------------------------------------------------------------

   Удалить все записи из базы данных

   Формат: ZAP

   Команда  ZAP  удаляет все записи из активной базы данных. Ко-
манда ZAP аналогична использованию последовательно команд DELETE
ALL и PACK.
   
 ______________________________________________________________
 ! Записи, удаленные из активной базы данных командой ZAP, не !
 ! смогут быть восстановлены командой RECALL.                 !
 !____________________________________________________________!

   Смотри также: DELETE, PACK, SET SAFETY
.
5 ФУНКЦИИ
---------------------------------------------------------------

   На следующих далее страницах приведены все функции, имеющиеся
в FoxBASE+. Эта же информация может быть получена при  использо-
вании команды HELP.
   В  составе FoxBASE+ имеется большое количество функций, кото-
рые могут быть использованы в ваших программах. Эти функции воз-
вращают символические, числовые, логические или  даты  значения,
которые могут быть использованы в выражениях соответствующих ти-
пов данных. Некоторые из функций FoxBASE+ не требуют никаких ар-
гументов, другие используют один или несколько аргументов.
   Аналогично  разделу,  в котором описаны команды FoxBASE+, ин-
формация в этом разделе предназначена в основном для справок,  а
не  для  изучения  материала. Продается много хороших учебников,
которые будут полезны тем, кто не знаком с  FoxBASE+  или  dBASE
III PLUS. Дюбой учебник, описывающий работу dBASE III PLUS может
быть использован для изучения FoxBASE+.


5.1 Фукнции, заданные пользователем (UDF)
---------------------------------------------------------------

   Хотя  FoxBASE+  содержит около 100 встроенных фукнций, бывают
случаи, когда желательно иметь специальные фукцнии для использо-
вания в прикладных программах.  Эти  фукнции  называются  кратко
UDF.
   UDF  -  это просто программа FoxBASE+, которая содержит набор
допустимых в FoxBASE+  выражений  и  возвращает  соответствующее
значение в вызвавшую программу. Как и в случае обычных программ,
UDF  может быть включена в процедурный файл и/или компилирована.
Кроме того, UDF может быть вызвана как программа командой DO  из
одних мест прикладной программы, и как фукнция - из других мест.


 ______________________________________________________________
 ! Программа,  которая  будет  использоваться в качестве UFD, !
 ! должна возвращать значение вызвавшей программе; в  против- !
 ! ном случае будет зафиксирована синтаксическая ошибка.      !
 !____________________________________________________________!
             
   Ссылка  на  UDF  делается  по имени (имя модуля программы или
процедуры), затем в скобках могут следовать аргументы. Если  ар-
гументы  включаются в ссылку на UDF, первым оператором в составе
UDF должен быть соответствующий оператор PARAMETER. Если имя UDF
совпадает с именем встроенной  фукнции  (или  его  сокращением),
приоритетом будет пользоваться встроенная фукнция.

   Ссылки на UDF могут быть сделаны только в:

   * выражениях STORE

   * выражениях REPLACE

   * управляющих выражениях (IF, WHILE, CASE, и т.д.)

   * выражениях вывода (?, ??)

   * Display, List

   * @...GET...VALID

   В  приведенной  далее  программе приведен простой пример UDF,
SQUARE.PRG, которая выполняет возведение в квадрат:

   **** SQUARE.PRG ****
   PARAMETER v
   RETURN v*v

   Ссылка на UDF может быть сделана при помощи выражения:

   STORE square(x) TO y

   В этом примере значение аргумента x в ссылке на UDF  назнача-
ется  параметру  фукнции SQUARE.PRG v, и результат выражения v*v
возвращается и заносится в y.

   В следующем примере UDF генерирует  последовательность  псев-
дослучайных чисел.

   PUBLIC Seed
   STORE Val(SYS(2)) TO Seed

   *** Генерация псевдослучайного числа от 1 до 10

   STORE RND()*10 + 1 TO x && Вызов UDF RND

   ****
   **** Процедура RND
   ****

   PROCEDURE RND
   STORE MOD (Seed*7137421+21132487,10000000) TO Seed

   *** Возвращаемое значение

   RETURN Seed/10000000

 ______________________________________________________________
 ! Выражения  в составе UDF не должны изменять состояние отк- !
 ! рытой базы данных. Например,  следует  избегать  изменения !
 ! фильтров или связей, смены активной базы данных, запись на !
 ! экран. Хотя выражения такого типа допустимы в UDF, они мо- !
 ! гут стать причиной нежелательных побочных эффектов.        !
 !____________________________________________________________!


5.2 &
---------------------------------------------------------------

   Формат: &<перем_пам>[.<симв_выраж>]

   Функция  &  указывает  FoxBASE+  произвести макрозамену. Этот
символ должен стоять перед именем переменной памяти  символичес-
кого  типа. Значение переменной памяти <перем_пам> заменяет сим-
вол & и следующее за ним имя переменной памяти. После этого  ко-
манда  выполняется так, как если бы в ее состав были введены со-
ответствующие символы, а не имя переменной, содержащей эти  сим-
волы.
   Обычно за символами, вставлеными при помощи функции &, следу-
ет  один или несколько пробелов. Использование ограничителя типа
точки (.) позволяет включить в состав макро дополнительные  сим-
волы.  Строка  символов,  подставленная вместо функции & может в
свою очередь содержать функции &. Если имеется переменная памяти
с вложенными функциями &, такие функции также заменяются на  со-
держимое  соответствующих  переменных перед выполнением команды.
Функции & могут быть вложены таким образом в соответствии с пот-
ребностями.

   Примеры:

   *.STORE "Hello" TO xyz
   *.STORE "z" TO m
   *.STORE "y&m" TO n
   *.? x&n
   Hello
   *.STORE "Hello" TO Hi
   *.STORE "Hi" TO Salute
   *.? &Salute
   Hello
   *.STORE Video TO File
   *.USE &File
   *.? DBF()
   C:\FOX\VIDEO.DBF

   Недопустима рекурсивная ссылка на переменную в  макрофункции.
Например, следующая комбинация команд вызовет сообщение об ошиб-
ке:

   *.STORE "&x" TO x
   *.? &x

   Кроме того полная длина макрофункции не должна превышать мак-
симально  разрешенную  в  FoxBASE+ длину выражения. Эта величина
ограничена 255 байт.


5.3 $
---------------------------------------------------------------

   Формат: <симв_выраж1>$<симв_выраж2>

   Эта фукнция возвращает значение .T., если выражение <симв_вы-
раж1> содержится в выражении <симв_выраж2>, и .F., если  не  со-
держится.

   Пример:

   *. STORE 'FOX' TO fastvar
   *. ? fastvar $ 'A QIUCK BROWN FOX JUMPED OVER A LAZY DOG'
   *.T.

   Смотри также: AT()


5.4 ABS
---------------------------------------------------------------

   Формат: ABS(<числ_выраж>)
   
Фукнция ABS выводит абсолютное значение числового выражения.

   Примеры:

   *.? ABS(-45)
   45
   *.? ABS(10-30)
   20
   *.? ABS(30-10)
   20
   *.STORE 40 TO Num1
   *.STORE 2 TO Num2
   *.? ABS(Num2-Num1)
            38


5.5 ALIAS
---------------------------------------------------------------
   
   Формат: ALIAS([числ_выраж])

   Функция  ALIAS возвращает псевдоним для указанной рабочей об-
ласти. Если аргумент опущен, эта  функция  возвращает  псеводним
для  текущей рабочей области. Если в текущей рабочей области от-
сутствует открытая база данных, возвращается нулевая строка.

   Пример:

   *.SELECT A
   *.USE Video
   *.SELECT B
   *.USE Customer ALIAS Cust
   *.? ALIAS()
   CUST
   *.? ALIAS(1)
   VIDEO


5.6 ASC
---------------------------------------------------------------
   
   Формат: ASC(<симв_выраж>)
   
   Функция ASC выводит значение кода  ASCII  для  самого  левого
символа в символическом выражении.

   Примеры:

   *.USE Video
   *.DISPLAY Title
   RECORD#      TITLE
         1      AMADEUS
   *.? ASC(Title)
   65
   *.? ASC("A")
   65
   *.? ASC("a")
   97


5.7 AT
---------------------------------------------------------------

   Формат: AT(<симв_выраж1>,<симв_выраж2>)
   
   Функия  AT  требует  в качестве аргументов двух символических
выражений или двух строк симвлов. Она ведет в символическом  вы-
ражении <симв_выраж2> поиск первого вхождения символического вы-
ражения  <симв_выраж1>  и  выводит в целом виде номер позиции, в
которой это вхождение было найдено. Если <симв_выраж1> не входит
в <симв_выраж2>, выводится нулевое значение.

   Примеры:

   *.STORE "Now is the time" TO Str2
   *.STORE "is" TO Str1
   *.? AT(Str1,Str2)
            5
   *.STORE "IS" TO Str1
   *.? AT(Str1,Str2)
            0

   Смотри также: LEFT(), RIGHT(), SUBSTR()


5.8 BOF
---------------------------------------------------------------

   Формат: BOF([<числ_выраж>])
   
   Функция BOF используется для проверки условия начала файла  в
файле базы данных. Будет выведено значение .T., если вы попытае-
тесь переместить указатель записи далее первой логической записи
в активном файле базы данных.
   Фукнция  BOF  поддерживает  дополнительный  аргумент, который
указывает номер рабочей области, к которой будет относиться  эта
фукнция. Если в указанной рабочей области нет открытой базы дан-
ных, выводится значение .F. Если аргумент опущен, выводится ста-
тус для выбранной в текущий момент рабочей области.

   Примеры:

   *.USE Video
   *.? RECNO()
            1
   *.? BOF()
   *.F.
   *.SKIP -1
   Record No.1
   *.? RECNO()
            1
   *.? BOF()
   *.T.

   Смотри также: EOF()


5.9 CDOW
---------------------------------------------------------------

   Формат: CDOW(<числ_выраж_даты>)
   
   Функция CDOW функция дня недели, выводит название дня недели,
соответствующего выражению <числ_выраж_даты>.
   Числовое выражение даты может быть функцией системной даты,
переменной памяти или полем базы данных.

   Примеры:

   *.STORE CTOD("06/12/86") TO Bdate
   06/12/86
   *.? CDOW(Bdate)
   Thursday
   *.? CDOW(Date())
   Wednesday
   *.? "Your book was due last ", CDOW(Date()-2_
   Your book was due last Monday
   
   Смотри также: DAY(), DOW(), SYS()


5.10 CHR
---------------------------------------------------------------

   Формат: CHR(<числ_выраж>)
  
   Фукнция CHR анализирует числовое выражение <числ_выраж> и вы-
водит  один символ, чей код ASCII соответствует значению выраже-
ния.

   Примеры:

   *.? CHR(65)
   A
   *.? CHR(97)
   a

   Смотри также: ASC(), INKEY()


5.11 CMONTH
---------------------------------------------------------------

   Формат: CMONTH(<числ_выраж_даты)
   
   Фукнция CMONTH, функция месяца, выводит название месяца,  со-
ответствующего выражению <числ_выраж_даты>.
   Числовое  выражение  даты может быть системной функцией даты,
переменной памяти или полем базы данных.

   Примеры:

   *.? CMONTH(DATE())
   June
   *.STORE CTOD("6/25//85") TO Due
   06/25/85
   *.? "Your payment was due last", CMONTH(Due)
   Your payment was due last June
   *.STORE DATE() + 60 TO Final
   08/24/85
   *.? "You maust pay by", CMONTH(Final)
   You must pay by August

   Смотри также: MONTH(), SYS()


5.12 COL
---------------------------------------------------------------

   Формат:COL()

   Функция COL выводит номер столбца в текущем положении  курсо-
ра.
   Функция  COL особенно полезна при относительной адресации эк-
рана в программе.
   Дополнительная информация приведена в описании фукнции ROW().

   Пример:

   @ ROW( ), COL( ) +12 SAY "Movie Title"

   Смотри также: @, PCOL(), PROW(), ROW()


5.13 CTOD
---------------------------------------------------------------

   Формат: CTOD(<симв_выраж_даты>)

   Функция CTOD преобразует символические данные в  данные  типа
даты,  выводя  переменную  даты, которая соответствует выражению
<симв_выраж_даты>.
   Формат выражения <симв_выраж_даты> по умолчанию mm/dd/yy. Ко-
манды SET DATE и SET CENTURY могут быть использованы для измене-
ния этого формата.
   Если век не указывается при вводе даты, (как в  символичесокм
выражении "12/25/85"), подразумевается двадцатый век.
   Дата,  заданная  стрококй символов, должна быть в разрешенном
для дат диапазоне. Допустимым является диапазон от "1/1/100"  до
"12/31/9999".

   Примеры:

   *.STORE "7/4/1776 TO Indep
   7/4/1776
   *.? CTOD(Indep)
   07/04/76
   *.STORE DATE() TO Today
   05/25/85
   *.STORE CTOD("12/25/85") TO Xmas
   12/25/85
   *.STORE STR(Xmas-Today,3) TO Dleft
   214
   *.? "There are",Dleft, "days until Christmas"
   There are 214 days until Christmas

   Смотри также: SET CENTURY, SET DATE, DTOC(), SYS()


5.14 DATE
---------------------------------------------------------------

   Формат: DATE()

   В  качестве  значения функции DATE выводится текущее значение
системной даты.
   DATE можно изменить при помощи команды SET DATE.

   Пример:

   *.? DATE()
   05/15/84

   Смотри также: SET DATE, SET CENTURY, SYS()


5.15 DAY
---------------------------------------------------------------

   Формат: DAY((<числ_выраж_даты>)

   Фукнция дня месяца DAY выводит день  месяца,  соответствующий
числовому выражению даты <числ_выраж_даты>. День выводится в ви-
де числа.
   Числовое  выражение  даты может быть системной функцией даты,
переменной памяти или полем базы данных.

   Примеры:

   *.STORE CTOD("06/12/86") TO Bdate
   06/12/86
   *.? DAY(Bdate)
            12
   *.? "Today is", CMONTH(DATE()),STR(DAY(DATE()),2)
   Today is November 25

   Смотри также: CDOW(), DOW(), SYS()


5.16 DBF
---------------------------------------------------------------

   Формат: DBF([<числ_выраж>])

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

   Примеры:

   *.USE Video
   C:\FOX\VIDEO.DBF
   *.CLOSE DATABASE
   *.? DBF()
   *._

   Смотри также: FIELD(), NDX(), SYS(7)


5.17 DELETED
---------------------------------------------------------------

   Формат: DELETED([<числ_выраж>])

   Функция  DELETED выводит логическое значение. Она выводит ло-
гическое значение "Истинно", если текущая  запись  помечена  для
удаления, и "Ложно", если не помечена.
   Фукнция DELETED поддерживает дополнительный аргумент, который
указывает  номер рабочей области, к которой будет относиться эта
фукнция. Если в указанной рабочей области нет открытой базы дан-
ных, выводится нулевая строка. Если аргумент  опущен,  выводится
статус для выбранной в текущий момент рабочей области.

   Примеры:

   *.USE Video
   *.DELETE FOR RECNO() = 1
         1 record deleted
   *.GO TOP       &&Установить на запись #1(удаленная запись)
   *.? DELETED()
   *.T.
   *.SKIP         &&Установить на запись #2
   Record No.2
   *.? DELETED()
   *.F.
   *.SKIP -1
   Record No.1
   *.RECAL   L    && Отменить пометку для удаления
   *.? DELETED()
   *.F.
   
   Смотри также: SET DELETED


5.18 DISKSPACE
---------------------------------------------------------------

   Формат: DISKSPACE()

   Функция  DISKSPACE  выводит  объем свободного места в байтах,
имеющегося в текущий момент на принятом по умолчанию дисководе.
   Функция DISKSPACE особенно удобна при расчетах места, необхо-
димого для выполнения копирования на  диск  и  различных  команд
FoxBASE+, например, SORT.

   Пример программы:

   IF DISKSPACE() > 200000
      DO Backup
   ELSE
      @ 5,0 SAY "Insufficient diskspace. Backup Aborted."
   ENDIF


5.19 DOW
---------------------------------------------------------------

   Формат: DOW(<числ_выраж_даты>)

   Функция  дня  недели DOW выводит день недели, соответствующий
числовому выражению даты <числ_выраж_даты>. День выводится в ви-
де числа в диапазоне от 1 (воскресенье) до 7 (суббота).

   Примеры:

   *.STORE CTOD("05/14/86") TO Dnum
   05/14/86
   *.? DOW(Dnum)
   4
   *.? CDOW(Dnum)
   Wednesday

   Смотри также: CDOW(), DAY(), SYS()


5.20 DTOC
---------------------------------------------------------------

   Формат: DTOC(<числ_выраж_даты>[,1])

   Функция DTOC преобразования даты в символические данные,  вы-
водит дату, соответствующую выражениию <числ_выраж_даты>. Формат
вывода дат контролируется текущей включенной опцией SET DATE.
   Числовое  выражение  даты может быть системной функцией даты,
переменной памяти или полем базы данных.
   Дополнительный аргумент позволяет выводить дату в виде,  при-
годном  для  проведения  индексации или сортировки. Это особенно
удобно при совместном использовании с функцией TIME.
   Например, база данных с упорядочением по очереди ввода  может
быть индексирована следующим образом:
   
   REPLACE INVDATE WITH DATE( );
                     INVTIME WITH TIME( )
   INDEX ON DTOC(INVDATE,1)+INVTIME TO Timeindx

   для обеспечения доступа к базе в порядке ввода.

   Примеры:
      
   *.STORE CTOD("11/23/80") TO Datev
   11/23/80
   *.? DTOC(Datev)
   11/23/80
   *.STORE DTOC(DATE()) TO Expire
   02/02/86
   *.? "Your 90-day warranty expires ", Expire
   Your 90-day warranty expires 02/02/86
   *.? DTOC(DATE(),1)
   19870109

   Смотри также: CTOD(), SET CENTURY, SYS()


5.21 EOF
---------------------------------------------------------------
   
   Формат: EOF([<числ_выраж>])

   Функция  EOF выводит логическое значение "Истинно", если была
пройдена последняя запись в активной в текущий момент базе  дан-
ных;  это значит, что был достигнут конец файла. Функция EOF вы-
водит логическое значение "Ложно", если конец файла  не  достиг-
нут.
   Фукнция  EOF  поддерживает  дополнительный  аргумент, который
указывает номер рабочей области, к которой будет относиться  эта
функция. Если в указанной рабочей области нет открытой базы дан-
ных, выводится значение .F. Если аргумент опущен, выводится ста-
тус для выбранной в текущий момент рабочей области.

   Примеры:
   
    .USE Video
   *.GO BOTTOM
   *.? EOF()
   *.F.
   *.SKIP          && переместиться далее последней записи
   Record N0. 36
   *.? EOF()
   *.T.

   Смотри также: BOF()


5.22 ERROR
---------------------------------------------------------------

   Формат:ERROR()

   Функция  ERROR  выводит  число, которое соответствует ошибке,
вызвавшей выполнение условного оператора  ON  ERROR.  Для  того,
чтобы  функция ERROR выводила значение, отличное от 0, необходи-
мо, чтобы была активна команда ON ERROR.
   Ошибка отслеживается, таким образом могут быть  приняты  меры
по  исправлению ситуации. Выведенное значение может быть проана-
лизировано и может  быть  предприняты  соответствующие  действия
(например, удаление файлов с дисков).

   Пример программы:

   ON ERROR DO Errhand WITH ERROR(), MESSAGE()
   ****
   PROCEDURE Errhand
   PARAMETER Errnum,Message
   @ 23,0 Message+"ERROR: "+STR(Error)

   Смотри также: MESSAGE(), ON ERROR, RETRY, RETURN


5.23 EXP
---------------------------------------------------------------

   Формат: EXP(<числ_выраж>

   Функция EXP выводит значение е**A. Значение числового выраже-
ния <числ_выраж> является показателем степени X в экспоненциаль-
ной функции e**X.

   Пример:

   *.? EXP(0)
         1.00
   *.? EXP(1)
         2.72
   *.STORE 1 TO Num
   *.? EXP(Num)
         2.72

   Смотри также: SET DECIMALS


5.24 FCOUNT
---------------------------------------------------------------

   Формат: FCOUNT([<числ_выраж>])

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

   Пример:

   *.USE Video
   *.SELECT 2
   *.USE Customer
   *.? FCOUNT( )      && Количество полей в Customer.dbf
   10
   *.? FCOUNT(1)      && Количество полей в Video.dbf
   12

   Смотри также: DBF(), NDX(), SYS(7)


 5.25 FIELD
---------------------------------------------------------------

   Формат: FIELD(<числ_выраж1>[,<числ_выраж2>])

   Функция FIELD выводит имя поля в активной  в  текущий  момент
базе  данных, которое соответствует положению, указанному число-
вым выражением <числ_выраж>.
   Если числовое выражение <числ_выраж>  указывает  номер  поля,
превышающий  количество  полей  в активной в текущий момент базе
данных, будет выведено нулевое значение.
   Имена полей выводятся в верхнем регистре.
   Фукнция FIELD поддерживает  второй  дополнительный  аргумент,
который  указывает  номер рабочей области, к которой будет отно-
ситься эта фукнция. Если в указанной рабочей области нет  откры-
той базы данных, выводится нулевая строка. Если аргумент опущен,
выводится статус для выбранной в текущий момент рабочей области.

   Пример:

   *.USE Video
   *.STORE FIELD(1) TO Field
   *.DISPLAY &Field
   Record#    TITLE
         1   amadeus
   *.? FIELD(7)
   COST_RENT
   *.? FIELD(13)      && в файле VIdeo.DBF только 12 полей
   
   *.? FIELD(12)
   LENGTH


5.26 FILE
---------------------------------------------------------------

   Формат: FILE(<файл>)

   Эта  функция выводит логическое значение "Истинно", если сим-
волическое выражение <файл> является именем существующего файла.
Если такой файл не  существует,  выводится  логическое  значение
"Ложно".
   В  составе выражения <файл> может быть указано любое расшире-
ние имени файла.
   Вместо этого для поиска файла в каталоге, отличном от
теекущего рабочего каталога, может быть введено полное указание
адреса в формате MS-DOS.
   Выражение <файл> может быть строкой  литералов,  заключенной  в
двойные кавычки, значением символьной переменной памяти или сим-
вольным выражением.
   Если <файл> является строкой литералов, кавычки обязательны.

   Примеры:

   *.? FILE("Video.DBF")
   *.T.
   *.? FILE("Movie.DBF")
   *.F.


5.27 FKLABEL
---------------------------------------------------------------
               
   Формат: FKLABEL(<числ_выраж>)

   Функция  FKLABEL выводит название функциональной клавиши, ко-
торой соответствует числовое выражение <числ_выраж>.
   Значение <числ_выраж> должно лежать в пределах от 1 до FKMAX().

   Примеры:

   *.? FKLABEL(1)
   F2
   *.? FKLABEL(45)

   *.? FKLABEL(5)
   F6

   Смотри также: FKMAX(), SET FUNCTION


5.28 FKMAX
---------------------------------------------------------------

   Формат: FKMAX()

   Функция FKMAX выводит общее количество программируемых  функ-
циональных клавиш, имеющихся на вашем терминале.

   Пример:

   *.? FKMAX()
   9

   Смотри также: FKLABEL(), SET FUNCTION


5.29 FLOCK
---------------------------------------------------------------

   Формат: FLOCK()

   Конфигурация: Многопользовательская.

   При обнаружении функции FLOCK() FoxBASE+ предпринимает попыт-
ку запереть весь выбранный файл базы данных.
   Если  попытка  запереть  файл  успешно  выполняется,  функция
FLOCK() выводит логическое значение .T., и  вам  предоставляется
доступ для чтения и записи во все записи файла базы данных в ис-
ключительном режиме.
   Если попытка запереть не удалась, функция FLOCK() выводит ло-
гическое  значение  .F..  Это означает, что либо вся база данных
была заперта другим пользователем, либо другим пользователем бы-
ла заперта хотя бы одна запись. В обоих  случаях  исключительный
доступ к файлу не предоставляется.

   Пример программы:
   
   USE Video
   IF FLOCK()
      COPY TO Video2
      UNLOCK
   ELSE
      ? "Database is not available"
   ENDIF

   Как  указано  в приведенном выше фрагменте программы, команда
UNLOCK отпирает запертую базу данных. Запертая база данных авто-
матически отпирается при закрытии ее командами USE,  CLEAR  ALL,
CLOSE  DATABASE  или  QUIT. Также файл автоматически отпирается,
когда запирается другой файл.


5.30 FOUND
---------------------------------------------------------------

   Формат: FOUND([<числ_выраж>]))

   Функция FOUND выводит логическое значение. Значение "Истинно"
выводится, если последняя команда  CONTINUE,  FIND,  LOCATE  или
SEEK выполнена успешно. Значение "Ложно" выводится, если послед-
няя команда поиска в FoxBASE+ не закончилась нахождением записи,
или  если  указатель  записи был перемещен командой, отличной от
команд поиска (напр. GOTO).
   В каждой рабочей области  может  существовать  свое  значение
функции FOUND().
   Фукнция  FOUND  поддерживает  второй дополнительный аргумент,
который указывает номер рабочей области, к которой  будет  отно-
ситься  эта функция. Если в указанной рабочей области нет откры-
той базы данных, выводится нулевая строка. Если аргумент опущен,
выводится статус для выбранной в текущий момент рабочей области.
   Это особенно полезно при работе со связанными  файлами,  пос-
кольку  позволяет получить необходимые значения без выбора соот-
ветствующих рабочих областей.

   Примеры:

   *.USE Video
   *.LOCATE FOR Title = "EYEWITNESS"
   Record = 18
   *.? FOUND()
   *.T.
   *.GO TOP
   *.? FOUND()
   *.F.

   Смотри также: CONTINUE, EOF(), FIND, LOCATE, SEEK


5.31 GETENV
---------------------------------------------------------------

   Формат: GETENV(<симв_выраж>)

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

   Пример:

   *.? GENENV("PATH")
   C:\COMMAND;C:\FOX

   Смотри также: DISKSPACE(), OS(), VERSION()


5.32 IIF
---------------------------------------------------------------

   Формат: IIF(<логич_выраж>,<выраж1>,<выраж2>)
   
   Функция IIF выводит значение выражений <выраж1> или  <выраж2>
в зависимости от логического значения логического выражения <ло-
гич_выраж>. Если логическое выражение <логич_выраж> имеет значе-
ние "Истинно", функция IIF выводит <выраж1>. Если логическое вы-
ражение  <логич_выраж> имеет значение "Ложно", функция IIF выво-
дит выражение <выраж2>.
   Эта функция может быть использована вместо структурной коман-
ды IF...ENDIF для программирования простых  условных  выражений.
Эта  функция  особенно  удобна в командах CREATE REPORT и CREATE
LABEL для условного указания содержания полей. Кроме  того,  при
использовании функции IIF сокращается время выполнения программы
(по сравнению со случаем использования оператора IF...ENDIF).

   Пример:

   *.STORE 10 TO Num
   *.Char = IIF(Num > 9,STR(Num,2), STR(Num,1))
   *.? Char
   10
   *.STORE 9 TO Num
   *.Char = IIF(Num > 9,STR(Num,2), STR(Num,1))
   *.? Char
   9

   Смотри также: IF...ENDIF


5.33 INKEY
---------------------------------------------------------------
      
   Формат: INKEY([<числ_выраж>])

   Функция  INKEY  выводит целое числовое значение. Это значение
соответствует коду ASCII для клавиши, нажатой пользователем. Вы-
веденное целое число будет заключено в диапазоне от 0 до 255.
   Если пользователь не нажал никакую  клавишу,  будет  выведено
нулевое значение.
   Если  в  буфере клавиатуры находятся значения нескольких кла-
виш, будет выведено значение для первой  из  введенных  в  буфер
клавиш.
   Это  позволяет вам закладывать в свою программу FoxBASE+ кла-
виши, не имеющие графического образа. Ниже приведен список таких
клавиш и соответствующих им кодов ASCII.

 
Специальные   Возможные     Вывод
клавиши       замены        INKEY()

 
Home           Ctrl-A         1
Ctrl-->        Ctrl-B         2
PgDn           Ctrl-C         3
->             Ctrl-D         4
             Ctrl-E          5
End            Ctrl-F         6
Del            Ctrl-G         7
PgUp           Ctrl-R        18
<-             Ctrl-S        19
Ins            Ctrl-V        22
End            Ctrl-W        23
             Ctrl-X         24
Ctrl-<-        Ctrl-Z        26
Home           Ctrl-]        29
Ctrl-PgDn      Ctrl-Ctrl     30
Ctrl-PgUp      Ctrl--        31

   Фукнция INKEY поддерживает  второй  дополнительный  аргумент,
который  указывает, сколько секунд программа убдет ожидать нажа-
тия клавиши (допускаются и доли секунды). Если вызывается  функ-
ция  INKEY  без аргумента, она выводит значение нажатой клавиши,
если же никакая клавиша нажата не была, выводится 0. Если  вызы-
вается INKEY с нулевым аргументом, время ожидания нажатия клави-
ши не ограничено.
   Эта  возможность  может быть использована для выхода из прик-
ладной программы, если в течение указанного времени не будет вы-
полнен выбор в меню.

   Пример:

   STORE CHR(INKEY(600)) TO Chjice
   IF Choice == ""
      CLOSE ALL
      QUIT
   ELSE
      DO Menu_Opt
   ENDIF

   В приведенной выше программе система будет ожидать в  течение
10 минут ввода с клавиатуры. Если никакая клавиша не будет нажа-
та,  в переменную Choice будет занесена нулевая строка и система
будет закрыта. Если будет нажата клавиша, будет выполнена  прог-
рамма Menu_Opt.

   Смотри также: CHR(), ON KEY, READKEY(), SET TYPEAHEAD


 5.34 INT
---------------------------------------------------------------

   Формат: INT(<числ_выраж>)
    
   Эта  функция  вычисляет числовое выражение и возвращает целую
часть от этого значения.
   
   Примеры:

   *.? INT(12.5)
      12
   *.? INT(-12.5)
     -12
   *.STORE -12.5 TO Num
   *.? INT(Num)
         -12

   Смотри также: ROUND()


5.35 ISALPHA
---------------------------------------------------------------

   Формат: ISALPHA(<симв_выраж>)

   Функция ISALPHA выводит логическое значение. Значение "Истин-
но" выводится, если <симв_выраж> начинается  с  буквы.  Значение
"Ложно", если <симв_выраж> начинается не с буквы.

   Примеры:

   *.USE Video
   *.? ISALPHA(Title)
   *.T.
   *.DISPLAY Title
   Record#    TITLE
         1   AMADEUS
   *.GO 23
   *.? ISALPHA(Title)
   *.F.
   *.DISPLAY Title
   Record#   TITLE
        23   48 HRS.

   Смотри также: ISLOWER(), ISUPPER(), LOWER(), UPPER()


5.36 ISCOLOR
---------------------------------------------------------------

   Формат: ISCOLOR()

   Функция ISCOLOR выводит логическое значение. Значение "Истин-
но" выводится, если вы работаете с FoxBASE+ на цветном мониторе.
Значение  "Ложно" выводится, если вы работаете с FoxBASE+ на мо-
нохромном мониторе.

   Смотри также: SET COLOR


5.37 ISLOWER
---------------------------------------------------------------

   Формат: ISLOWER(<симв_выраж>)

   Функция ISLOWER выводит логическое значение. Значение "Истин-
но" выводится, если первым символом строки символов <симв_выраж>
является буква в нижнем регистре.  Значение  "Ложно"  выводится,
если первым символом строки символов <симв_выраж> является любой
символ, но не буква в нижнем регистре.

   Примеры:

   *.? ISLOWER("perrysburg")
   *.T.
   *.? ISLOWER("Perrysburg")
   *.F.
 
   Смотри также: ISALPHA(), ISUPPER(), LOWER(), UPPER()


5.38 ISUPPER
---------------------------------------------------------------

   Формат: ISUPPER(<симв_выраж>)

   Функция ISUPPER выводит лоигческое значение. Значение "Истин-
но"  выводится,  если  первый  символ  символического  выражения
<симв_выраж> является буквой в верхнем регистре. Значение  "Лож-
но" выводится, если первым символом является любой символ, кроме
буквы в верхнем регистре.

   Примеры:

   *.? ISUPPER("perrysburg")
   *.F.
   *.? ISUPPER("Perrysburg")
   *.T.

   Смотри также: ISALPHA(), ISLOWER(), LOWER(), UPPER()


5.39 LEFT
---------------------------------------------------------------

   Формат: LEFT(<симв_выраж>,<числ_выраж>)

   Функция LEFT выводит указанное количество символов, начиная с
левого края строки символов.
   Функция  LEFT  работает аналогично функции SUBSTR с начальной
позицией (1).
   Если числовое выражение <числ_выраж> больше, чем длина симво-
лического выражения <симв_выраж>, функция LEFT выведет всю стро-
ку символов.
   Если числовое выражение <числ_выраж> меньше или  равно  нулю,
функцией LEFT будет выведена нулевая строка.

   Пример:

   *.USE Video
   *.GO 30
   *.DISPLAY Title
   Record#    TITLE
        30   SOUTH PACIFIC
   *.? LEFT(Title,5)
   SOUTH

   Смотри также: AT(), LTRIM(), RTRIM(), RIGHT(), SUBSTR()


5.40 LEN
---------------------------------------------------------------

   Формат: LEN(<симв_выраж>)

   Эта функция выводит длину символического выражения.

   Пример:

   *.? LEN ("hello")
            5

   Смотри также: TRIM()


5.41 LOG
_______________________________________________________________

   Формат: LOG(<числ_выраж>)

     Функция LOG выводит значение натурального логарифма для ар-
гумента <числ_выраж>.
           
     ___________________________________________________
     ! С функцией LOG недопустимы аргументы меньше или !
     ! равные нулю.                                    !
     !_________________________________________________!

   Примеры:

   *.? LOG(10)
    2.30
   *.STORE 1 TO Num
   *.? LOG(Num)
            0.00
   *.? LOG (5-Num)
               1.39

   Смотри также: EXP(), DECIMALS(), SET FIXED


5.42 LOWER
_______________________________________________________________

   Формат: LOWER(<симв_выраж>)

     Функция  LOWER  преобразует  все буквы в верхнем регистре в
буквы нижнего регистра в указанном символическом выражении.

   Примеры:

   *.USE Video
   *.? Title
   AMADEUS
   *.? LOWER(Title)
   amadeus

   Смотри также: ISALPHA(), ISLOWER(), ISUPEER(0, UPPER()


 5.43 LTRIM
_______________________________________________________________

   Формат: LTRIM(<симв_выраж>)

     Функция LTRIM удаляет пробелы, стоящие в начале  указанного
символического выражения <симв_выраж>.
     Эта  функция особенно удобна для удаления ведущих пробелов,
которые образуются в результате выполнения функции STR.
   Пример:

   *.STORE "       Perrysburg" TO City
   *.? City
         Perrysburg
   *.? LTRIM(City)
   Perrysburg

   Смотри также: LEFT(), RIGHT(), RTRIM(), SUBSTR(), TRIM()


5.44 LUPDATE
_______________________________________________________________

   Формат: LUPDATE()

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

   Пример:

   *.USE Video
   *.? LUPDATE()
   07/12/86


 5.45 MAX
_______________________________________________________________

   Формат: MAX(<выраж>,<выраж>)

     Фукнция  MAX  выводит  большее из двух приведенных числовых
выражений или из двух выражений даты.

   Пример:

   *.? MAX(54,39)
   54
   *.? MAX (CTOD("07/12/86"), CTOD("DATE()"))
   07/14/86

   Смотри также: MIN()


5.46 MESSAGE
_______________________________________________________________

   Формат: MESSAGE()

     Функция MESSAGE без аргументов выводит текущее сообщение об
ошибке. Этот вариант функции MESSAGE может быть использован сов-
местно или независимо от условия ON ERROR. При  наличии  условия
ON ERROR, фукнции MESSAGE и ERROR полезны в процедурах обработки
ошибок  для выдачи пользователю сообщений, содержащих рекоменда-
ции.
     Эта фукнция с аргументом, равным 1,  выводит  исходный  код
для  строки, которая вызвала ошибку при установленном условии ON
ERROR.

   Пример:

   ON ERROR DO errhand
   ****
   PROCEDURE ERRHAND
   USE ERRHAND
   USE ERRORS    && база данных для ошибок
   APPEND BLANK
   REPLACE errnum WITH ERROR()
   REPLACE errmes WITH MESSAGE()
   REPLACE source WITH MESSAGE(1)
   REPLACE program WITH SYS(16)

   Смотри также: ERROR(), ON ERROR


5.47 MIN
 _______________________________________________________________

   Формат: MIN (<выраж>,<выраж>)

     Функция MIN выводит меньшее из двух указанных числовых  вы-
ражений или из двух выражений даты.

   Пример:

   *.? MIN(54,39)
   39
   *.? MIN (CTOD("07/12/86"), CTOD("DATE()"))
   07/12/86

   Смотри также: MAX()


5.48 MOD
_______________________________________________________________

   Формат: MOD(<числ_выраж1>,<числ_выраж2>)

     Функция  MOD  выводит  остаток от деления. Выведенное число
является остатком от деления числового  выражения  <числ_выраж1>
на числовое выражение <числ_выраж2>.
     Если <числ_выраж2> положительно, то выводится положительное
число; отрицательное число выводится, если <числ_выраж2> отрица-
тельно.

   Пример:

   *.? MOD (4*9,90/9)
      6


5.49 MONTH
_______________________________________________________________

   Формат: MONTH(<числ_выраж_даты>)

     Функция MONTH выводит значение месяца, которое соответству-
ет  указанноу  числовому выражению даты <числ_выраж_даты>. Месяц
выводится в виде чисел от 1 до 12. Первым месяцем  является  ян-
варь, двенадцатым месяцем года является декабрь.
     Числовое выражение даты может быть системной функцией даты,
переменной памяти или полем базы данных.

   Примеры:

   *.? MONTH(DATE())
      3
   *.STORE CTOD("05/23/86" TO Buy
   05/23/86
   *.STORE MONTH(Buy+30) TO Mon
      6

   Смотри также: CMONTH, DAY, YEAR, SYS()


5.50 NDX
_______________________________________________________________

   Формат: NDX(<числ_выраж>)

     Фукнция NDX выводит имя открытого индексного файла для выб-
ранной в текущий момент рабочей области.
     Выводимое  имя индексного файла определяется по его положе-
нию в списке имен  индексных  файлов.  Если  числовое  выражение
<числ_выраж>  имеет значение 1, то выводится имя певрого индекс-
ного файла в списке индексных файлов.
     Числовое выражение <числ_выраж>  должно  иметь  значение  в
пределах от единицы до семи.
     Если  в позиции, указанной числовым выражением <числ_выраж>
нет открытого индексного файла, FoxBASE+ выведет нулевую строку.

   Пример:

   *.USE Video INDEX Title,Cost
   *.? NDX(1)
   C:\FOX\TITLE.NDX
   *.STORE 2 TO Num
   *.? NDX(Num)
   C:\FOX\COST.NDX

   Смотри также: DBF(), FIELD(), SYS(7)


5.51 OS
_______________________________________________________________

   Формат:OS()

     Функция OS выводит имя операционной системой,  под  которой
запущен FoxBASE+.

   Пример:

   *.? OS()
   DOS 03.10

   Смотри также: DISKSPACE() GETENV(), VERSION()


 5.52 PCOL
_______________________________________________________________

   Формат: PCOL()

   Функция PCOL выводит текущий номер столбца для принтера.
     Функция PCOL особенно полезна при использовании относитель-
ной адресации при выводе на принтер.

   Смотри также: @, COL(), ROW(), PROW()


5.53 PROW
_______________________________________________________________

   Формат: PROW()

   Функция PROW выводит текущий номер строки для принтера.
     Функция PROW особенно полезна при использовании относитель-
ной адресации при выводе на принтер.

   Смотри также: @, COL(), PCOL(), ROW()


5.54 READKEY
_______________________________________________________________

   Формат: READKEY()

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


---------------------------------------------------------------------
|                                                                    |
|   Таблица значений для функции READKEY                             |
|====================================================================
|                                                                    |
|Клавиша Альтернатива Код     Код при       Значение                 |
|                     выхода  корректировке                          |
|====================================================================
|Ctrl-H  Backspace     0                     Назад на один символ    |
|Ctrl-S  <-            0                     Назад на один символ    |
|Ctrl-D  ->            1      257            Вперед на один символ   |
|Ctrl-L                1      257            Вперед на один символ   |
|Ctrl-A  Home          2      258            Назад на одно слово     |
|Ctrl-F  End           3      259            Вперед на одно слово    |
|Ctrl-E  стрелка вверх 4      260            Назад на одно слово     |
|Ctrl-K                4      260            Назад на одно слово     |
|Ctrl-X  стрелка вниз  5      261            Вперед на одно поле     |
|Ctrl-J                5      261            Вперед на одно поле     |
|Ctrl-R  PgUp          6      262            Назад на один экран     |
|Ctrl-C  PgDn          7      263            Вперед на один экран    |
|Ctrl-Z  Ctrl-<-       8      264            Сместиться налево       |
|Ctrl-B  Ctrl-->       9      265            Сместиться направо      |
|Ctrl-U               10      266            Удалить что-либо        |
|Ctrl-N               11      267            Вставить что-либо       |
|CTRL_Q  Esc          12      268            Выйти без сохранения    |
|Ctrl-W  Ctrl-End     14      270            Выйти с сохранением     |
|Ctrl-M               15      271           Заполнено, печатать далее|
|<-'                  16      272            APPEND,                 |
|                     16      272            MODIFY STRUCTURE/REPORT |
|Ctrl-]  Ctrl-Home    33      289            Вкл/выкл вывод меню     |
|Ctrl--  Ctrl-PgUp    34      290            Сигнал выключить        |
|Ctrl-^  CTRL_Pgdn    35      291            Сигнал включить         |
|F1                   36      292            Клавиша функции HELP    |
|Ctrl-G  Del          N/A     N/A            N/A                     |
|Ctrl-V  Ins          N/A     N/A            N/A                     |
 --------------------------------------------------------------------

     К   полноэкранным  командам  относятся  следующие:  APPEND,
BROWSE, CHANGE, CREATE, EDIT, INSERT, MODIFY, READ.
     Возврфщаемое целое число находится между 0 и 36  или  между
256  и 292. Если в процессе выполнения команды данные не изменя-
лись, то возвращаемое значение находится между 0 и  36.  Если  в
процессе выполнения команды данные изменялись, возвращаемое зна-
чение будет находиться между 256 и 292. Другими словами, при из-
мении данных в процессе выполнения команды возвращаемое значение
увеличивается на 256.
     
   Смотри также: INKEY(), ON KEY, READ
     
     
5.55 RECCOUNT
_______________________________________________________________

   Формат: RECCOUNT([<числ_выраж>])

     Функция RECCOUNT выводит количество записей в базе данных в
выбранной в текущий момент рабочей области.
     Если  в  выбранной в текущий момент рабочей области нет ак-
тивного файла базы данных, функция RECCOUNT выведет нулевое зна-
чение.
     В активном файле базы данных будут  подсчитаны  все  записи
независимо от сотояния команд SET DELETE и SET FILTER.
     Фукнция  RECCOUNT поддерживает дополнительный аргумент, ко-
торый указывает на рабочую область, к которой должна  относиться
функция.  Если  аргумент опущен, выведенное значение будет отно-
ситься к выбранной в текущий момент рабочей области.

   Пример:

   *.USE Video
   *.? RECCOUNT()
         35

   Смотри также: RECSIZE()


5.56 RECNO
_______________________________________________________________

   Формат: RECNO([<числ_выраж>])

     Функция RECNO выводит номер текущей записи. Номер записи  -
это  физическое  положение  записи  в выбранном в текущий момент
файле базы данных.
     Если база данных пуста, RECNO() = 1 и EOF() = .T.
     Функция RECNO выведет число на единицу больше, чем  текущее
количество  записей в файле, если указатель записи перемещен да-
лее последней записи в файле.
     Функция RECNO выведет единицу, если указатель записи  уста-
новлен ранее первой записи в файле.
     Фукнция RECNO поддерживает дополнительный аргумент, который
указывает на рабочую область, к которой должна относиться  функ-
ция.  Если в указанной рабочей области нет открытой базы данных,
то выводится значение 0. Если аргумент опущен, выведенное значе-
ние будет относиться к выбранной в текущий момент рабочей облас-
ти.
     
  rechno (0) "мягкий поиск"
     
     После неуспешного поиска (SEEK) в индексированной базе дан-
ных, функция RECHNO (0) использует логику "мягкого  поиска"  для
определения  возвращаемого номера текущей записи. Другими слова-
ми, она возвращает номер записи, предшествующей значению выраже-
ния SEEK относительно индекса. Если значение выражения SEEK  на-
ходится за пределами последнего ввода индекса, то функция RECHNO
(0) возвращает значение 0.

   Примеры:

   *.USE Video
   *.? RECNO()
            1
   *.SKIP -1
   *.? RECNO()
            1
   *.GO BOTTOM
   *.? RECNO()
            35
   *.SKIP
   *.? RECNO()
            36


5.57 RECSIZE
_______________________________________________________________

   Формат: RECSIZE([<числ_выраж>])

     Функция RECSIZE выводит размер текущей записи базы данных в
выбранной в текущий момент рабочей области.
     Будет выведен нуль, если открытых файлов базы данных нет.
     Фукнция RECSIZE поддерживает дополнительный аргумент, кото-
рый  указывает  на  рабочую область, к которой должна относиться
функция. Если аргумент опущен, выведенное значение  будет  отно-
ситься к выбранной в текущий момент рабочей области.

   Пример:

   *.USE Video
   *.? RECSIZE()
            92

   Смотри также: RECCOUNT()


5.58 REPLICATE
_______________________________________________________________

   Формат: REPLICATE(<симв_выраж>,<числ_выраж>)

     Функция    REPLICATE   копирует   символическое   выражение
<симв_выраж>  количество  раз,  указанное  числовым   выражением
<числ_выраж>.
     Максимальнаяч  длина  полученной строки символов может быть
не более 254 символов.
   Эта функция может быть использована при создании диаграмм или
графических форм.

   Пример:

   *.? REPLICATE (" HELLO ", 5)
   HELLO HELLO HELLO HELLO HELLO


5.59 RIGHT
_______________________________________________________________

   Формат: RIGHT(<симв_выраж>,<числ_выраж>)

     Функция RIGHT выводит правую часть строки символов.  Число-
вое выражение <числ_выраж> определяет количество выведенных сим-
волов.
     Если числовое выражение <числ_выраж> меньше или равно нулю,
будет выведена нулевая строка.
     Если  числовое выражение <числ_выраж> больше длины символи-
ческого выражения <симв_выраж>, будет выведено все символичесоке
выражение.

   Пример:

   *.? RIGHT("Perrysburgh, OH",2)
   OH

   Смотри также: LEFT(), LTRIM(), RTRIM(), SUBSTR(), TRIM()

5.60 RLOCK или LOCK
_______________________________________________________________

   Формат: RLOCK() или LOCK()

   Конфигурация: Одно- или многопользовательская.

     Функции RLOCK() и LOCK() идентичны. Приведенное ниже  пояс-
нение относится к фукнции RLOCK(), однако оно может быть отнесе-
но  и  к  фукнции LOCK(). При обнаружении функции RLOCK(0), если
текущая запись базы данных еще не заперта, FoxBASE+ предпринима-
ет попытку закрыть эту запись. В любом  случае  фукнция  RLOCK()
или LOCK() выводит значение .T. или .F..
     Если  функция  RLOCK()  выводит  .T., это означает, что вам
предоставлены права чтения и записи в запись. В  дополнение  при
необходимости  RLOCK()  прочитает текущую запись базы данных для
проверки того, не изменилось ли ее содержание.
     Если функция RLOCK() выводит .F., это означает, что  запись
была  закрыта  другим  пользователем,  и вы можете только читать
запрошенную запись. Ваши действия в такой  ситуации  зависят  от
запросов вашей прикладной программы.
     
   Пример:

   SEEK custname
   IF RLOCK()
      SET FORMAT TO custfile
      READ
   ELSE
      ? "Customer record is not available"
   ENDIF

     Запертая  запись  автоматически отпирается, если содержащий
ее файл базы данных закрывается командами USE, CLEAR, CLOSE  или
QUIT.  Перемещение  с запертой записи не отменяет запирание этой
записи.


5.61 ROUND
_______________________________________________________________

   Формат: ROUND(<числ_выраж1>,<числ_выраж2>)
  
     Функция ROUND позволяет вам округлять числовое выражение до
определенного количества дробных  разрядов.  Числовое  выражение
<числ_выраж1>  задает число, которое вы хотите округлить. Число-
вое выражение <числ_выраж2> задает количество дробных  разрядов,
которое вы хотите сохранить.
   Если <числ_выраж2> имеет отрицательное значение, в результате
округления  будет  получено  число с соответствующим количеством
нулей. Например, если <числ_выраж> равно -2, результат будет ок-
руглен до сотен.

   Пример:

   *.? ROUND (1024.1962,2)
   1024.2000
   *.? ROUND (1024.1962,0)
   1024.0000
   *.? ROUND (1024.1962,-1)
   1020

   Смотри также: INT()


5.62 ROW
_______________________________________________________________

   Формат: ROW()

     Функция ROW выводит текущий номер строки в позиции курсора.
     Эта функция особенно полезна  при  относительной  адресации
курсора в командных файлах.

   Смотри также: @, COL, PCOL(), PROW()


5.63 RTRIM
_______________________________________________________________

   Формат: RTRIM(<симв_выраж>

     Символическое  выражение <симв_выраж> анализируется и выво-
дится выражение, аналогичное исходному,  в  котором  отсутствуют
все   завершающие  его  пробелы.  Если  символическое  выражение
<симв_выраж> состоит целиком из пробелов, функция RTRIM  выводит
нулевую строку.
     Функция RTRIM аналогична функции TRIM.

   Смотри также: LTRIM(), TRIM()


5.64 SELECT
_______________________________________________________________

   Формат: SELECT()

     Функция SELECT выводит номер выбранной в текущий момент ра-
бочей области.

   Пример:

   *.SELECT 1
   *.USE Video
   *.? SELECT( )
   1
     
5.65 SOUNDEX
_______________________________________________________________
                                                               
   Формат: SOUNDEX(<симв_выраж>)
     
     Функция SOUNDEX возвращает звуковое представление использу-
емого ею символьного выражения. Сравнивая результат работы функ-
ции SOUNDEX с двумя символьными строками, можно определить фоне-
тическое сходство двух слов или, другими словами, звучат ли  они
одинаково. Функция полезна при поиске копий или при вводе данных.
     
     Пример:
     
     ? SOUNDEX("Smith")=SOUNDEX("Cmyth")
     .T.
     ? SOUNDEX("Computer")
     C513
     INDEX ON zip+SOUNDEX(company) TO newfile
     

5.66 SPACE
_______________________________________________________________

   Формат: SPACE(<числ_выраж>)

     Функция   SPACE   выводит  строку  символов,  состоящую  из
<числ_выраж> пробелов. Максимально может быть указано  не  более
254 символов.

   Пример:

   *.STORE SPACE(15) TO Blank
   *.? LEN(Blank)
   15

   Смотри также: REPLICATE()


5.67 SQRT
_______________________________________________________________

   Формат:    SQRT(<числ_выраж>)

     Функция  SQRT выводит значение квадратного корня для число-
вого выражения (<числ_выраж>).

     ______________________________________________________
     ! Функция SQRT допускает в качестве аргумента только !
     ! неотрицательные числа.                             !
     !____________________________________________________!

   Примеры:

   *.? SQRT(4)
   2.00
   *.? SQRT(57.6*14.3)
   28.70

   Смотри также: SET DECIMAL, SET FIXED


5.68 STR
_______________________________________________________________

   Формат: STR(<числ_выраж>,<длина>[,дробные])

     Функция  STR позволяет вам преобразовать числовое выражение
в символическое выражение.
     Эта функция может иметь один, два или три аргумента.
     Анализируется числовое выражение  <числ_выраж>.  Затем  его
значение  преобразуется  в  строку длиной <длина> символов. Если
имеется третий аргумент, значение выводится с количеством  дроб-
ных  разрядов  после  десятичной  точки, определенным параметром
[,дробные]. Длина результата, заданная параметром <длина>, вклю-
чает в себя позицию десятичной точки и позиции справа от нее.

   Пример:

   *.? STR(123.456,10,4)
   123.4560

   Смотри также: VAL()


5.69 STUFF
_______________________________________________________________


Формат:STUFF(<симв_выраж1>,<начало>,<числ_выраж>,<симв_выраж2>)

     Функция STUFF  позволяет  вам  легко  модифицировать  часть
строки символов.
     Символичесоке выражение <симв_выраж1> является текущим сим-
волическим  выражением. Параметр <начало> задает начальную пози-
цию в пределах символического выражения <симв_выраж1>, с которой
производится замена. Числовое выражение <числ_выраж> задает  ко-
личество  символов, которое должно быть заменено в строке симво-
лов <симв_выраж1>. Строка символов  <симв_выраж2>  задает  фраг-
мент, который вводится в исходную строку.
     Если  <числ_выраж> равно 0, фрагмент будет вставлен в стро-
ку, однако никакие символы из строки удалены не будут.
     Если <симв_выраж2>  является  нулевой  строкой,  количество
символов,  указанное числовым выражением <числ_выраж> будет уда-
лено из текущей строки без введения какой-либо замены.

   Примеры:

   *.STORE "abcdefghijklm" TO Str1
   *.STORE "12345" TO Str2
   *.? STUFF(Str1,4,3,Str2)
   abc1234ghijklm
   *.? STUFF(Str1,4,6," ")
   abcjklm

   Смотри также: RIGHT(), SUBSTR(), LEFT()


5.70 SUBSTR
_______________________________________________________________

   Формат: SUBSTR(<симв_выраж>,<начало>[,<числ_выраж>])

     Функция SUBSTR выводит  указанное  количество  символов  из
символического выражения <симв_выраж>.
     Эта функция может иметь два или три аргумента. Она извлека-
ет  символы  из  символического выражения <симв_выраж> начиная с
позиции <начало> и длиной <числ_выраж> символов.  Первый  символ
символического выражения <симв_выраж> находится в позиции 1. Ес-
ли  параметр [<числ_выраж>] опущен, символы извлекаются до конца
выражения.

   Примеры:

   *.? STORE "abcdefghijklm" TO Str1
   *.? SUBSTR(Str1,1,5)
   abcde
   *.? SUBSTR(Str1,6)
   fghijklm

   Смотри также: AT(), LEFT(), RIGHT(), STUFF()


5.71 SYS
_______________________________________________________________

   Формат: SYS(<значение>)

   Конфигурация: Одно- или многопользовательская.

     SYS это функция оценки строки символов.  В  зависимости  от
значения  числового  аргумента  <значение> она выводит различные
системные параметры.

   SYS(0)
     При этом выводится имя компьютера и сетевой номер компьюте-
ра, как определено в сети.
              
   SYS(1)
     При этом выводится текущая системная дата по юлианскому ка-
лендарю  в виде строки символов. Эта функция ориентирована в ос-
новном на пользователей исходной версии FoxBASE+ (совместимой  с
dBASE  II)  для  преобразования их баз данных в формат FoxBASE+.
Номер дня, используемый этой функцией, идентичен по формату  но-
меру дня, используемому в исходной версии FoxBASE+.
              
   SYS(2)
     При этом выводится количество секунд, прошедших с полночи в
виде строки символов.
              
   SYS(3)
     Эта  функция выводит уникальное допустимое имя файла, кото-
рое может быть использовано для создания временных  файлов.  При
каждом  использовании функции SYS(3) выводится другое имя файла,
независимо от того, вызывается ли эта функция  одним  и  тем  же
пользователем, или разными.
              
   SYS(5)
     В  MS  DOS  при  этом  выводится имя текущего устройства по
умолчанию. Этот параметр устанавливается командой SET DEFAULT TO
.
              
   SYS(6)
     При этом выводится имя текущего устройcтва печати. Этот па-
раметр устанавливается командой SET PRINT TO .
              
   SYS(7[,w])
     При этом выводится имя текущего файла формата FORMAT.  Если
не  указан  номер  рабочей  области, подразумевается рабочая об-
ласть, выбранная в текущий момент. Это имя файла задается коман-
дой SET FORMAT TO . Если активные форматные файлы отстутс-
твуют, функция выводит строку символов нулевой длины.
              
   SYS(9)
     Эта функция выводит серийный номер вашего пакета FoxBASE+.
              
   SYS(10,d)
     Эта функция преобразует номер дня d в строку символов.  Эта
функция  создана  в основном для удобства пользователей исходной
версии FoxBASE+ (совместимой с dBASE II) для  преобразования  их
баз данных в формат FoxBASE+. Номер дня, используемый этой функ-
цией, аналогичен по формату номеру дня, используемому в исходной
версии FoxBASE+.
              
   SYS(11,s)
     Эта  функция преобразует дату или строку символов в формате
даты в юлианскую дату (которая выводится в  виде  строки  симво-
лов).  Эта функция создана в основном для удобства пользователей
исходной версии FoxBASE+ (совместимой с dBASE II) для преобразо-
вания их баз данных в формат FoxBASE+. Номер  дня,  используемый
этой функцией, аналогичен по формату номеру дня, используемому в
исходной версии FoxBASE+.
              
   SYS(12)
     Эта  функция  выводит  объем свободной памяти в байтах. Эта
функция  может  быть  полезна   при   конфигурировании   системы
FoxBASE+. (Работает только в MS-DOS).

   SYS(13)
     Эта функция выводит статус принтера. Если принтер не готов,
будет  выведено  OFFLINE. Если принтер подключен, будет выведено
ONLINE.
              
   SYS(14,n[,w])
     Эта функция выводит индексное выражение  для  определенного
индексного  файла, где n это номер индексного файла, а w это но-
мер рабочей области. Если рабочая область не указана, подразуме-
вается рабочая область, выбранная в текущий момент. Если указан-
ный номер индексного файла не соответствует никакому  индексному
файлу, выводится нулевая строка символов. Если в качестве n ука-
зано  число  больше  7 или в качестве w указано число больше 10,
будет выведено сообщение об ошибке.
              
   SYS(15,t,s)
     Эта функция в первую очередь ориентирована на  предоставле-
ние  удобств пользователей из Европы, которые используют буквы с
надстрочными символами. В  IBM  эти  символы  имеют  специальное
представление со значение старшего бита 1. Кроме того, поскольку
существуют различные варианты гласных (с разными диакритическими
символами), индексация по полям, содержащим такие символы произ-
водится с нарушением нормального алфавитного порядка.
     Эта  функция  анализирует  каждый из символов строки s, ис-
пользуя числовое значение символа в качестве индекса в "таблице"
t, и заменяя s соответствующим символом, найденным в этой  пози-
ции в таблице t.
     Если таблица слишком мала для того, чтобы содержать символ,
соответствующий символу из s, то соответствующие символы из s не
преобразуются.
     Разработчики  предоставили образец таблицы преобразования в
файле  european.mem,  которая  сохранена  в  переменной   памяти
european.  Эта таблица преобразует букву с диакритическим симво-
лом в соответствующую букву без диакритического символа.
     В качестве примера приведена команда,  которая  может  быть
использована  для выполнения индексирования базы данных по полю,
содержащему буквы с диакритическими символами, с сохранением ал-
фавитного порядка:
                    INDEX ON SYS(15,european,поле) TO файл
                  
   SYS(16[<числ_выраж>)
     Эта функция выводит имя программы,  которая  выполняется  в
текущий момент. Эта функция полезна при обработке ошибок.
     Дополнительный   второй  числовой  аргумент  указывает,  на
сколько лексических уровней надо вернуться назад для поиска име-
ни программы.
     Значения этого параметра находятся в интервале от 1  до  N,
где  N означает глубину, на которую был установлен DO для дости-
жения текущей программы. При значении параметра 1 (или 0)  функ-
ция  возвращает  имя главной программы (первой выполненной прог-
раммы). Если параметр опущен, возвращается имя текущей выполняе-
мой программы.
     
     ЗДЕСЬ ПРОПУСК
              
   SYS(17)
     Эта  функция  возвращает   тип   используемого   процессора
(8086/88, 80286 или 80386).
              
   SYS(18)
     Эта  функция выводит имя поля (в верхнем регистре), в кото-
рое производился ввод, когда была исполнена текущая процедура ON
KEY=. Это может пройзойти только при выполнении операции READ. В
противном случае эта функция выводит пустую строку.
                            
   SYS(100)
     Эта функция выводит значение  параметра  CONSOLE  (ON/OFF),
установленного командой SET.
     Эта  функция,  аналогично  функциям  SYS(101),  SYS(102)  и
SYS(102) предназначена для использования в процедурах  обработки
ошибок.  Поскольку при ошибке может произойти изменение значения
параметров  SET,  (например,  при  ошибке  всегда  задается  SET
CONSOLE  ON), важно иметь возможность узнать ранее установленные
значения этих параметров.
              
   SYS(101)
     Эта функция выводит ранее установленное значение  параметра
DEVICE   (SCREEN/PRINT).   Эта   функция,   аналогично  функциям
SYS(100), SYS(102) и SYS(103) предназначена для использования  в
процедурах обработки ошибок.
              
   SYS(102)
     Эта  функция выводит ранее установленное значение параметра
PRINT  (ON/OFF).  Эта  функция,  аналогично  функциям  SYS(100),
SYS(101) и SYS(103) предназначена для использования в процедурах
обработки ошибок.
              
   SYS(103)
     Эта  функция выводит ранее установленное значение параметра
TALK (ON/OFF). Эта функция наряду с функциями SYS(100), SYS(101)
и SYS(102) используется в процедурах обработки ошибок.


5.72 TIME
_______________________________________________________________

   Формат: TIME(<выраж>)

     Функция TIME выводит текущее системное  время,  в  качестве
значения  функции  TIME(). Время выводится в виде строки символо
длиной восемь символов в 24-часовом формате.
     Если функция TIME вызывается с аргументом  (любым  аргумен-
том), она возвращает значение времени с точностью до сотых долей
секунды. (Однако максимальная разрешающая способность часов рав-
на приблизительно 1/18 секунды).

   Пример:

   *.? TIME()
   13:15:00
   *.? TIME(1)
   13:15:12.53

   В этом примере текущее системное время 1:15 дня.

   Смотри также: SYS(2)


5.73 TRANSFORM
_______________________________________________________________

   Формат: TRANSFORM(<выраж>,<симв_выраж>)

     Функция  TRANSFORM  позволяет форматировать символические и
числовые переменные без использования команды @...SAY.
     Параметр <выраж> представляет переменную, которую вы хотите
сформатировать. Символическое выражение <симв_выраж> это выраже-
ние формата, которое вы хотите использовать с переменной.
     Дополнительная информация о трафаретных форматах  приведена
в описании команды @.

   Пример:

   *.STORE 15.89 TO Price
   *.? TRANSFORM (Price, "$$$$.99")
   $15.89

   Смотри также: @...SAY


5.74 RTRIM
_______________________________________________________________

   Формат: TRIM(<симв_выраж>

     Функция  TRIM удаляет из символического выражения <симв_вы-
раж> завершающие пробелы.
     Символическое выражение <симв_выраж> анализируется и  выво-
дится  выражение,  аналогичное  исходному, в котором отсутствуют
все  завершающие  его  пробелы.  Если  символическое   выражение
<симв_выраж>  состоит  целиком из пробелов, функция TRIM выводит
нулевую строку.

   Пример:

   *.USE Video
   *.? TRIM (Title) + "is rated" + TRIM(Rating)
   AMADEUS is rated PG

   Смотри также: LTRIM(), RTRIM()


5.75 TYPE
_______________________________________________________________

   Формат: TYPE(<симв_выраж>)

     Анализируется символическое выражение  <симв_выраж>.  Затем
выводится соответствующее значение в виде одной буквы, обознача-
ющей тип данных для этого выражения. Могут быть выведены следую-
щие значения:

   C - символическое выражение
   N - числовое выражение
   L - логическое выражение
   M - выражение типа мемо
   U - неопределенный тип выражения.

   Примеры:

   *.? TYPE("12*3)+4")
   N
   *.? TYPE(".F. .OR. .T.")
   L
   *.? TYPE("ANSWER=42")
   U

5.76 UPDATED
_______________________________________________________________

   Формат: UPDATED()

     Функция  UPDATED  возвращает значение ".T.", если последняя
команда READ внесла какие-либо изменения в связанных с ней  опе-
раторах GET.

   Пример программы:

   CLEAR
   @ 5,0 GET Mtitle
   READ
   IF UPDATED()
      USE Video
      REPLACE Title WITH Mtitle
   ENDIF


5.77 UPPER
_______________________________________________________________

   Формат: UPPER(<симв_выраж>)

     Функция UPPER преобразует в указанном символическом выраже-
нии все буквы нижнего регистра в буквы верхнего регистра.

   Пример:

   *.STORE "Fox Sofrtware, Inc." TO Company
   *.? UPPER (Company)
   FOX SOFTWARE, INC.

   Смотри также: ISUPPER(), ISLOWER(), LOWER()


5.78 VAL
_______________________________________________________________

   Формат: VAL(<симв_выраж>)

     Функция VAL преобразует строку символов <симв_выраж> в чис-
ловое  выражение.  Строка <симв_выраж> должна содержать значения
только разрешенных чисел, представленных в ASCII кодах.

   Пример:

   *.STORE "12" TO A
   *.STORE "13" TO B
   *.? VAL(A) + VAL(B)
   25.00
   *.STORE "1.25Е3" TO С
   *.? 2 * VAL(С)
   2500.00
    

   Смотри также: SET DECIMALS, SET FIXED, STR()


5.79 VERSION
_______________________________________________________________

   Формат: VERSION()

     Функция VERSION выводит строку символов,  которая  содержит
номер используемой версии FoxBASE+.
     Эта  функция может быть использована для условного выполне-
ния сегментов  исполняемого  кода,  которые  зависят  от  версии
FoxBASE+.

   Пример:

   *.? VERSION()
   FoxBASE+ Rev 2.00

   Смотри также: DISKSPACE(), GETENV(), OS()


5.80 YEAR
_______________________________________________________________

   Формат: YEAR(<числ_выраж_даты>)

     Функция YEAR выводит год, соответствующий приведенному чис-
ловому выражению даты <числ_выраж_даты>.
     Числовое выражение даты может быть системной функцией даты,
переменной памяти или полем базы данных.

   Примеры:

   *.? YEAR(DATE())
            1986
   *.STORE CTOD("05/23/86") TO Num
   05/23/86
   *.STORE CDOW(Num) TO Day
   Friday
   *.STORE CMONTH(Num) TO Mon
   May
   *.STORE DAY(Num) TO Dnum
   23
   *.STORE STR(Dnum,2) TO Newdnum
   23
   *.STORE STR(YEAR(Num),4) TO Yr
   1986
   *.? "Today is", Day+", Mon, Newdnum+",", Yr
   Today is Friday, May 23, 1986


?????? ???????????