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



 

Часть 3


4 КОМАНДЫ
                                      
     На  последующих  страницах  приведен  полный  список команд
FoxBASE+. Эта же информация может быть получена посредством  ко-
манды  HELP.  Мы  настоятельно рекомендуем вам тщательно ознако-
миться с командой HELP, она очень удобна для быстрого  получения
справки при работе в FoxBASE+.
     База данных, которая используется во многих примерах в гла-
вах 4 и 5 называется Video.dbf. Структура и содержание этой базы
данных приведены в приложении A.
     Специфические  многопользовательские  команды  приведены  в
главе 9.
     Информация,  приведенная  в данном разделе, является только
справочной, но отнюдь не учебной. В продаже есть  много  учебныз
пособий, которые будут полезны тем, кто еще не знаком с FoxBASE+
или  dBASE  III PLUS. В связи с тем, что язык FoxBASE+ идентичен
языку dBASE III PLUS, любое руководство по dBASE III PLUS однов-
ременно является руководством и по FoxBASE+.


4.1 ?
---------------------------------------------------------------

Анализ выражений, вывод результатов

   Формат:           ?[?]<выраж>[,<выраж2>,...]

     ? это команда "Как оцениваются  эти  выражения?"  Выражения
оцениваются и их значения выводятся на экран.

   Примеры:

   *.? 15*(10+10)
      300
   *.? "Welcome to FoxBASE+"
   Welcome to FoxBASE+
   *.? EOF()
   *.F.
   *.USE Video INDEX Title
   *.FIND ARSENIC AND OLD LACE
   *.? Type, Title
   Classic         ARSENIC AND OLD LACE
   *.?  Descript  &&This is a memo field
   Starring: Cary Grant, Raymond massey, Jack
   Carson, Peter Lorre When a man learns his two gentle
   aunts are poisoning gentlemen callers and burring them
   in the cellar, he must try to save the next two victims!
   *. ? Date_aariv  && This is a date field
   12/09/82

?           Используйте один вопросительный знак, когда хотите
            увидеть  значения  в  начале  следующией строки на
            экране или принтере.
??          Используйте два вопросительных знака, когда хотите
            вывести значения, начиная с последней позиции кур-
            сора.
     

4.2 @ SAY/GET
---------------------------------------------------------------

   Выполняет ввод/вывод в указанных столбце и строке

   Формат:   @ <строка,столбец   >
            [[SAY <выраж>
            [PICTURE <формат>]
             FUNCTION <функц_коды>]]
            [[GET ]
            [PICTURE <формат>]
            FUNCTION <функц_коды>]
            [RANGE <числ_выраж1>][,<числ_выраж2>]]
            VALID <логич_выраж>]]

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

   Координаты экрана/принтера

     Для  экранного  ввода/вывода  номер первой строки 0. Строки
нумеруются с 0 по 24, сверху вниз по экрану. Для принтеров  мак-
симальный  номер строки определяется физическим размером страни-
цы.
     Для экранного ввода/вывода номер первого столбца 0. Столбцы
нумеруются с 0 по 79 слева направо по экрану. Для принтеров мак-
симальный номер столбцы определяется физическим размером страни-
цы.

   Оператор SAY
     Если имеется оператор SAY, выражение <выраж> оценивается  и
результат  выводится, начиная с . Если была введена ко-
манда SET DEVICE TO SCREEN, то вывод направляется на экран.  Вы-
вод  команды  SAY выглядит на экране обычным, "неярким" текстом.
Если была введена команда SET DEVICE TO PRINT, вывод производит-
ся на принтер.
   Оператор @SAY может быть использован в форматном файле.


   @ SAY ...PICTURE<формат>
     Если присутствует оператор PICTURE, значение выражения <вы-
раж> редактируется в соответствии с указанным форматом  <формат>
перед  выводом.  Эта  строка  символов  может  состоять из кодов
FUNCTION, трафаретных кодов PICTURE или их сочетания.
     Если используются коды FUNCTION, они указываются в  формате
<формат>,  стоящем после "@". За символом "@" может без пробелов
следовать любое необходимое количество кодов FUNCTION.  За  пос-
ледним  кодом  FUNCTION  в строке должен следовать один или нес-
колько пробелов. Это означает окончание строки кодов FUNCTION  и
начало трафаретных кодов PICTURE.
     Имеющиеся коды FUNCTION и PICTURE приведены в конце настоя-
щего раздела.

   @ SAY ...FUNCTION <функц_коды>
     Оператор  FUNCTION предоставляет дополнительную возможность
введения кодов редактирования FUNCTION  в  строку,  используемую
для  редактирования вывода, генерируемого командой SAY. Введение
перед кодами FUNCTION символа "@" не обязательно. Указание кодов
FUNCTION в операторе FUNCTION аналогично введению их в  оператор
PICTURE, однако при этом трафареты PICTURE становятся более наг-
лядными и соответственно более просты в работе.

   Оператор GET
     Если имеется оператор GET, выполняется операция полноэкран-
ного  редактирования либо начиная с позиции, указанной координа-
тами <строка,столбец>, либо начиная с позиции на экране, следую-
щей за информацией, выведенной оператором SAY.  Если  не  задано
SET  INTENSITY OFF, вывод от оператора GET выделен на экране ин-
тенсивным режимом индикации - обычно  инверсной  видеозасветкой.
Если присутствуют оба оператора, и SAY и GET, по окончании выво-
да  оператором  SAY  и перед выводом оператора GET автоматически
вводится пробел. Для инициализации редактирования полей GET сов-
местно с оператором GET должна быть использована  команда  READ.
Оператор  GET игнорируется, если была введена команда SET DEVICE
TO PRINT.

   GET ... PICTURE <формат>
   GET ... FUNCTION <функц_коды>
     Эти операторы в данном случае по выполняемым функциям  ана-
логичны  оператору SAY, за исключением того, что они редактируют
данные, введенные в соответствии с операторо GET.

   GET ...RANGE[<числ_выраж1>][,<числ_выраж2>]
     Параметр RANGE может быть использован с переменными  число-
вого  типа и даты. Он позволяет пользователю указывать диапазон,
в котором должна находиться вводимая информация. Введенные  зна-
чения могут быть либо числами, либо выражениями типа даты, в за-
висимости от того, содержит ли <перем> числовые данные или дату.
     Если  введено  значение  вне указанного диапазона, на экран
выводится сообщение, в котором указывается допустимый диапазон и
указание для пользователя нажать  клавишу  пробела  и  повторить
ввод значения.
     Могут  быть  опущены  верхняя  или нижняя граница диапазона
RANGE (но не обе). Если соответствующая граница опущена, провер-
ка этой границы не производится.
     Необходимо заметить, что в качестве переменной GET  <перем>
может  быть указан массив переменных памяти, однако индексы мас-
сива анализируются только при  выполнении  оператора  GET.  Если
значения индексов изменяются после выполнения GET и перед выпол-
нением  команды READ, в команде READ будут использованы значения
индексов массива, которые были использованы при выполнении  опе-
ратора GET.

   GET ...VALID <логич_выраж>
     Оператор  VALID позволяет анализировать вводимую информацию
в процессе выполнения команды @...GET. При использовании совмес-
тно с заданной пользователем функцией, оператор VALID может зна-
чительно упростить анализ ввода. В процессе  выполнения  команды
READ,  когда ввод в поле с оператором VALID закончен, <логич_вы-
раж> анализируется с использованием только что  введенной  пере-
менной  <перем>.  Если  <логич_выраж> имеет значение ".T.", ввод
считается правильным и команда READ переходит к вводу в  следую-
щее поле.
     Если <логич_выраж> имеет значение ".F.", введенное значение
считается  неверным.  На  экран выводится сообщение, указывающее
пользователю повторить ввод данных после нажатия  пробела.  Этот
процесс  продолжается  до  тех  пор,  пока <логич_выраж>не будет
иметь значение ".T." или пока не будет нажата клавиша Esc.
     Если значение <перем> при вводе не  изменилось,  (например,
если нажата клавиша Enter без внесения изменений), не выолняются
проверки ни в соответствии с оператором RANGE, ни в соответствии
с  оператором  VALID.  Это полезно, например, при вводе дополни-
тельных записей в базу данных командой APPEND,  когда  не  жела-
тельно выполнять ввод во все поля сразу.
     При  выходе  из  поля GET ператор CLAUSE проверяет правиль-
ность переменной, вне зависимости от того, редактировалась ли она.

   Примеры:
   *. USE Video
   *. @ 4,0 SAY TRIM(Title)+ "Rating:"+Rating
   AMADEUS Rating:PG
   *. @ 5,0 SAY Type PICTURE "@R! GROUP: AAAAAAAAAAAA"
   GROUP: DRAMA
   *. @ 6,0 SAY Cost_buy PICTURE "$999.99"
   $ 59.95
   *. @ 7,0 SAY Cost_buy PICTURE "$****.**"
   $**59.95
   *. @ 5,0 CLEAR   && очистить от 5,0 до правого нижнего угла
   *. STORE -99.65 TO Num1
   *. STORE 76.54 TO Num2
   *. STORE 0.00 TO Num3
   *.@ 8,0 SAY Num1 PICTURE "@CX"
   99.65 DB
   *. @ 9,0 SAY Num2 PICTURE "@CX"
   76.54 CR
   *. @ 10.0 SAY Num3 PICTURE "@Z"

   *.@ 11,0 SAY DATE() PICTURE "@E"
   29/06/86
   *.@ 12,0 SAY DATE() PICTURE "@D"
   06/29/86
   * Значение Num2 должно быть больше 0
   *.@ 13,0 GET Num2 VALID Num2 > 0

     В демонстрационных целях результат выполнения команд  поме-
щен  на  следующую строку после команды. На практике вывод будет
произведен на соответствующую строку экрана.


   Коды редактирования FUNCTIONS

   А      Допускает только алфавитные символы.

   В      Числовые данные выравниваются по левому краю. Может
          использоваться только с числовыми данными.

   С      CR (кредит) выводится после положительных чисел. Может
          использоваться только с числовыми данными. может
          использоваться только с оператором SAY.

   D      Используется для дат в формате American (американский).
          Может использоваться с числовыми, символическими и
          данными типа дат.

   E      Используется для дат в формате European (европейский).
          Может использоваться с числовыми, символическими и
          данными типа дат.

   R      При использовании с строкой <формат>, содеражщей сим-
          волы, а не трафаретные коды PICTURE, обеспечивает вывод
          этих символов без сохранения их в <перемен>. Может
          использоваться только с символьными данными.

   S  Эта функция ограничивает ширину поля при выводе на
         экран. Символы в поле сдвигаются в пределах  позиций
         по горизонтали.  всегда является целой константой.
         Не уместившеся на экране символы могут быть выведены при
         помощи клавиш стрелка_вверх, стрелка_вниз, Ctrl-F,
         Ctrl-A. Может использоваться только с символьными
         данными.

   X     После отрицательных чисел выводятся символы DB (дебит).
         Может использоваться только с числовыми данными. Может
         использоваться только с оператором SAY.

   Z     Выводится пустая строка, если переменная имеет нулевое
         числовове значение. Может использоваться только с
         числовыми данными.

   (     При использовании этой функции отрицательные числа
         заключаются в скобки. Может использоваться только с
         числовыми данными. Может использоваться только с
         оператором SAY.

   !      Может быть введен любая буква. Буквы будут
         преобразованы в верхний регистр. Может быть
         использована только с алфавитными символами.

     В одном операторе function допускается совместное использо-
вание нескольких функций, например, "@CX", при этом после каждо-
го  числа будет выводиться CR или DB. Некоторые функции являются
взаимно несовмеcтимыми, совместное использование их не  допуска-
ется, например, "@DE".


    Трафаретные коды PICTURE

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

   А      Позволяет вводить только алфавитные символы.

   L      Позволяет вводить только логические данные.

   N      Позволяет вводить буквы и цифры.

   X      Позволяет вводить любой символ.

   Y      Позволяет вводить только логические значения Y, y, N,
          n. При этом y и n преобразуются в Y и N.

   9      Позволяет ввод  цифр  для символьных данных.
          Позволяет вводить цифры и знаки для числовых данных.

   #      Позволяет вводить цифры, пробелы и знаки.

   !      Преобразует буквы в нижнем регистре в верхний регистр.

   $      Плавающий знак доллара. Знак доллара выводится перед
          числовым значением.

   *      Перед числовым значением выводятся астериски. Может
          использоваться в сочетании с $ для проверки защиты.

   *.     Служит для указания позиции десятичной точки.

   ,      Служит для отделения знаков числа слева от запятой.


   Смотри также: COL(), EDIT, INSERT, MODIFY COMMAND, PCOL(),
                 PROW(), READ, ROW(), SET BELL, SET CONFIRM, SET
                 DELIMITERS, SET DEVICE, SET FIELDS, SET FORMAT,
                 SET INTENSITY, UFD`s

4.3 @
---------------------------------------------------------------

   Очистка области на экране

   Формат:  @<строка,столбец > [CLEAR/CLEAR TO <строка,столбец>]

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


4.4 @
--------------------------------------------------------------

   Вывести рамку

   Формат: @<строка1,столбец1> TO <строка2,столбец2> [DOUBLE]

     Этот  формат  команды  позволяет  вывести рамку, где <стро-
ка1,столбец1> являются координатами верхнего левого угла  рамки,
а  <строка2,столбец2> являются координатами нижнего правого угла
рамки.
     Если в <строка1,столбец1> и  <строка2,столбец2>  координаты
строки одинаковы, выводится горизонтальная линия, и, аналогичным
образом, если координаты столбца одинаковы, выводится вертикаль-
ная линия.
     Если  используется параметр DOUBLE, будет выведена двойная,
а не одинарная рамка.


4.5 @
--------------------------------------------------------------

   Вывести рамку

   Формат: @<строка1,столбец1><строка2,столбец2>BOX[<симв_выраж>]

     Этот формат команды "@" позволяет вывести рамку, где <стро-
ка1,столбец1> являются координатами верхнего левого угла  рамки,
а <строка2,столбец2> являются координатами правого нижнеого угла
рамки.
     Если  в  <строка1,столбец1> и <строка2,столбец2> координаты
строки одинаковы, выводится горизонтальная линия, и, аналогичным
образом, если координаты столбца одинаковы, выводится вертикаль-
ная линия.
     Символы, задающие рамку, могут  быть  указаны  в  выражении
<симв_выраж>  в  составе команды BOX. Эта строка может содержать
до 9 различных символов - 4 для каждой из сторон и углов и  один
для заполнения. Символы выводятся начиная с верхнего левого угла
рамки  по  часовой  стрелке, 9-ый символ используется в качестве
фона. Если строка отсутствует, выводится одинарная рамка.
     
4.6 @ <строка,столбец> MENU
--------------------------------------------------------------
     
     Создать вынимаемое меню

   Формат: @<строка,столбец> MENU <массив>, <выражN1>[,<выраж N2>]
           [TITLE<симв_выраж>]
     
     Эта команда создает вынимаемое меню в любом  месте  экрана,
независимо  от курсора меню верхнего ряда. Вынимаемые меню могут
иметь заголовки, появляющиеся в верхней  части  окна  меню.  Для
включения  вынимаемого  меню  используется  команда READ MENU. В
каждый момент времени включенным может быть  только  одно  такое
меню.
     <коорд>     Пара арифметических выражений, указывающих мес-
                 тоположение левого верхнего угла меню.
     
     <массив>    Одномерный массив,  содержащий  опции меню. Эти
                 опции  должны  иметь символьный, и длина каждой
                 не должна  превышать 50 символов.
     
     <выражN1>   Число опций меню - не должно превышать 128.
     
     <выражN2>   Этот необязательный аргумент указывает число оп-
                 ций меню, одновременно  выводимых на  экран - не
                 не должен превышать 17. Если он превысит 17, на
                 экран все равно будет выведено только 17 опций.
                 Если число опций, которые надо вывести  на  эк-
                 ран, меньше меньше общего числа опций, то можно
                 прокручивать окно.
     TITLE       Этот необязательный аргумент - заголовок, выво-
                 димый вверху окна меню.
     
     Пример:
     
     DIMENSION choices (3,1)
     STORE "Chicken" TO choices (1)
     STORE "Beef" TO choices (2)
     STORE "Fish" TO choices (3)
     STORE 0 TO mchoice
     @ 5,0 MENU dinner, 3 TITLE "Dinner Choices"
     READ MENU TO mchoice
     
     См. также READ MENU, MENU
     
     
4.7 @ <строка,столбец> PROMPT
---------------------------------------------------------------

   Создать меню со световым маркером

   Формат: @<строка,столбец>
           PROMPT <симв_выраж>
           [MESSAGE <симв_выраж>]

     Этот формат команды "@" используется для создания и модифи-
кации меню.
     Последовательность  команд @ ... PROMPT выведет строки меню
в соответствующих позициях экрана. Она используется в  сочетании
с командой MENU TO, которая активизирует меню со световым марке-
ром,  управляемое  клавишами курсора, для заданных в текущий мо-
мент строк PROMPT.
     По мере передвижения пользователем маркера выбора по  стро-
кам  меню  каждая из строк PROMPT выделяется инверсной видеозас-
веткой и в позиции, указанной командой SET MESSAGE TO  <числ_вы-
раж>, выводится соответствующее этой строке меню сообщение.
     Выбор в меню может быть произведен:

   * нажатием клавиши Enter при расположении маркера выбора на
     соответствующей строке PROMPT

   * вводом первой буквы соответствующей строки

     В  переменную  памяти,  указанную в строке команды MENU TO,
заносится номер выбора, определяемый порядком  следования  строк
PROMPT.
   Команда @ ... PROMPT позволяет выводить на экран до 128 пром-
птов. Объем памяти, отводимый для хранения их вместе с соответс-
твующими  сообщениями  может  быть установлен в файле Config.fx.
Этот объем может быть от 1 до 32 К (по умолчанию принят 1К). Для
увеличения  этого  объема  вставьте  в  файле  Config.fx  строку
=<значение>.  Для  получения  дополнительной  информации о
способах конфигурирования см. главу 6 "Тонкая настройка".

   Пример:

   ***Задать содержание строк меню***
   @ 1,10 PROMPT `QUIT MESSAGE SPACE(30);
         +`QUIT PROGRAM`
   @ 1,20 PROMPT `ADD` MESSAGE SPACE(30)
         +`ADD RECORDS`
   @ 1,30 PROMPT `UPDT` MESSAGE SPACE(30)
         +`UPDATE RECORDS ON DATABASE`
   @ 1,40 PROMPT `DEL` MESSAGE SPACE(30)
         +`DELETE RECORDS FROM DATABASE`
   ****вывести текст на строке 24 ***
   SET MESSAGE TO 24
   **** ВЫДЕЛИТЬ ПЕРВЫЙ ВЫБОР СВЕТОВЫМ МАРКЕРОМ***
   MENU TO choice
   **** ВЫПОЛНИТЬ ВЫБОР ПОЛЬЗОВАТЕЛЯ
   DO CASE
      CASE choice = 1
         DO QUITPRG
      CASE choice = 2
         DO ADDPRG
      CASE choice = 3
         DO UPDPRG
      CASE choice = 4
         DO DELPRG
   ENDCASE

   Смотри также: SET MESSAGE TO, MENU TO
                                                         

 4.8 ACCEPT
-----------------------------------------------------------

   Ввести строку символов с экрана

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

     Эта  команда позволяет вам вводить символические данные не-
посредственно в переменную памяти, не  заключая  их  в  кавычки.
Введенные данные всегда сохраняются, как строка символов.
     Если  вводится необязательный параметр <симв_вырыж>, он вы-
водится на экран для напоминания пользователю о том, какие  дан-
ные  необходимо ввести. Подсказка может быть символической пере-
менной памяти или строкой символов. Если  <симв_вырыж>  является
строкой  символов,  она должна быть ограничена одиночными (' '),
двойными (" ") кавычками или квадратными скобками ([ ]).
     Если <перем_пам> не была задана ранее,  она  будет  создана
командой ACCEPT. Переменная памяти <перем_пам> может иметь длину
до 254 символов.
   ACCEPT отличается от INPUT по следующим параметрам:

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

   * Символические данные не нужно заключать в кавычки.

Пример:

   *.ACCEPT "NAME OF MOVIE:" TO Movie
   NAME OF MOVIE:BACK TO THE FUTURE
   *. ? Movie
   BACK TO THE FUTURE

   Смотри также: INPUT, WAIT


 4.9 APPEND
----------------------------------------------------------

   Ввести дополнительные записи в полноэкранном режиме

   Формат:  APPEND

     Команда APPEND имеет несколько форматов. Все форматы коман-
ды APPEND позволяют ввести дополнительные записи в  конец  файла
базы данных, находящегося в текущий момент в области USE.
     Этот  формат команды выполняет процедуру полноэкранного ре-
дактирования, в процессе которой к активной  базе  данных  может
быть добавлено любое количество записей.
     Если  отстутствуют  активные  команды SET FORMAT, подсказка
пользователю о вводе в каждое поле каждой записи производится  с
использованием умалчиваемой конфигурации экрана.
     Если  имеется активная команда SET FORMAT, в процессе ввода
информации используется конфигурация экрана, указанная в FORMAT.

   Смотри также: SET CARRY, SET FORMAT TO


4.10  APPEND BLANK
-------------------------------------------------------------

   Ввести пустую запись в базу данных

   Формат: APPEND BLANK

     APPEND BLANK вводит в конец активной  базы  данных  запись,
содержащую только пробелы.


4.11 APPEND FROM
-------------------------------------------------------------

   Ввести из файла в активную базу данных

   Формат: APPEND FROM <файл>
           [FIELDS <список_полей>]
           [FOR <логич_выраж>]
           [WHILE <логич_выраж>]
           [TYPE <тип_файла>]
           [DELIMITED [WITH <ограничитель>|BLANK]]

     Эта  форма  команды  APPEND позволяет взять данные из файла
базы данных FoxBASE+ <файл> и ввести записи, созданные  из  этих
данных,  в  конец используемого в текущий момент файла базы дан-
ных.


   FIELDS <список_полей>
     APPEND FROM поддерживает необязательный список  полей.  При
этом  возможно  обеспечить  доступ  для добавления в базу только
указанных полей.

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

   TYPE <тип_файла>
     Это  выражение  должно  использоваться в случае, когда FROM
 не является базой данных. Выражение TYPE исполтзуется для
спецификации  других типов файлов. К подходящим типам файлов от-
носятся DELIMITED и SDF.

   DELIMITED [WITH <ограничитель>/BLANK]
     Это файл ASCII, в котором каждая запись заканчивается  сим-
волами  возврата каретки и перевода строки. Обычно поля разделя-
ются запятыми, а символьные поля дополнительно разделяются двой-
ными кавычками. Например:

   "555", 99999999, "TELEPHONE"

     Параметр DELIMITED WITH BLANK (ограничено пробелами)  может
быть  использован  для определения файлов, которые должны содер-
жать поля, разделяемые не запятыми, а одним пробелом. При помощи
параметра DELIMITED WITH <ограничитель> может быть указан другой
тип ограничителя для использования со строками символов.

   SDF
     Файл  SDF - это текстовый файл ASCII. Каждая запись в файле
является записью фиксированной длины и  заканчивается  символами
возврата каретки и перевода строки.

   Для файлов в форматах SDF  и DELIMITED подразумевается
расширение имени файла .TXT.

   Примеры:

   *. USE Video2
   *. APPEND FROM Video FOR Type = "Comedy"
      5 records added
   *. APPEND FROM Video FIELDS Title,Cost_buy
      35 records added
   *. ? FCOUNT ()
    2


4.12 AVERAGE
--------------------------------------------------------------

     Вычислить  среднее  для  числовых  выражений или полей базы
данных.

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

     Команда AVERAGE позволяет вычислить среднее  арифметическое
для  числовых  выражений. Обрабатываются все числовые выражения,
если параметром <список_выр> не  указано  иначе.  Обрабатываются
все  выражения,  если  в  команде не использованы параметры FOR,
WHILE, или scope (диапазон). Кроме  того,  результат  выполнения
команды  AVERAGE может быть занесен в переменные памяти, указан-
ные в списке (<спис_перем_пам>).

   Примеры:

   *.USE Video
   *.AVERAGE Nimes_rent FOR Type = "Comedy"
      5 records averaged.
   TIMES_RENT
      6131
   *.AVERAGE Cost_buy to Cost_avg
      35 records averaged.
   COST_BUY
   33.09
   *.? Cost_avg
      33.09

     В данном примере поле Times_rent усредняется для всех запи-
сей, в которых поле Type содержит слово "Comedy". Затем усредня-
ются все записи по полю Cost_buy и значение заносится в перемен-
ную памяти Cost_avg.

   Смотри также: SET HEADING, SET TALK, SUM


 4.13 BROWSE
--------------------------------------------------------------

   Просмотр активного файла базы данных в полноэкранном режиме

   Формат: BROWSE
           [FIELDS <список>]
           [LOCK <выраж>]
           [FREEZE <поле>]
           [NOFOLLOW]
           [NOMENU]
           [NOAPPEND]
           [WIDTH <выраж>]
           [NOMODIFY]

     Команда BROWSE является одной из наиболее полезных команд в
составе FoxBASE+. Она позволяет вам достаточно просто редактиро-
вать и добавлять записи в используемую  в  текущий  момент  базу
данных. При работе с командой BROWSE экран является окном в вашу
базу данных. На экран могут быть по вертикали выведены до 17 за-
писей  одновременно;  по  горизонтали  выводится  столько полей,
сколько умещается на экране. Вы можете перемещать это окно вверх
или вниз от одной записи к другой, или по горизонтали (от поля к
полю), по всей базе данных, просматривая, редактируя или  удаляя
записи.
     Для  вывода  на  экран строки меню нажмите F10. Для включе-
ния/выключения меню клавиш редактирования нажмите F1. Вы  можете
сохранить все внесенные изменения и выйти из команды BROWSE, на-
жав  Ctrl-W.  Если  вы  нажмете  Ctrl-Q,  вы  выйдете из команды
BROWSE, не сохранив внесенных изменений.
     Поля МЕМО могут редактироваться в FoxBASE+ при  помощи  ко-
манды BROWSE. Для выполнения редактирования полей МЕМО в BROWSE,
установите  курсор на слово memo и нажмите Ctrl-PgDn. Для выхода
из поля МЕМО нажмите Ctrl-PgUp.

   FIELDS <список>
     Если присутствует параметр FIELDS, то выводятся только поля
базы данных, указанные в <список>(список). Эти поля выводятся на
экран в порядке, определенном в <список>. В противном случае вы-
водятся все поля базы данных в том порядке, в котором они  стоят
в файле базы данных.

   LOCK <выраж>
     Параметр LOCK может быть использован для указания количест-
ва полей в левой части экрана, которые не будут перемещаться при
смещении  экрана по полям базы данных. Эти поля останутся на эк-
ране для просмотра или редактирования.

   FREEZE <поле>
     Параметр FREEZE может быть использован для того, чтобы зап-
ретить внесение изменений во все поля кроме одного поля <поле> в
течение одного сеанса работы с командой BROWSE. При этом,  одна-
ко, на экран выводятся все поля.

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

   NOMENU
   Параметр  NOMENU запрещает пользователю доступ к меню, обычно
вызываемому при нажатии клавиш Ctrl-Home, что разрешает  быстрое
перемещение по базе данных, полям FREEZe и т.п.

   NOAPPEND
     Параметр  NOAPPEND не позволяет пользователю вводить в файл
дополнительные записи.

   WIDTH <выраж>
     Параметр WIDTH используется для ограничения количества сим-
волов, которые будут выводиться для любого поля. Содержимое поля
может перемещаться по  горизонтали  при  помощи  соответствующих
клавиш.

   NOMODIFY
     Параметр  NOMODIFY предотвращает внесение в базу данных из-
менений. Этот параметр может с успехом использоваться  разработ-
чиками,  которые  желают  предоставить возможность пользователям
своих программ просматривать базы данных из BROWSE, но при  этом
предотвратить возможные повреждения баз данных.

   ОПЦИИ МЕНЮ

Top      Перемещает указатель записи к первой логической записи
         в файле.

Bottom   Перемещает указатель записи к последней логической
         записи в файле.

Record   Перемещает указатель записи к записи с указанным
         номером.

Find      Перемещает указатель записи к записи, которая
         соответствует указанному значению ключевого поля. Для
         использования этого режима база данных должна быть
         индесированной.

Skip      Перемещает указатель записи вперед или назад на
         указанное количество записей.

Lock      Позволяет вам зафиксировать определенное количество
         записей на экране.

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

   Пример:

*.USE Video
*.BROWSE FIELDS Title, Descript, Ratting, Length NOAPPEND

     В   приведенном  примере  поля  Title,  Descript,  Ratting,
Length, могут быть выведены на экран для предоставления  пользо-
вателю, желающему приобрести видеофильм, необходимой информации.
Обратите внимание на то, что поле мемо Descript может быть отре-
дактировано  или просмотрено в команде BROWSE. Параметр NOAPPEND
предотвращает введение новых записей в базу данных.

   Смотри также: APPEND, EDIT


4.14 CALL
------------------------------------------------------------

   Вызвать двоичную программу из памяти

   Формат: CALL <файл>
           [WITH <симв_выраж>/<перем_пам>]

     Команда CALL работает совместно с командой LOAD. Эта коман-
да позволяет вам выполнять собственные программы в двоичном коде
непосредственно из памяти компьютера.
     Команда LOAD загружает двоичный файл в память. Команда CALL
позволяет вам выполнить загруженный двоичный файл.
     Параметр WITH может быть  использован  для  передачи  вашей
программе соответствующих параметров. Может быть передана строка
символов или переменная памяти. Переменная памяти может быть лю-
бого типа.
     Указывать  расширение  имени двоичного файла не нужно, пос-
кольку эту расширение не копируется при загрузке файла в память.
При входе в модуль, вызванный командой CALL, CD указывает на на-
чало модуля. Пара регистров DS и BX указывает на первый байт па-
раметров, переданных при помощи конструкции WITH.  Если  никакие
параметры не передаются, BX содержит 0.
                                              
    _____________________________________________
    ! Внимательно  ознакомьтесь  с приведенными !
    ! далее рекомендациями по интерфейсу с язы- !
    ! ком Ассемблера.                           !
    !___________________________________________!

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

* Если вы используете "dBASE Tools for  C",  существует  возмож-
     ность,  что символические переменные будут перемещены в па-
     мяти системой управления памятью FoxBASE+. В связи  с  этим
     необходимо  установить  адрес строки, которую вы будете ис-
     пользовать, непосредственно перед ее использованием.

* При сохранении адреса строки между последовательными  вызовами
     внешней программы необходимо также установить адрес строки,
     по  которому будет производиться сохранение непосредственно
     перед использованием строки.

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


4.15 CANCEL
--------------------------------------------------------------

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

   Формат: CANCEL

     Команда  CANCEL  прекращает  выполнение  командного   файла
FOxBASE+.  Управление передается любо в нормальный интерактивный
режим клавиатуры, либо в операционную систему.
     Если  програма  выполняется  в  рабочей  (Runtime)   версии
FoxBASE+, FoxBASE+ прекратит работу и передаст управление исход-
ной  операционной  системе.  Если программа выполняется в версии
разработки FoxBASE+, управление будет передано в нормальный  ин-
терактивный режим клавиатуры.
     Когда выполняется команда CANCEL, очищаются все собственные
переменные памяти.

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

   IF Password <> "Video"
      CANCEL
   ELSE
      DO Tape_lib
   ENDIF

     В   приведенном   выше   примере  анализируется  переменная
Password. Если был введен неверный пароль (password), выполнение
программы будет прервано. Если пароль  верен,  в  данном  случае
"Video", выполняется программа Tape_Lib.

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


4.16 CHANGE
---------------------------------------------------------------

   Корректировать записи базы данных в полноэкранном режиме.

   Формат: CHANGE [<диапазон>]
           [FIELDS <список_полей>]
           [FOR/WHILE <выраж>]
           [WHILE <догич_выраж>]
     
     Эта  команда позволяет выполнять полноэкранное редактирова-
ние указанных полей в текущей базе данных. На экран  для  работы
будут  выведены  поля,  перечисленные в конструкции FIELDS <спи-
сок>. Для редактирования будут включены все поля, если не  опре-
делен  FILDS <список полей>. Редактирование может быть выполнено
для всех полей, если не использованы  операторы  диапазона,  FOR
или WHILE. Команда EDIT функционирует аналогично команде CHANGE.
     Далее приведен перечень клавиш управления курсором, которые
могут быть использованы с командой CHANGE (дополнительные данные
приведены в разделе "Клавиши управления курсором" главы 3):

PgUp       Назад к предыдущей записи.

PgDn       Перейти к следующей записи.

Ctrl-End  Выйти из CHANGE и сохранить все изменения.

Esc       Выйти из CHANGE и сохранить все изменения, за
          исключением внесенных в текущую запись.

Ctrl-PgDn Используется для редактирования поля мемо.
          Установите курсор на слово "memo" и нажмите Ctrl-PgDn.

Ctrl-PgUp Выйти из поля мемо.

   Пример:

   *.USE Video
   *.CHANGE FIELDS Title, Cost_buy, Cost_rent FOR Cost_buy > 29.95

     В данном примере поля Title, Cost_buy и Cost_rent выводятся
на экран для редактирования. Изменения могут быть внесены только
в те записи, для которых значение в поле Cost_buy больше 29.95.


   Смотри также: EDIT, SET FORMAT TO


4.17 CLEAR
--------------------------------------------------------------

   Форматы: CLEAR
            CLEAR ALL
            CLEAR FIELDS
            CLEAR GETS
            CLEAR MEMORY
            CLEAR PROGRAM
            CLEAR TYPEAHEAD

     Команда CLEAR без аргументов очищает экран или все  текущие
операторы GET. Команда CLEAR разрешена в файлах форматов.

   Смотри также: @, CLEAR GETS

   
   CLEAR ALL

     Команда CLEAR ALL очищает все переменные памяти, производит
выбор первой рабочей области (рабочей области 1) и закрывает все
открытые  в  текущий момент файлы баз данных, включая индексные,
форматные файлы и файлы мемо.

   Смотри также: CLEAR MEMORY, CLOSE, RELEASE ALL


   CLEAR FIELDS

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

   Смотри также: SET FIELDSOFF, SET FIELDS TO


   CLEAR GETS

   Команда CLEAR GETS очищает все текущие операторы GET.

   CLEAR MEMORY

   Команда CLEAR MEMORY очищает все общие и локальные переменные
памяти.

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


   CLEAR PROGRAM

     Команда  CLEAR  PROGRAM очистит буфер компилированной прог-
раммы. Это может понадобиться в некоторых нестандартных ситуаци-
ях, например, при использовании команды RUN для смены  каталогов
командой  MS-DOS  CHDIR  или изменения параметров командой PATH.
Команда CLEAR PROGRAM должна также быть использована в следующих
ситуациях:

* С командой MODIFY COMMAND используется внешний для FoxBASE+
  редактор.

* Команда MODIFY COMMAND используется  для модификации
  процедурного файла (отдельные процедуры в составе процедурного
  файла автоматически не удаляются из памяти при использовании
  MODIFY COMMAND).

   Смотри также: MODIFY COMMAND
     
   CLEAR PROMPT
     
     CLEAR PROMPT позволяет очистить  подсказки,  выведенные  на
экран  командой  @...PROMPT,  не пользуясь командой MENU TO <пе-
рем_памяти>.
     
     Смотри также: @...PROMPT, MENU TO
     

   CLEAR TYPEAHEAD

     Команда CLEAR TYPEAHEAD очищает буфер клавиатуры.  Эта  ко-
манда особенно полезна в тех случаях, когда вы хотите обеспечить
вывод подсказки для пользователя перед вводом с клавиатуры.

   Смотри также: SET TYPEAHEAD TO.


 4.18 CLOSE
--------------------------------------------------------------

   Закрывает различные типы файлов

   Форматы: соответствуют следующим далее заголовкам

   CLOSE ALL

     Команда CLOSE ALL закрывает все типы файлов и выбирает  ра-
бочую область 1. Этот формат команды не оказывает влияния на па-
мять.


   CLOSE ALTERNATE

     Команда CLOSE ALTERNATE закрывает открытый файл alternate.


   CLOSE DATABASES

   Команда CLOSE DATABASES закрывает все открытые файлы баз
данных,  индексные и форматные файлы, и выбирает рабочую область 1.


   CLOSE FORMAT

     Команда CLOSE FORMAT закрывает открытый формтный файл,  на-
ходящийся в используемой в текущий момент рабочей области.


   CLOSE INDEX

     Команда CLOSE INDEX закрывает все открытые индексные файлы,
которые находятся в используемой в текущий момент рабочей облас-
ти.


    CLOSE PROCEDURE

     Команда  CLOSE  PROCEDURE  закрывает  открытый  процедурный
файл.

   Примеры:

   *.USE Video INDEX Title
   *.? DBF()
   C:\FOX\VIDEO.DBF
   *.? NDX(1)
   C:\FOX\TITLE.NDX
   *.CLOSE INDEX       && Закрыть индексный файл в рабочей области
   *.? DBF()
   C:\FOX\VIDEO.DBF
   *.? NDX(1)

   *.CLOSE DATABASE      && Закрыть базы данных
   *.? DBF()


4.19 CONTINUE
---------------------------------------------------------------

   Продолжение поиска записей в цикле командой LOCATE

   Формат: CONTINUE

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

   Примеры:

   *.USE Video
   *.LOCATE FOR Rating = "G"
   Record = 7
   *.DISPLAY TRIM(Title),Rating
   Record#      TRIM(TITLE)               RATING
         7      THE SONS OF KATIE ELDER   G
   *.CONTINUE
   Record = 27
   *.CONTINUE
   Record = 34
   *.CONTINUE
   End of Locate scope.
   *.? EOF()
   *.T.

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


4.20 COPY FILE
------------------------------------------------------------

   Копировать любой тип файла

   Форматы:  COPY FILE <файл1> TO <файл2>

     Эта форма команды COPY создает точную копию файла  <файл1>.
<файл1>  может быть любого типа. Эта форма команды COPY не может
быть использована с открытыми файлами. Расширения  обоих  файлов
необходимо  вводить  явным образом, т.к. отсутствуют принятые по
умолчанию расширения.

   
4.21 COPY TO
---------------------------------------------------------------

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

   Формат:  COPY TO <файл>[<диапазон>]
            [FIELDS <Список_полей>]
            [FOR <логич_выраж>]
            [WHILE <логич_выраж>]
            [TYPE <тип_файлы>]
            [DELIMITED [WITH <ограничитель>|BLANK]]
            
     
     В этом формате команды COPY данные копируются из используе-
мого в текущий момент файла базы данных в файл <файл>.  Если  не
указано расширение для <файл>, то присваивается .DBF.
     Используя  спмсок  FIELDS,  можно  копировать все поля базы
данных, которые открыты, но не выбраны (SELECTed).
     В файл <файл> копируются все записи, если не указано  иначе
операторами диапазон, FOR <выраж>, или WHILE <выраж>.


   TYPE <тип_файла>

     Файл, в который происходит копирование (TO <файл>), не обя-
зательно  должен ииметь тип .DBF. Для указания других типов фай-
лов может быть использована конструкция TYPE <тип_файла>. Описа-
ние имеющихся типов приведено в команде APPEND.
     
     
   [DELIMITED [WITH <ограничитель>|BLANK]]
     
     Файд DELIMETED - это текстовый файл в ASCII  кодах,  каждая
запись  которого  заканчивается знаками возврата каретки и новой
строки. Обычно поля разделяются запятыми, а символьные поля  до-
полнительно разделяются двойными кавычками. Для определения раз-
деляющих знаков можно использовать оператор WIDTH. Для получения
дополнительной  информации  о  ключевом слове DELINMETED, смотри
команду APPEND FROM.
     

   Смотри также: APPEND FROM, COPY FILE, COPY STRUCTURE, SET
                 DELETED, SELECT, SET SAFETY


4.22 COPY STRUCTURE
---------------------------------------------------------------
   
   Скопировать структуру базы данных в другую базу

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

     При использовании этого формата команды в файл <файл> копи-
руется только структура используемой в текущий момент базы  дан-
ных.  Список  полей базы данных, приведенный в операторе FIELDS,
используется для создания структуры файла базы  данных  в  файле
<файл>.   Копируются  только  поля,  перечисленные  в  операторе
FIELDS. Если этот оператор отсутствует, копируются все поля.
   
   Смотри также: DISPLAY STRUCTURE, SET SAFETY


4.23   COPY STRUCTURE EXTENDED
---------------------------------------------------------------
     
     Копировать структуру базы данных в  записи  в  другую  базу
данных
     
   Формат: COPY TO <файл> STRUCTURE EXTENDED
                          
     Структура используемой базы данных копируется в записи базы
данных в <файл>. В дальнейшем эти записи могут быть отердактиро-
ваны соответствующим образом. В этом случае файл TO <файл> имеет
фиксированную структуру и содержит поля:

   FIELD_NAME
   FIELD_TYPE
   FIELD_LEN
   FIELD_DEC

     Значения записей в файле TO <файл> соответствуют параметрам
структуры  текущей  базы  данных.  Полученный  файл может быть в
дальнейшем использован для создания нового файла базы данных при
помощи команды CREATE FROM после внесения соответствующих  изме-
нений в командах EDIT или BROWSE.
   
   Смотри также: CREATE FROM

   
4.24 COUNT
---------------------------------------------------------------

   Подсчитать записи в базе данных

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

     Эта  команда выполняет подсчет записей в пределах диапазона
[диапазон], для  которого  выполняется  условие  WHILE/FOR  <ло-
гич_выраж>.  Если  при  этом включен режим TALK, результат счета
будет выведен в следующей форме:

   nnn records

     Если указан параметр ТО, полученный результат  заносится  в
переменную памяти <перем_пам>. <перем_пам> будет при этом созда-
на,  если  она  не была определена ранее. Записи, помеченные для
удаления, подсчитываются только в том случае, если режим  DELETE
выключен  (SET OFF). Диапазон по умолчанию равен ALL (все). Если
отсутствуют операторы FOR и WHILE, в пределах диапазона  [диапа-
зон] подсчитываются все записи.

   Примеры:

   *.USE Video
   *.COUNT
      35 records
   *.COUNT FOR Rating = "PG" TO Pgcount
      15 records
   *.? Pgcount
         15

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


4.25 CREATE
---------------------------------------------------------------

   Создать базу данных в полноэкранном режиме

   Формат:  CREATE [<файл>]

     Этот  формат команды CREATE позволяет создавать новые файлы
баз данных FoxBASE+ с использованием режима полноэкранного реак-
тирования. Если имя файла [<файл>] не задано явно в составе  ко-
манды,  будет  выведен  запрос на ввод имени создаваемого файла.
Затем FoxBASE+ запросит ввести  имя,  тип,  длину  и  количество
дробных десятичных знаков для каждого из полей создаваемого фай-
ла базы данных. Вы сообщаете FoxBASE+ о завершении создания фай-
ла  базы  данных  путем  нажатия клавиши ВВОД вместо ввода имени
очередного поля.
     После того,  как  создание  базы  данных  будет  завершено,
FoxBASE+  спросит, желаете ли вы вводить данные в новую базу не-
медленно. Если вы ответите 'Y'es (да), то FoxBASE+ автоматически
перейдет в режим APPEND и вы сможете выполнить ввод данных. Если
вы ответите 'N'o (нет), то управление  будет  передано  команде,
следующей  за командой CREATE в командном файле или просто в ин-
терактивный режим.

   Смотри также: MODIFY COMMAND


4.26 CREATE  FROM
---------------------------------------------------------------
     
   Создать базу данных из файла COPY STRUCTURE EXTENDED

   Формат: CREATE [<файл1>] FROM [<файл2>]

     В этом формате команды  CREATE  подразумевается,  что  файл
<файл2>  был создан в ручном режиме или с использованием команды
COPY STRUCTURE EXTENDED, и что этот файл был отредактирован  со-
ответствующим  образом.  Затем  создается <файл1>, который имеет
структуру, описанную в файле <файл2>. В результате вновь создан-
ный файл базы данных заносится в область USE.

   Смотри также: COPY STRUCTURE EXTENDED


4.27 CREATE LABEL
---------------------------------------------------------------

   Создать файл ярлыков в полноэкранном режиме

   Формат: CREATE LABEL [<файл>]

     Этот формат команды CREATE позволяет создавать файлы  ярлы-
ков  с  использованием  режима полноэкранного редактирования. Из
файлов базы данных создаются стандартные почтовые ярлыки.
     Стандартным расширеним имени  для  файла  ярлыков  является
.LBL.
     После  выполнения  команды, имя файла и его структура выво-
дятся в верхней части экрана.
     Если в состав файла базы данных входят более 16  полей,  вы
можете  смещать  экран  вправо  путем  нажатия комбинации клавиш
Ctrl-правая_стрелка  (или  Ctrl-B)  или  влево   путем   нажатия
Ctrl-левая_стрелка (или Ctrl-Z).
     Для  перехода  от  вывода меню клавиш управления курсором к
выводу структуры файла нажмите F1.
     Стандартные размеры ярлыков - Для  вас  сформирован  список
стандартных размеров ярлыков. Для вывода меню стандартных разме-
ров ярлыков нажмите Ctrl-Home. В это меню занесено 5 стандартных
размеров:

   Ширина      Высота    # Ярлыков в ширину

   3-1/2"      15/16"      1
   3-1/2"      15/16"      2
   3-1/2"      15/16"      3
   4"          1-7/16"     1
   3-2/10"     11/12"      3(Чеширский)

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

   Параметр                      Диапазон

   Ширина ярлыка                1-120 символов
   Высота ярлыка                1-16 строк
   Левое поле                   0-250 символов
   Строк между ярлыками         0-16 строк
   Пробелов между ярлыками      0-120 позиций
   # ярлыков по ширине листа    1-5 ярлыков

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

   Смотри также: MODIFY LABEL, LABEL.


4.28 CREATE REPORT
---------------------------------------------------------------

   Создать форматный файл отчетов в полноэкранном режиме

   Формат: CREATE REPORT <файл>

     Этот  формат  команды  CREATE  позволяет использовать режим
полноэкранного редактирования для создания форматных файлов  от-
четов. Из файлов базы данных создаются столбцы отчетных форм.
     Для  форматного файла отчетов по умолчанию принимается рас-
ширение .FRM.
     При выполнении команды CREATE REPORT в верхней части экрана
выводится имя файла и его структура.
     Если в состав файла базы данных входят более 16  полей,  вы
можете  смещать  экран  вправо  путем  нажатия комбинации клавиш
Ctrl-правая_стрелка  (или  Ctrl-B)  или  влево   путем   нажатия
Ctrl-левая_стрелка (или Ctrl-Z).
     Для  перехода  от  вывода меню клавиш управления курсором к
выводу структуры файла нажмите F1.
     На перврой странице экрана  можно  определить  заголовок  и
страницу отчета.
     Заголовок может содержать до 4 строк, каждая из которых мо-
жет содержать до 60 символов.
     Для  форматного  файла  отчета могут быть выбраны параметры
формата по умолчанию. К основным параметрам формата отчета отно-
сятся ширина страницы, ширина левого поля, ширина правого  поля,
количество  строк на странице, расстояние между строками, прогон
страницы перед и/или после распечатки отчета, и  параметр  plain
(простой).
     Для  использования параметров формата FoxBASE+ по умолчанию
нажмите PgDn или клавишу стрелка_вниз. При этом курсор  перемес-
тится к следующему экрану или к следующему набору параметров от-
чета.
     Могут  быть  заданы  ключи  для  Промежуточного  суммирова-
ния/Групп. Эти ключи  соответствуют  ключам  индексирования  или
сортировки  для файла базы данных. Ключи промежуточного суммиро-
вания группируют записи, имеющие одинаковое значение  указанного
ключевого  поля. Итоги промежуточного суммирования выводятся для
числовых полей при каждом изменении содержания  ключевого  поля.
Для числовых полей выводится также и окончательный итог.
     Каждая  из групп промежуточного суммирования будет распеча-
тана на отдельной странице, если выбрана опция "Eject after each
group/subtotal" /прогон страницы после каждой группы/промежуточ-
ного суммирования/.
     Вы можете задать подгруппы в пределах основных групп.
     Может быть распечатан итоговый  отчет,  в  котором  указаны
промежуточные и окончательные итоги для числовых полей, и содер-
жание  первой записи в пределах группы промежуточного суммирова-
ния для нечисловых полей.
     Каждый отчет имеет формат столбцов. Отчет  может  содержать
до  24  столбцов.  Столбец содержит переменную файла, переменную
памяти или выражение. Если в поле содержания указан  больше  чем
один  источник,  то, вставив между полями точку с запятой, можно
выводить на печать много строк. Например, <выраж1> + ';' +  <вы-
раж2> приведет к печати содержимого <выраж2> на следующей строке
отчета.
     Заголовок столбца может содержать до 4 строк. Каждая строка
может  содержать до 60 символов. Заголовки числовых полей вырав-
ниваются по правому краю. Заголовки нечисловых полей  выравнива-
ются по левому краю.
     Ширина  поля  по  умолчанию равна ширине выражения поля или
заголовка. Эта ширина может быть увеличена или  уменьшена.  Если
ширина  поля меньше ширины выражения поля или заголовка, то пос-
ледние будут при выводе перенесены на следующую строку.
     Количество дробных десятичных позиций  соответствует  коли-
честву  десятичных  знаков  для поля/выражения. Если вы зададите
меньшее количество десятичных знаков, число будет округлено.
     Нажав Ctrl-Home вы можете вывести на экран меню  переходов.
Это меню предлагает вам следующие возможности:

   * Title - Перейти к экрану заголовка и форматирование
             страниц.

   * Grouping - Перейти к экрану промежуточных итогов/групп.

   * First - Перейти к первому экрану поля отчета.

   * Middle - Перейти к указанному экрану поля отчета.

   * Last - Перейти к поледнему экрану поля отчета.

   * Append - Ввести поля в отчет.

   * Save - Выйти с сохранением изменений.

   * Quit - Выйти без сохранения изменений.

     Переместите курсор к необходимой вам строке при помощи кла-
виш  со стрелками. После установки курсора нажмите клаишу ВВОД и
выбранная вами строка будет выполнена.
     Когда вы не находитесь в описанном выше меню, правая и  ле-
вая  стрелки перемещают курсор на одну позицию влево или вправо.
Стрелки вверх и вниз перемещают курсор на одну строку вверх  или
вниз.
   PgUp и PgDn перемещают на один экран вперед или нажад.
   Ctrl-U удаляет поле.
   Ctrl-N вставляет поле.
   Esc осуществляет выход без сохранения изменений.
   Ctrl-End осуществляет выход с сохранением изменений.

   
   Смотри также: MODIFY REPORT, REPORT.
                
     
4.29 CREATE VIEW
---------------------------------------------------------------
     
     Формат:   CRATE VIEW <файл_для_просмотра>
               FROM ENVIROMENT [ALL]
     
     Этот тип CREATE создает новый FoxBASE+ файл для  просмотра,
содержащий  сведения  о  среде FoxBASE+. В файле просмотра могут
содержаться следующие сведения:
     
     * Все файлы базы данных, индексные, альтернативные  и  фор-
матные,  открытые  в настоящий момент во всех десяти рабочих об-
ластях.
     * Все поля, содержащиеся в списке SET FIELD.
     * Все установленные связи между открытыми файлами базы дан-
ных.
     * Все действующие фильтры для открытых баз данных.
     * Все переключатели ON/OFF.
     * Текущие установки функциональных клавиш.
     * Установки ON ESCAPE  и ON KEY.
     * Установки DEFAULT  и PATH.
     * Установка процедурного файла.
     
     Файлы просмотра оказываются полезными как в самих  програм-
мах, так и при отладке. Выполнив только одну команду SET VIEW TO
<файл_просмотра>,  можно задать всю среду, нужную для выполнения
программы. Это экономит время, уходящее на ввод указаний с  кла-
виатуры. В процессе отладки установки среды могут быть созранены
в файле просмотра, потом выполнена отладка, а затем восстановле-
на среда для продолжения выполнения программы.
     
     Смотри также: SET VIEW TO
                              
     
4.30 DELETE
---------------------------------------------------------------

   Удалить записи из активной базы данных

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

     Этот формат команды DELETE позволяет пометить записи в  ак-
тивной в текущий момент базе данных для удаления. Если в составе
команды имеется оператор WHILE <выраж>, удаление производится до
тех  пор,  пока выражение <выраж> истинно. Если оператор [диапа-
зон] отсутствует, диапазон по  умолчанию  ограничивается  только
текущей  записью.  Если отсутствует оператор FOR <выраж>, то все
записи в пределах диапазона [диапазон] помечаются для  удаления.
Помеченные  для удаления записи не удаляются до тех пор, пока не
будет выполнена команда PACK. Пометка записей для удаления может
быть отменена при помощи команды RECALL.

   Примеры:

   *.DELETE FOR .NOT. available
   15 records deleted
   *.RECALL FOR .NOT. available
   15 records recalled
   *.PACK
   25 records copied
   *.RECALL
   0 records recalled

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

4.31 DELETE FILE
---------------------------------------------------------------

   Удалить файл базы данных

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

     Этот формат команды DELETE используется для удаления  файла
<файл>.
     Удаляемый файл не может в момент ввода команды DELETE нахо-
диться в области USE.
     Файлу <файл> должен предшествовать полный маршрут:
     
     *  В указании имени файла <файл> должно присутствовать рас-
        ширение.

     * Если файл <файл> находится не на  принятом  по  умолчанию
       дисководе,  в  имя  файла  должен входить также указатель
       дисковода.

   Пример:

   *. DELETE FILE Video2.DBF
   File has been deleted.
   *.

   Смотри также: ERASE, PACK, RECALL, DELETED(), SET DELETED.


 4.32 DIMENSION
---------------------------------------------------------------

   Отвести массив для переменных памяти

   Формат: DIMENSION <перем_пам>
           ( [, ]
           [, <перем_пам> (]),...]
   
     При помощи оператора DIMENSION могут быть  заданы  одно-  и
двумерные  массивы переменных памяти. Размер этих массивов огра-
ничен максимально разрешенным количеством переменных памяти. Ко-
личество использованных переменных  при  этом  равно  количеству
имеющихся  переменных  памяти плюс 1. Таким образом, для массива
размерностью 2 на 3, 1 переменная памяти необходима для описате-
ля массива, и еще 6 переменных являются элементами массива.
     Индексы массива переменных памяти начинаются с 1.
     Элементы массива переменных памяти могут  содержать  данные
любого типа. Тип данных, хранящихся в определенном элементе мас-
сива,  определяется последней командой STORE, относящейся к этой
переменной. По умолчанию элементы массива считаются  логическими
переменными, содержащими значение .F. (ложно).
     Если массив сформирован двумерным, к нему можно также обра-
щаться с указанием одного индекса.

   Пример:
   
   *.STORE "Hello" TO x(1)
   *.? x(2,2)
   HELLO
   *.? x(5)
   HELLO

     Обратите  внимание, что элементы массива сохраняются в сле-
дующем порядке: x(1,1), x(1,2) x(1,3), x(2,1),  x(2,2),  x(2,3).
x(2,2) является пятым элементом и может быть вызван, как x(5).
     Эффективный  метод  перемещения данных между массивом пере-
менных памяти и полями баз данных предоставляют команды  SCATTER
и GATHER.

   Пример:

   *.DIMENSION x(2,3)
   *.STORE "Goodbye" to x(1,2)
   *.STORE 99 TO x(6)
   *.STORE .T. TO x(6)
   
   *.DISPLAY MEMORY
   X         Pub      A
    ( 1, 1)           L      .T.
    ( 1, 2)           C      "Goodbye"
    ( 1, 3)           L      .F.
    ( 2, 1)           L      .F.
    ( 2, 2)           C      "Hello"
    ( 2, 3)           N               99   (    99.00000000)
      7 variables defined,         28 bytes used
    249 variables available,    5972 bytes available

   Смотри также: GATHER, PUBLIC, SCATTER, STORE

                                                      
4.33 DIR  или DIRECTORY
---------------------------------------------------------------
     
   Вывести состав каталога на диске

   Формат: DIR/DIRECTORY [<дискловод>]
           [<маршрут>]
           [<скел>]
           [TO PRINT]

     Команда DIR выводит файлы базы данных, количество записей в
каждом файле, дату последней корректировки файла и размер каждо-
го  файла в байтах. (Базы данных в формате FoxBASE+/dBASE II по-
мечаются, как таковые). Кроме того выводятся количество выведен-
ных файлов и количество свободных байтов на диске. Выводится ин-
формация о файлах на умалчиваемом  дисководе,  если  не  указано
иначе при помощи аргументов [дисковод:] и/или [маршрут].
     Если вы указываете файл [скел], могут быть выведены и файлы
другого типа, а не только .DBF.
     Выведенные файлы могут быть направлены на принтер при помо-
щи параметра TO PRINT.

   Примеры:

DIR         && вывести все файлы баз данных в текущем каталоге
DIR *.NDX   && Вывести все индексные файлы в текущем каталоге
DIR *.PRG   && Вывести все программные файлы в текущем каталоге
DIR v*.DBF  && Вывести все файлы баз данных в текущем каталоге,
            && которые начинаются с буквы v.


4.34 DISPLAY
---------------------------------------------------------------
     
   Вывести записи или выражения из базы данных

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

     Этот  формат команды DISPLAY используется для вывода значе-
ний данных во всех или некоторых полях в записях используемой  в
текущий  момент базы данных. Он может быть также использован для
вывода результатов анализа выражений,  которые  могут  содержать
литеры, переменные памяти, поля базы данных и поля примечаний.
     Для  каждой записи в пределах диапазона <диапазон> оценива-
ются и выводятся на экран выражения, перечисленные в списке <вы-
раж_список>. При этом следует обратить внимание на следующее:
     По умолчанию принят <диапазон> ALL (все).
     Если задан оператор FOR, выводятся только  те  записи,  для
которых  выражение  <логич_выраж>  истинно.  Если задан оператор
WHILE, вывод записей производится до  тех  пор,  пока  выражение
<логич_выраж>  остается  истинным.  Если конструкции FOR и WHILE
отсутствуют, команда DISPLAY относится ко всем записям в указан-
ном диапазоне.
   Поля мемо не будут выводиться, если они не  указаны  в  <спи-
сок_выраж>.
     Если  не указан параметр OFF, перед каждой выведенной стро-
кой выводится номер записи.
     Оператор [TO PRINT] может быть использован для  вывода  ин-
формации на принтер.

   Примеры:
     
     USE Video
     DISPLAY NEXT 5 Title, Rating
Record# TITLE RATING
     1 AMADEUS PG
     2 NORMA RAE PG
     3 KRAMER VS. KRAMER PG
     4 PLACES IN THE HEART PG
     5 THE WAY WE WERE PG
     
     Смотри также: SET HEADING, SET MEMOWIDTH
                                             
     
4.35 DISPLAY FILES
---------------------------------------------------------------
     
   Вывести сведения о файлах на диске

   Формат: DISPLAY FILES
           [ON <дисковод/кат>]
           [LIKE <скел>]
           [TO PRINT]

     Этот  формат команды DISPLAY используется для вывода списка
файлов, сохраненных на диске. Вы можете просмотреть все файлы на
указанном диске или каталоге,  или  все  файлы,  соответствующие
приведенному в <скел> шаблону.
При вводе  ISPLAY FILES без
     аргументов будут выведены файлы базы данных, находящиеся на
принятом  по умолчанию дисководе или каталоге. Выводятся следую-
щие данные:

   * имя базы данных
   
   * количество записей
   
   * время и дата последней корректировки.

     Оператор [TO PRINT] может быть использован для  вывода  ин-
формации на принтер.

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


4.36 DISPLAY HISTORY
---------------------------------------------------------------

   Вывести команды из буфера HISTORY

   Формат: DISPLAY HISTORY [LAST <числ_выраж>][TO PRINT]

     Этот  формат  команды  DISPLAY позволяет вывести список ко-
манд, хранящихся в буфере команд, которые были выполнены и зане-
сены в этот буфер. Вывод происходит, начиная от самого старого к
самому последнему.
     Принятое по умолчанию число выводимых  команд  определяется
значением HISTORY. Если указано выражение LAST, то вместо значе-
ния HISTORY используется <числ_выраж>.
     Оператор  [TO  PRINT] может быть использован для вывода ин-
формации на принтер.

   Пример:

   *.DISPLAY HISTORY
   USE Video
   DISPLAY NEXT 5 Title,Rating
   STORE "Steven Cook" TO Customer
   STORE 4764.48 TO Sales
   STORE .T. TO Valid
   DISPLAY HISTORY

   Смотри также: LIST HISTORY, SET DOHISTORY, SET HISTORY


4.37 DISPLAY MEMORY
---------------------------------------------------------------

   Вывести содержимое переменных памяти

   Формат: DISPLAY MEMORY [TO PRINT]

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

   * 256 переменных памяти

   * 6000 байт под символическими переменными памяти.

     Существует возможность изменения этих параметров при помощи
файла CONFIG.FX/DB. Более подробно этот вопрос рассматривается в
главе 6, "Тонкая настройка вашей системы FoxBASE+".
     
     Оператор  [TO  PRINT] может быть использован для вывода ин-
формации на принтер.

   Пример:

   *.STORE "Steven Cook" TO Customer
   *.STORE 4764.48 TO Sales
   *.STORE .T. TO Valid
   *.DISPLAY MEMORY
   CUSTOMER    Pub   C   "Steven Cook"
   SALES    Pub   N   4764.48   (      4764.48000000)
   VALID    Pub   L    .T.
      3 variables defined,         19 bytes used
      253 variables available,   5981 bytes available


4.38  DISPLAY STATUS
---------------------------------------------------------------

   Вывести статус конфигурации FoxBASE+

   Формат: DISPLAY STATUS [TO PRINT]

     Этот формат команды DISPLAY используется для вывода следую-
щей информации:

   * Файлы базы данных, активные в текущий момент

   * Индексные файлы, активные в текущий момент

   * Ключи индексных файлов

   * Псевдонимы

   * Связи баз данных

   * Файлы мемо, активные в текущий момент

   * Маршрут поиска файлов
   
   * Принятый по умолчанию дисковод

   * Назначения принтеров
     
   * Установки границ

   * Текущая рабочая область

   * Положение параметров команд SET

   * Назначения функциональных клавиш

   * Модули, загруженные командой LOAD

   * Используемый процедурный файл

     Оператор [TO PRINT] может быть использован для  вывода  ин-
формации на принтер.

   Смотри также: LIST STATUS


 4.39 DISPLAY STRUCTURE
---------------------------------------------------------------

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

   Формат: DISPLAY STRUCTURE [TO PRINT]

     Этот  формат команды DISPLAY выводит структуру базы данных,
используемой в текущий момент. Это может быть полезно для  того,
чтобы  вспомнить имена полей, из размеры, количество дробных де-
сятичных знаков и т.д. при работе с базой данных в интерактивном
режиме. Кроме того выводится текущее количество записей в  файле
и дата его последней корректировки.
     Оператор  [TO  PRINT] может быть использован для вывода ин-
формации на принтер.
     
     Смотри также: LIST STRUCTURE


4.40 DO
---------------------------------------------------------------

   Выполнить процедурный командный файл

   Формат: DO <файл> [WITH <список_парам>]

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

   * будет обнаружена команда RETURN

   *  будет обнаружена команда CANCEL

   *  будет обнаружена команда QUIT

   *  достигнут конец командного файла.

     Когда выполнение файла <файл> завершено, управление переда-
ется  вызвавшей его программе, к точечной подсказке или операци-
онной системе.
     Оператор WITH <список_парам> позволяет передавать параметры
процедурному файлу. Параметром может  быть  любое  допустимое  в
FoxBASE+ выражение. В том случае, если вы хотите указать поле, а
не  переменную  памяти  с тем же имененм, может быть использован
псевдоним.

   Пример:

   *.DO Movie_in
   
     В этом примере от точечной подсказки выполняется  программа
Movie_in.

   Смотри также: PRIVATE, PROCEDURE, PUBLIC, SET PROCEDURE


4.41 DO CASE
---------------------------------------------------------------

   Выполнять выражения в зависимости от нескольких условий

   Формат: DO CASE
           CASE <логич_выраж1>
            <операторы>
            CASE <логич_выраж2>
            <операторы>
            *...
           CASE <логич_выражN>
            <операторы>
            [OTHERWISE
            <операторы>
           ENDCASE
                       
     Когда  выполняется  команда  DO  CASE, проверяются успешные
операторы CASE и оцениваются их <логич_выраж>.
     Если <логич_выраж> оказывается ложным, то пропускаются  все
операторы вплоть до следующего оператора CASE.
     Когда  обнаруживается  первый  логически истинный оператор,
выполняются  соответстующие  выражения  <операторы>.  Выполнение
операторов производится до тех пор, пока не будет обнаружен сле-
дующий  оператор CASE. Когда это происходит, FoxBASE+ возобновит
выполнение с первой команды, следующей за ENDCASE.
     В цикле DO CASE всегда выполняется один и только один (пер-
вый из обнаруженных) оператор CASE, независимо от того,  сколько
операторов CASE фактически являются истинными.
     Если  истинный оператор CASE не обнаружен, тогда дальнейшее
выполнение команды зависит от наличия в составе команды операто-
ра OTHERWISE:

   * Если оператор OTHERWISE  имеется в составе команды, то
     выполняются связанные с ним выражения, до тех пор, пока не
     будет обнаружен оператор ENDCASE.

   * Если оператор OTHERWISE отсутствует, FoxBASE+ продолжает
     работу с первой команды, следующей за оператором ENDCASE.
     Обратите внимание, что в этом случае ни одно выражение,
     входящее в структуру DO CASE выполнено не будет.
            
   Пример программы:

   DO CASE
      CASE Action = "Rental"
            DO Rentfee
      CASE Action = "Purchase"
            DO Price
      OTHERWISE
            DO Mainmenu
   ENDCASE

     Каждое выражение CASE в составе конструкции DO CASE  анали-
зируется в поисках первого выражения, которое является логически
истинным. В данном примере анализируется переменная Action. Если
Action  равняется  "Rental", выполняется программа Rentfee. Если
Action равняется "Purchase", выполняется Price. Если ни одно  из
выражений CASE не истинно, выполняется Mainmenu.

   Смотри также: DO WHILE, IF


4.42 DO WHILE
---------------------------------------------------------------

   Выполнять цикл до тех пор, пока условие истинно.

   Формат: DO WHILE <логич_выраж>
           <операторы>
             [LOOP]
           <операторы>]
             [EXIT]
           ENDDO

     В этом типе команды структурного программирования  анализи-
руется  выражение DO WHILE <логич_выраж>. До тех пор, пока выра-
жение <логич_выраж> остается  истинным,  выполняются  операторы,
находящиеся между DO WHILE и ENDDO.
     * Каждому оператору DO WHILE должен соотвтетствовать опера-
       тор  ENDDO.
     * Коментарии, следующие за ENDDO игнорируются.
     EXIT  является  необязательным оператором, который передает
управление из цикла DO WHILE...ENDDO первой  команде,  следующей
за ENDDO. Команда EXIT должна быть размещена в любом месте внут-
ри цикла DO WHILE...ENDDO.
     LOOP является необязательным оператором, который может быть
размещен  в  любом месте структуры DO WHILE. При обанружении ко-
манды LOOP вызывает переход выполнения программы обратно  к  ко-
мандной строке DO WHILE <выраж>.

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

   USE Video
   DO WHILE .NOT. EOF()
      IF .NOT. Available
         SKIP
         LOOP
      ENDIF
      IF Cost_rent > 2.99
         DO Saleitem
      ELSE
         DO Nosale
      ENDIF
      SKIP
   ENDDO

     В  этом  примере используется база данных Video. Команда DO
WHILE начинает анализ признака конца файла EOF().  До  тех  пор,
пока  выражение  в составе DO WHILE остается истинным, структура
DO WHILE будет выполняться.
     Если Available ложно, указатель записи перемещается к  сле-
дующей  записи  в в файле и выолнение программы в соответствии с
оператором LOOP переходит к командной строке DO WHILE.
     Если же Available истинно, то остальная чать блока  команды
IF...ENDIF  игнорируется и программа переходит к выполнению пер-
вого выражения, следующего за ENDIF.
     В данном случае анализируется текущая запись с целью  опре-
деления соотношения между содержанием поля Cost_rent и величиной
2.99.  Если  Cost_rent  больше,  выполняется процедура Saleitem,
указатель записи в соответствии с командой SKIP переходит к сле-
дующей записи и выполнение программы в соответствии с оператором
LOOP переходит к команде DO WHILE .NOT. EOF().
     Если же Cost_rent не больше 2.99, указатель записи  переме-
щается  к следующей записи и программа в соответствии с операто-
ром LOOP переходи к команде DO WHILE.
     Когда функция EOF() станет истинной, (достигнут конец  фай-
ла),  выражение  DO  WHILE  будет проанализировано, как ложное и
программа продолжит свое выполнение с первой инструкции, следую-
щей за оператором ENDDO.


4.43 EDIT
---------------------------------------------------------------

   Редактировать записи базы данных в полноэкранном режиме

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

     Команда EDIT является полноэкранной командой, которая  поз-
воляет  редактировать содержимое отедльных записей в составе ак-
тивной базы данных.
     Диапазоном по умолчанию является ALL (все), если отсутству-
ют операторы диапазон, FOR или WHILE.
     Поскольку эта команд является полноэкранной, с ней  исполь-
зуются стандартные назначения клавишей управления курсором. Нап-
ример,  PgUp перемещает вас к предыдущей записи, а PgDn - к пол-
седующей записи в файле. Назначения дополнительных клавиш, кото-
рые могут быть использованы в процессе редактирования, выводятся
на экран в справочных целях при редактировании записи.

   Пример:

   *.USE Video
   *.EDIT NEXT 5 FIELDS Title,Descript, Rating,Type

     В этом примере в целях редактирования выводится база данных
Video. Диапазон NEXT 5 позволяет выполнить редактирование только
5 следующих записей, а список полей FIELDS список позволяет  вы-
полнять редактирование только четырех перечисленных полей.

   Смотри также: CHANGE, MODIFY COMMAND, SET FIELDS, SET FORMAT


4.44 EJECT
---------------------------------------------------------------

   Перевести принтер к началу следующей страницы

   Формат: EJECT

   Команда EJECT посылает на принтер команду прогона формата.
     Команда  EJECT  выполняет  сброс  значений функций PCOL() и
PROW().

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

   *Распечатка фразы "THIS IS PAGE" совместно с номером страницы
   *на верхней строке трех страниц при печати на непрерывной
   *бумажной ленте
   SET DEVICE TO PRINT
   STORE 1 TO Mpgnmbr
   DO WHILE Mpgnmbr <= 3
         @ 5,34 SAY "THIS IS PAGE" = STR(Mpgnmbr,3)
         EJECT
         STORE Mpgnmbr + 1 TO Mpgnmbr
   ENDDO
   SET DEVICE TO SCREEN
   RETURN

   Смотри также: SET DEVICE, SET PRINT, PCOL(), PROW()

     
4.45 ERASE
---------------------------------------------------------------

   Стереть файл с диска

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

     Команда ERASE удаляет файл с диска.
     Файл <файл> должен иметь  полную  спецификацию  и  указание
маршрута:
     * Расширение имени файла должно быть указано в составе имени
файла <файл>.
     * Если файл <файл> расположен не на дисководе по умолчанию,
должно быть также указано имя дисковода.
     Для  удаления  файла  с диска может быть также использована
команда DELETE FILE.

   Примеры:

   *.ERASE Video2.DBF
   File has been deleted
   *.ERASE Title2.NDX
   File has been deleted
   *.ERASE Tape_lib.BAK
   File has been deleted
   *.ERASE C:\FOX\DATA\Cust.DBF
   File has been deleted

   Смотри также: DELETE FILE


4.46 EXIT
---------------------------------------------------------------

   Выход из цикла DO WHILE

   Формат: EXIT

     Команда  EXIT передает управление из цикла DO WHILE...ENDDO
команде, следующей за ENDDO.
   
   Пример программы:

   USE Video
   DO WHILE .NOT. EOF()
         DISPLAY Title
         SKIP
         IF Title = "FRIDAY THE 13TH"
            EXIT
         ENDIF
   ENDDO
   @ SAY "Control is transfered to this line when FRIDAY THE ;
   13TH is encountered."

     В приведенном выше примере будет выводиться название каждо-
го фильма в составе базы данных Video до тех пор, пока не  будет
обнаружено  название  :FRIDAY  THE  13TH". После того, как будет
найдено это название, управление будет передано команде, следую-
щей за командой ENDDO.

   Смотри также:DO WHILE


4.47 FIND
---------------------------------------------------------------

   Найти запись в базе данных

   Формат: FIND <симв_выраж>/
                                                               
     Для использования команды FIND текущая база  данных  должна
быть индексированной, а к индексам должен быть доступ. Она пере-
мещает указатель записи на первую запись базы данных,  индексный
ключ которой совпадает со строкой символов.
     Соответствие  должно  быть полным, если не было установлено
SET EXACT OFF.
     Если в начале индексного файла имеются пробелы, символичес-
кая строка должна быть заключена в кавычки.
     Если  вы  хотите  провести поиск содержимого для переменных
памяти, перед переменной памяти необходимо указать функцию макро
(&).

   Примеры:

   *.USE Video INDEX Title
   *.FIND MURDER BY DEATH
   *.? RECNO()
            15
   *.FIND Murder by Death
   No find.
   *.? RECNO()
            36
   *.STORE "MURDER BY DEATH" TO Xtitle
   *.FIND &Xtitle
   *.? RECNO()
            15
   *.DISPLAY Title
   Record#       TITLE
         15    MURDER BY DEATH

     В этом примере активной является база данных Video с индек-
сным файлом. Поиск командой FIND производится по колючевому полю
Title, содержащему "MURDER BY DEATH". При нахождении  соответст-
вующей записи не выдается никакого сообщения.
     Вторая  команда FIND выодит сообщение No find (не найдено),
поскольку заглавие "Murder by Death" введено не заглавными  бук-
вами,  как  это  имеет  место  в  поле Title. В ответ на функцию
RECNO() выводится значение, на  единицу  превышающее  количество
записей в базе данных.
     В  третьем случае для поиска соответствующей записи исполь-
зуется макро-функция с переменной памяти.

   Смотри также: SEEK, LOCATE, FOUND(), INDEX, RECNO(), EOF(),
                 SET EXACT.
     
     
4.48 FLUSH
---------------------------------------------------------------

   Перенести буфера на диск

   Формат: FLUSH

     Команда FLUSH переносит все активные  буфера  на  диск,  не
требуя при этом от пользователя закрытия всех открытых файлов.

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


4.49 GATHER
---------------------------------------------------------------

   Собрать элементы массива в поля базы данных

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

     Команда  GATHER перемещает данные из массива переменных па-
мяти в текущую запись базы данных в выбранной базе данных.  Эле-
менты  массива перемещаются начиная с элемента 1 в соответствую-
щие поля записи.
     Если количество элементов массива  меньше,  чем  количество
полей в базе данных, поля модифицируются до исчерпания всех эле-
ментов  массива.  Если  количество элементов массива превосходит
количество полей в базе данных, остальные элементы массива игно-
рируются.
     Если тип данных элементиов массива и полей записи не совпа-
дают,  выводится  сообщение  об  ошибке  Error#9,   "Data   type
mismatch". /Несоответствие типов данных/.
     В процессе выполнения GATHER игнорируются поля мемо.

   Смотри также: DIMENSION, SCATTER


4.50 GO
---------------------------------------------------------------

   Установить указатель записи

   Формат:  GO|GOTO <выраж>|TOP|BOTTOM

     Команда GO/GOTO устанавливает указатель записи на указанную
запись в активной базе данных.


   GO <выраж>

     В  этом  формате  команда GO устанавливает указатель записи
активной базы данных на физический номер записи,  полученный  из
выражения <выраж>.


   GO TOP|BOTTOM

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

   *.USE Video
   *.GO 22
   *.? RECNO()
         22
   *.GO TOP
   *.? RECNO()
         1
   *.GO BOTTOM
   *.? RECNO()
         35


4.51 HELP
---------------------------------------------------------------

     Вывести вспомогательную информацию по командам и фукнциям

     Формат: HELP [<тема>]

     Полноэкранная  команда  HELP выводит информацию о различных
функциях и командах FoxBASE+.
     Если  <тема> указана, то она немедленно появляется на экра-
не. Если <тема> опущена, команда HELP выводит на экран  меню,  в
котором  с помощю светящегося маркера можно выбрать нужную тему.
Тему можно указать с помощью клавиш, управляющих  курсором,  или
указав  такое количество букв из ее названия, которое необходимо
для однозначной идентификации этой  темы.  Выбрав  нужную  тему,
нажмите клавишу ВВОД.
     Если  в данной теме имеются дополнительные подтемы, то HELP
то HELP выводит их список внизу экрана. Подтемы могут иметь свои
подтемы. Для возврата к подтеме более высокого  уровня  пользуй-
тесь клавишей PgUp. Для выхода из команды HELP нажимайте клавишу
PgUp  пока не появится подсказка в виде точки. Для выхода из ко-
манды HELP не очищая экрана, нажмите клавишу ESC.
                                                 

4.52 IF...ELSE...ENDIF
---------------------------------------------------------------

   Выполнять команды в зависимости от условия

   Формат: IF <выраж>
           <операторы>
           [ELSE
           <операторы>]
           ENDIF

   В команде структурного программирования этого типа выражение
IF <выраж> анализируется с целью определения, истинно оно или
ложно. Если оно истинно, все выражения, следующие за IF <выраж> и
до ELSE или ENDIF, (в зависимости от того, что встретится
ранее), будут выполнены. Если выражение IF <выраж> ложно, и был
использован дополнительный оператор ELSE, тогда будут выполнены
все выражения, начиная с ELSE и до ENDIF. Если выражение IF
<выраж> ложно, и оператор ELSE отсутствует, все выражения между
IF <выраж> и ENDIF игнорируются. В этом случае программа
продолжит свою работу выполнением первой инструкции, стоящей за
ENDIF.
   Выражения IF <выраж> могут быть вложены одно в другое, если
для каждого IF имеется соответствующее ENDIF.

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

   IF Action = "Rental"
         IF Payment = "Cash"
            STORE 1 TO Terms
         ELSE charge
            STORE 2 TO Terms
         ENDIF
   ELSE purchase
         IF Payment = "Cash"
            STORE 3 TO Terms
         ELSE charge
            STORE 4 TO Terms
         ENDIF
   ENDIF

   В приведенном выше примере Action анализируется с точки
зрения его соотношения с Rental. Если они равны, программа
переходит к проверке типа Payment /выплата/ (cash /наличность/
или charge /начисление/).Если Payment равно "Cash", то 1
заносится в переменную памяти Terms. В противном случае, если
Payment равно "Charge", 2 заносится в переменную памяти Terms.
   Если Action равно Purchase, то программа переходит к проверке
типа Payment /выплата/ (cash /наличность/ или charge
/начисление/).Если Payment равно "Cash", то 3 заносится в
переменную памяти Terms. В противном случае, если Payment равно
"Charge", 4 заносится в переменную памяти Terms.

   Смотри также: DO CASE, IIF


4.53 INDEX
---------------------------------------------------------------

   Создать индексный файл

   Формат: INDEX ON <выраж> TO <файл>
           [FOR <логич_выраж>]
           [UNIQUE]

     Команда INDEX используется для формирования индексного фай-
ла для активного файла базы данных.
     <выраж> - это общее выражение, которое обычно, но не всегда
включает поля текущей базы данных. Значение <выраж> должно  быть
числовым, символьным или датой. Не разрешены значения мемо и ло-
гические.
   ______________________________________________
   ! Заданные пользователем фукнции не могут    !
   ! быть использованы в индексных выражениях.  !
   !____________________________________________!
     
     Созданным индексным файлам присваивается принятое по  умол-
чанию  расширение "IDX". Это расширение может быть заменено дру-
гим, данным явным образом, или записанным в файл CONFIG.
     При присвоении файлу имени надо  пользоваться  стандартными
правилами MS-DOS.
     Выражение  FOR <логич_выраж> может быть определено при соз-
дании индексного файла, и созданный индекс будет действовать как
фильтр в существующей базе данных. Это означает, что лучше  соз-
давать фильтр лучше с помощью команды SET FILTER TO. Объединение
изощренной  индексной техники FoxBASE с выражениями для фильтров
позволяет резко ускорять поиск по индексу в базе данных.  Факти-
чески, поиск происходит немедленно.
     Параметр [UNIQUE] указывает, что при наличии нескольких за-
писей с одинаковым значением ключевого поля <выраж>, только пер-
вое  из них будет включено в индексный файл. Все последующие за-
писи в аналогичным значением ключевого  поля  <выраж>  не  будут
включены в индексный файл.
     Параметр UNIQUE команды INDEX по своему действию аналогичен
выполнению  команды  SET  UNIQUE  ON  перед  командами INDEX или
REINDEX.

   Примеры:

   USE Video
   INDEX ON Title TO Ndxfile FOR rating="PG"

     Первая из приведенных команд делает активным файл базы дан-
ных Video.
Вторая команда индексирует базу данных (в возрастающем
порядке) по содержимому поля Title и создает индексный файл с
именем Ndxfile.idx, имеющий входы только для тех записей,  кото-
рые имеют "PG".
     Ту  же  самую  базу можно проиндексировать отрицанием числа
записей.
     Пример:
     
   USE Video
   INDEX ON - RECHNO() TO Reverse
     
     Поcледняя команда выполняет индексирование ту же базу  дан-
ных по отрицательному номеру записи. При работе с базой данных с
использованием  этого  индекса записи будут обрабатываться в об-
ратном порядке, самой старшей по номеру станет запись с  номером
1.
     Если  был  включен TALK, FoxBASE+ сообщает, сколько записей
проиндексировано.
     Для продолжения работы с базой данных, однако без индексно-
го файла, в физическом порядке, введите команду:

   *. SET ORDER TO 0

     Теперь база данных упорядочена по номерам записей,  индекс-
ный  файл  будет  корректироваться, если будет изменено ключевое
поле для какой-либо записи.

   Смотри также: CLOSE, FIND, REINDEX, SEEK, SET INDEX, SET
                 UNIQUE, SET ORDER, USE


 4.54 INPUT
---------------------------------------------------------------

   Ввести данные с экрана в переменную памяти.

   Формат: INPUT [<подсказка>] TO <перем_пам>

     Команда INPUT предосталвяет пользователю подсказку  о  том,
что необходимо вводить в переменную памяти <перем_пам>. Если пе-
ременная  памяти  <перем_пам>  ранее не была определена, команда
INPUT определит ее.
     При включении в состав команды подсказки [подсказка]  сооб-
щение "подсказка" будет выведено на экран.
     Если  "подсказка"  является  символическим  выражением, оно
должно быть ограничено одинарными кавычками, двойными  кавычками
или скобками.
     Тип выражения, введенного в ответ на эту команду, определя-
ет  тип  создаваеомй переменной памяти <перем_пам>. Если в ответ
вы введете просто цифры, будет создана числовая переменная памя-
ти.

   Примеры:

   *.INPUT TO Num_exp
   38
   *.INPUT TO Movie
   "BLAZING SADDLES"
   *.STORE "Enter a movie here: " TO Prompt
   *.INPUT Prompt TO Movie2
   Enter a monie here: "STAR WARS"
   *.INPUT TO Date
   DATE()
   *.DISPLAY MEMORY
   NUM_EXP      Pub       N         38 (      38.00000000)
   MOVIE        Pub       C   "BLAZING SADDLES"
   PROMPT       Pub       C   "ENTER A MOVIE HERE:"
   MOVIE2       Pub       C   "STAR WARS"
   DATE         Pub       D   06/27/86
      5 variables defined         68 bytes used
    251 variables available    5932 bytes available

   Смотри также: ACCEPT, @ SAY/GET, READ,WAIT


4.55 INSERT
---------------------------------------------------------------

   Вставить запись в базу данных

   Формат: INSERT
           [BEFORE]
           [BLANK]

     Простая команда INSERT вставляет в базу данных запись,  но-
мер  которой  на единицу больше, чем номер текущей записи. Затем
INSERT выводит эту запись для полноэкранного редактирования.
     Команда INSERT BEFORE вставляет в текущую базу  данных  за-
пись, номер которой на единицу меньше, чем номер текущей записи.
Затем эта запись выводится для полноэкранного редактирования.
     Команда INSERT [BEFORE] BLANK вставляет в текущую базу дан-
ных пустую запись, номер которой на единицу больше или меньше (в
зваисимости  от того, имеется ли оператор BEFORE) номера текущей
записи. Запись не выводится для полноэкранного редактирования.
     Новая запись выводится для полноэкранного ввода или коррек-
тировки. Данные могут быть введены только в эту запись.
     Ввод данных в поле мемо производится путем установки курсо-
ра на слове Memo и нажатием Ctrl-Pgdn. После того, как ввод дан-
ных в поле мемо будет выполнен, нажмите Ctrl-End для  сохранения
данных  или  Esc  для выхода без сохранения внесенных изменений.
Для вывода меню управляющих клавиш, в котором приведена дополни-
тельная информация об управляющих клавишах, нажмите F1 Help.
     Если установлено SET CARRY ON, и параметр BLANK отсутствует
в  составе команды, данные предыдущей записи автоматически пере-
носятся во вставленную запись.
     Если файл индексирован, действие команды INSERT будет  ана-
логично действию команды APPEND.

 __________________________________________________
 ! Не рекомендуется использовать команду INSERT с !
 ! большими   неиндексированными  базами  данных, !
 ! поскольку введение записи в начале базы данных !
 ! приводит к перезаписи почти каждой записи. Это !
 ! может занять много времени: рекомендуем вместо !
 ! этого использовать команду APPEND.             !
 !________________________________________________!

   Смотри также: APPEND, CHANGE, EDIT, SET CARRY, SET FORMAT


4.56 JOIN
---------------------------------------------------------------

   Объединить две базы данных

   Формат: JOIN WITH <псевдоним>
           TO <файл>
           FOR <логич_выраж>
           [FIELDS <список>]

     Команда JOIN создает новую базу данных <файл> из двух  дру-
гих  баз  данных.  Одна из баз данных должна быть активной базой
данных, а вторая база данных указывается посредством  псевдонима
<псевдоним>. Команда JOIN устанавливает указатель записи на пер-
вую  запись  активной  базы данных и ведет поиск среди записей в
базе данных <псевдоним>. Команда JOIN анализирует выражение  FOR
<выраж>  для  каждой записи. Если выражение FOR <выраж> истинно,
новая запись заносится в новый файл <файл>, затем  команда  JOIN
переходит  ко  второй  записи в активной базе данных и повторяет
процедуру.
     Если оператор FIELDS <список> отсутствует, все поля  актив-
ной базы данных, а также все поля базы данных <псевдоним>, кото-
рые могут быть включены в файл в пределах допустимого в FoxBASE+
количества  полей, будут занесены в новый файл <файл>. Если опе-
ратор FIELDS <список> задан, только поля, перечисленные в списке
<список> будут включены в новый файл <файл>.

   ___________________________________________________
   ! Предупреждения:                                 !
   ! * Время  выполнения  этой  команды  может  быть !
   ! очень  значительным,  в зависимости от размеров !
   ! двух баз данных, которые объединяются  командой !
   ! JOIN.                                           !
   ! *  Существует возможность превышения объема па- !
   ! мяти диска при выполнении команды JOIN  даже  в !
   ! том случае, если размеры объединяемых файлов не !
   ! очень велики.                                   !
   !_________________________________________________!

   Пример:

   *.SELECT 1
   *.USE Employee
   *.DISPLAY STRUCTURE
   Structure for database: C:\FOX\EMPLOYEE.DBF
   Number of data records:      100
   Date of last update   : 06/27/86
   Field      Field Name      Type      Width      Dec
      1      NAME            Character   25
      2      EMP_NUM         Character    6
      3      ADDRESS         Character   30
      4      CITY            Character   20
      5      STATE           Character    2
      6      ZIP             Character    5
**Total**                                89
   *.SELECT 2
   *.USE Salary
   *.DISPLAY STRUCTURE
   Structure for database: C:\FOX\SALARY.DBF
   Number of data records:      100
   Date of last update   : 06/27/86
   Field      Field Name      Type      Width      Dec
      1     EMP_NUM           Character    6
      2      CUR_SAL          Numeric      8      2
      3      STRT_DATE        Date         8
**Total**                                 23
   *.JOIN WITH A TO Emp_sal FOR Emp_num = a ->Emp_num
      100 records joined
   *.USE Emp_sal
   *.DISPLAY STRUCTURE
   Structure for database: C:\FOX\EMP_SAL.DBF
   Number of data records:      100
   Date of last update   : 06/27/86
   Field      Field Name      Type      Width      Dec
      1      NAME             Character   25
      2      EMP_NUM          Character    6
      3      ADDRESS          Character   30
      4      CITY             Character   20
      5      STATE            Character    2
      6      ZIP              Character    5
      7      CUR_SAL          Numeric      8      2
      8      STRT_DATE        Date         8
**Total**                                105

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


4.57 KEYBOARD
---------------------------------------------------------------

   Занесение данных в буфер клавиатуры

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


 4.58 LABEL
---------------------------------------------------------------

   Создает ярлыки из файла базы данных и файла ярлыков

   Формат: LABEL FORM <файл>
           [<диапазон>]
           [SAMPLE]
           [WHILE <логич_выраж>]
           [FOR <логич_выраж>]
           [TO PRINT]|[TO FILE <файл>]

     Команда LABEL выводит и печатает ярлыки  из  файла  ярлыков
<файл>.  Файлы ярлыков <файл> создаются при помощи команд MODIFY
LABEL или CREATE LABEL.
     Расширением  файла ярлыков по умолчанию является .LBL. Если
файл расположен не на принятом по умолчанию дисководе, необходи-
мо также указать имя дисковода.  Умалчиваемое  расширение  имени
файла TO <файл> .TXT.
     Ярлыки  будут  распечатаны для всех записей в файле <файл>,
если не указан диапазон [диапазон], WHILE <выраж> или  FOR  <вы-
раж>.
     Парметр SAMPLE может быть использован для проверки структу-
ры  ярлыка. После каждого запуска команды LABEL будет выводиться
подсказка для пользователя:

   "Do you want more samples?"
   /Нужны ли вам еще образцы/

     Для повторного вывода образца ярлыка просто введите "Y".
     Если в составе команды LABEL использован оператор  TO  FILE
<файл>, ярлыки будут занесены в текстовый файл.

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


 4.59 LIST
---------------------------------------------------------------

   Смотри DISPLAY

   Форматы: LIST [<диапазон>] [FIELDS <выраж_список>]
              [FOR <логич_выраж>]
              [WHILE <логич_выраж>][OFF][TO PRINT]
            LIST FILES [ON <дисковод/кат>]
              [LIKE <скел>] [TO PRINT]
            LIST HISTORY [LAST <выраж>] [TO PRINT]
            LIST MEMORY [TO PRINT]
            LIST STATUS [TO PRINT]
            LIST STRUCTURE [TO PRINT]

     Команда  LIST является эквивалентом команды DISPLAY со сле-
дующими отличиями:

   Для команды LIST:

   * [диапазон] по умолчанию имеет значение ALL

   * Отсутствуют паузы для команд продолжения после вывода
      каждых 15 записей
    
   * Команда LIST не выведет записи, помеченные для удаления
     командой включенной командой DELETE.

   Смотра также: DISPLAY


4.60 LOAD
---------------------------------------------------------------
     
   Загрузить двоичный файл в память.

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

     Команда LOAD загружает программы на языке Ассемблера с дис-
ка в память. Единовременно в память могут быть  загружены  шест-
надцать файлов (32 000 байтов каждый).
     По  умолчанию расширением имени файла для файлов ассемблер-
ных программ принято .BIN. Когда вы вводите команду CALL в отно-
шении программы на Ассемблере, расширение имени файла  указывать
не нужно, поскольку имя файла (без расширения) и обозначает фак-
тически  загруженный  модуль.  При  этом,  если загружаемый файл
<файл> имеет то же имя, что и ранее загруженный файл, но  другое
расширение, то ранее загруженный файл будет им стерт.
     При  создании  файла  программы  на Ассемблере для FoxBASE+
следует выполнить следующие шаги:

   MASM <файл> - ассемблирует программный файл и создает объект-
         ный файл.

   LINK <файл> - скомпонует объектные файлы и создаст  выполняе-
         мый файл.

   EXE2BIN  <файл>  - создаст двоичный файл, который может рабо-
         тать в FoxBASE+.

     При создании файлов программ на Ассемблере в двоичном  фор-
мате для FoxBASE+ следует придерживаться следующих правил:

   * Первая выполняемая инструкция должна иметь нулевое смещение.

   * Программа Ассемблера не должна изменять переданных ей в
     качестве аргументов переменных памяти.

   * Объем использованной или отведенной памяти не должен
     превышать фактический размер программы, поскольку размер файла
     используется для определения необходимого объема памяти.

   * Содержимое регистров SS и CS должно быть восстановлено
     перед передачей управления FoxBASE+.

   * После того, как программа будет выполнена посредством
     команд LOAD и CALL управление должно передаваться FoxBASE+ при
     помощи дальнего возврата (far return).

   * Если программа заканчивается выходом в систему, ее
     необходимо запускать командой RUN/!.
                                                  
   __________________________________________________
   ! Внимательно прочтите следующие рекомендации по !
   ! работе с Ассемблером:                          !
   !________________________________________________!

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

     *  Если  вы используете "dBASE Tools for C" существует воз-
можность, что переменные памяти могут быть перемещены  в  памяти
системой  управления памятью FoxBASE+. В связи с этим необходимо
восстанавливать адрес, по которому  будет  сохранена  символьная
переменная,  непосредственно  перед использованием этой перемен-
ной.

     * При сохранении адреса строки  между  вызовами  необходимо
также восстанавливать адрес сохранения перед использованием сим-
вольной переменной.

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


4.61 LOCATE
---------------------------------------------------------------

   Найти запись в базе данных

   Формат: LOCATE [<диапазон>]
           [FOR <логич_выраж>]
           [WHILE <логич_выраж>]
           [команды FoxBASE+]
           [CONTINUE]

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

   *.USE Video
   *.LOCATE FOR Title = "TOOTSIE"
   Record = 22
   *.DELETE RECORD 22        && пример команды FoxBASE+
      1 record deleted
   *.CONTINUE
   End of Locate диапазон
   *.LOCATE NEXT 10 FOR Rating = "PG"
   Record = 1
   *.LIST RECORD 1 Title,Rating
   Record#   TITLE                    RATING
         1   AMADEUS                  PG

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


 4.62 MENU
---------------------------------------------------------------

     Создание открываемого меню

   Формат: MENU BAR <массив> <числ_выраж>
           MENU <числ_выраж1> <массив> <числ_выраж> [,<числ_выраж>]
           READ MENU BAR TO <перем1> <перем2> SAVE]
     
     Эта  команда состоит из нескольких команд, создающих откры-
вающиеся меню. Открывающиеся меню состоят из полосы меню (распо-
ложенной  в  верхнем  ряду экрана), содержащей заголовки меню. В
каждм меню находится массив опций.
     Для перемещения светового маркера по пунктам меню использу-
ются клавиши управления курсором. Когда курсор находится на  за-
головке  меню,  он немедленно выделяется ярким светом, а под ним
открываются расположенные в нем опции. Клавиши управления курсо-
ром также используются для перемещения светового маркера по  ко-
лонке опций меню. Прип нажатии левой или правой стрелок управле-
ния курсором открывается сосоднее меню.
     Если  в  меню  содержится больше названий, чем может помес-
титься на экране, то остальные располагаются на следующих экран-
ных страницах.
     При создании новой полосы меню первым шагом надо указать ее
размерность  (DIMENSION)  и  инициализировать соответствующий ей
массив. Это заголовки меню, такие как File,  Edit  и  Data  (см.
пример). Затем указать размерность и инициализировать массив для
каждой  опции  меню.  Затем инсталировать полосу меню, используя
команду MENU BAR, а также инсталировать каждое отдельное меню  в
полосе  меню, используя несколько команд меню - по одной на каж-
дое. И наконец, запустить новую  систему  меню,  вызвав  команду
READ MENU BAR.
     
    MENU BAR <массив> <числ_выраж>
     
     Команда  MENU BAR используется для инсталяции массива <мас-
сив> полосы меню. Опции <массив> должны быть  символьного  типа.
По умолчанию все элементы <массив> становятмя заголовками меню.
     
<массив>  -  Двухмерный  массив символьных строк. <массив(i,1) -
          это заголовок меню, который появится в полосе  меню  в
          позиции 1. Если <массив(i,2) - ненулевая строка симво-
          лов, то она используется как длинное описание команды,
          которая появится в области SET MESSAGE TO.
<числ_выраж> - Число заголовков меню, помещаемых в полосе меню.
     
MENU <числ_выражN1>,<массив>,<числ_выражN2> [,<числ_выражN3>]
     Команда MENU помещает меню в полосу меню.

<числ_выражN1>  - Указывает позицию в полосе меню, в которую бу-
          дет помещено определяемое меню.
<массив> - Одномерный массив, содержащий символьные строки,  ис-
          пользуемые  как  опции  меню. Если первым знаком опции
          является обратная косая черта (\), то это значит,  что
          данную опцию выбрать нельзя. Если опция задается с по-
          мощью "\-", то в этом  меню  изображается  графический
          курсор. Это позволяет группировать опции в меню.
<числ_выражN2> - Число опций меню в меню.
<числ_выражN3> - Необязательная величина - указывает число опций
          меню,  которые  будут выводиться на экран в конкретный
          момент. Если опций больше, чем одновременно  выводится
          на экран, то меню прокручивается.

READ MENU BAR TO <перем1>,<перем2> [SAVE]
     Эта  команда включает всю структуру меню, определенную дан-
ными выше двумя командами.

<перем1-2>  - Переменные памяти, используемые для двух различных
          целей. Во-первых, они определяют заголовок меню и  оп-
          цию  меню, на которой будет находиться курсор в момент
          вывода меню на экран. (Если их значения не  соответст-
          вуют опции меню, первоначальным местом считается опция
          1  в  заголовке  меню  1). Во-вторых, они используются
          возврата  выбранного в результате работы операции READ
          значений массива подписей к заголовкам меню  и  опциям
          меню. Если в меню ничего не  выбрано,  обе  переменные
          возвращают значение 0.
SAVE - Если не использована опция SAVE, то  после  выбора  опции
          меню очищается, а экран возвращается к первоначальному
          виду. Если опция SAVE была определена, то меню остает-
          ся на экране после выбора опции.
       
     Пример программы:
     
     ***
     *** A program example of PULL-DOWN VENUS****
     ***
     SET STATUS OFF
     SET ECHO OFF
     SET TALK OFF
     SET MESSAGE TO 24
     ***
     ***Intialize the array for the menu bar***
     ***
     DIMENSION top (3,2)
     top(1,1) = '   FILE   '
     top(2,1) = '   EDIT   '
     top(3,1) = '   DATA   '
     top(1,2) = 'FILE SELECTIONS'
     top(2,2) = 'EDIT SELECTIONS'
     top(3,2) = 'DATA SELECTIONS'
     ***
     ***Dimension and intialize an array
     ***for the File menu***
     ***
     DIMENSION file(7)
     file(1) = 'NEW'
     file(2) = 'OPEN'
     file(3) = 'CLOSE'
     file(4) = '\-'  &&Insert a line between menu items
     file(5) = 'SAVE'
     file(6) = 'PRINT'
     file(7) = 'QUIT'
     ***
     ***Dimension and intialize an array
     ***for the Edit menu***
     ***
     DIMENSION edit(5)
     edit(1) = 'COPY'
     edit(2) = 'FIND'
     edit(3) = 'REPLACE'
     edit(4) = 'UNDO'
     edit(5) = 'CLEAR'
     ***
     ***Dimension and intialize an array
     ***for the Data menu***
     ***
     DIMENSION data(9)
     data(1) = 'BROUSE'
     data(2) = 'APPEND'
     data(3) = 'SORT'
     data(4) = 'JOIN'
     data(5) = '\-'   && Insert a line between menu items
     data(6) = 'TOTAL'
     data(7) = 'AVERAGE'
     data(8) = 'COUNT'
     data(9) = 'SUM'
     ***
     *** Install the pull-dwn menu systems
     ***
     MENU BAR top,3   && Install the menu bar
     MENU 1,file,7,7  && Install the file menu into the menu
     bar
     MENU 2,edit,5,6  && Install edit menu into the menu
     bar
     MENU 3,data,9,5  && Install data menu into the menu
     bar
     ***
     ***Initialaize the placement of the light-bar
     ***
     row=1
     col=1
     ***
     ***Activate the pull-down menu system
     ***
     READ MENU BAR TO row,col SAVE
     
     Смотри также: @<ряд>,<кол>MENU, MENU TO, READ MENU
     
     
 4.63 MENU TO
---------------------------------------------------------------
     
     Вызвать меню со световой полосой
     
     Формат:  MENU TO <перем. памяти>
     
     Команда  MENU  -  это  одна  из трех команд, используемых в
FoxBASE+ для создания меню со световой полосой.
     Группа команд @...PROMPT используется для вывода опций меню
в определенных позициях на экране. Команда MENU TO <перем. памя-
ти>  загружает  меню  со  световой  полосой  для  текущих команд
PROMPT, работающее под управлением клавиш, управляющих курсором.
     По мере передвижения пользователя по  опциям  меню,  каждый
PROMPT выделяется подсветкой. При этом в позиции, определенной с
помощью SET MESSAGE TO <числ_выражN> может появляться относящее-
ся  к  нему  необязательное сообщение. Опции выбираются одним из
двух способов:
     - нажав клавишу ВВОД, когда световая  полоса  находится  на
нужном PROMPT
     - нажав первую букву нужного PROMPT.
     Переменная памяти <перем.памяти> используется для двух раз-
личных  целей.  Во-первых, она определяют опцию меню, на которой
будет находиться курсор в момент вывода меню на экран. (Если  их
значения не соответствуют опции меню, первоначальным местом счи-
тается  опция 1 в заголовке меню 1). Во-вторых, она используются
возврата выбранного в результате работы операции READ опции  ме-
ню.  Если  в  меню  ничего не выбрано, обе переменные возвращают
значение 0.
     READKEY - устанавливается при выходе из  меню  со  световой
полосой.
     
     Смотри  также:  @...PROMPT,@@<ряд>,<кол>MENU, MENU TO, READ
              MENU, SET MESSAGE TO
     

4.64 MODIFY COMMAND/FILE
---------------------------------------------------------------

   Корректировать/создать файл

   Формат:  MODIFY COMMAND/FILE [<файл>]

     Этот формат команды MODIFY заносит указанный файл [файл]  в
текстовый  редактор  FoxBASE+.  С опцией COMMAND подразумевается
расширение имени файлов .PRG. Это используется для  редактирова-
ния  командных  файлов.  MODIFY FILE не подразумевает расширения
.PRG.
     Если в файле CONFIG с помощью TEDIT  не  указан  какой-либо
внешний   редактор,   то  используется  редактор,  встроенный  в
FoxBASE+. Встроенный  редактор  позволяет  редактировать  файлы,
размер которых не превышает 64К.
     Когда закончится внесение изменений в файл, измененная вер-
сия записывается на диск, а соответствующий файл .FOX  автомати-
чески удаляется и старая версия программы (если таковая имеется)
автоматически выгружается из внутреннего буфера команд FoxBASE+.
Редактор FoxBASE+ в это же время создает копию с расширением .BAK.
                                                    
       ________________________________________________
       ! Если  вы выполняете редактирование процедуры !
       ! в составе процедурного файла, необходимо ис- !
       ! пользовать команду CLEAR PROGRAM для  удале- !
       ! ния  процедуры из памяти. Дополнительная ин- !
       ! формация по этому вопросу приведена в описа- !
       ! нии команды CLEAR PROGRAM. Также,  если  су- !
       ! ществует  соответствующий файл с расширением !
       ! .FOX, то его следует удалить.                !
       !______________________________________________!
     
     Информация об использовании управляющих клавиш в  редакторе
MODIFY COMMAND приведена в разделе "Клавиши управления курсором"
в главе 3.


4.65 MODIFY LABEL/REPORT
---------------------------------------------------------------

   См CREATE
   
     Этот формат команды  MODIFY  используется  для  модификации
файлов  ярлыков  и  отчетов.  Дополнительная информация по этому
вопросу приведена в  описании  команды  CREATE  LABEL  и  CREATE
REPORT.


 4.66 MODIFY STRUCTURE
---------------------------------------------------------------

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

   Формат: MODIFY STRUCTURE

     Команда  MODIFY STRUCTURE выводит структуру активного файла
базы данных. Затем может быть выполнено редактирование структуры
в полноэкранном режиме, включая введение новых и удаление старых
полей, изменение имен, размеров и типов полей.
     FoxBASE+ выполняет автоматическое копирование файла  <файл>
перед  изменением  структуры. Когда процесс редактирования будет
завершен, данные, содержащиеся в скопированном файле базы данных
(.BAK) будут введены в отредактированную структуру файла.  Будет
также создана копия файла мемо (.DBT) с расширением .TBK, если в
файле <файл> изменяется количество полей мемо.
                  
     ____________________________________________________
     ! ПРЕДУПРЕЖДЕНИЕ: Записи из копии файла  не  будут !
     ! введены  в  новую  структуру, если единовременно !
     ! будут изменены и имя и  длина  поля  (или  общая !
     ! длина  записи). В связи с этим рекомендуется при !
     ! первом сеансе работы в MODIFY STRUCTURE изменять !
     ! имена полей, а затем со второго прохода изменять !
     ! длину полей и/или вводить новые поля.            !
     !__________________________________________________!

   Смотри также: CREATE <файл>.


4.67 NOTE/*/&&
---------------------------------------------------------------

   Внести комментарий в командную строку

   Форматы:  NOTE [<комментарии>]
             *[<комментарии>]
             &&[<комментарии>]

     Команда NOTE  позволяет  вводить  комментарии  в  командную
строку.  FoxBASE+ проигнорирует все символы, следующие за коман-
дой NOTE или символом *. Если вы хотите  продолжить  комментарий
на следующей строке, в конец первой строки комментария необходи-
мо ввести точку с запятой (;).
     Комментарии  могут  быть  также  введены  в конец командной
строки посредством введения перед текстом комментария двух  сим-
волов  (&&).  Использование  комментариев  для обозначения конца
структур IF и DO значительно повышает читаемость программы.

   Примеры:

   NOTE Инициализация переменной памяти;
        номера страницы
   STORE 1 TO Mpgnmbr
   * Задание цикла
   DO WHILE Mpgnmbr <= 25   && цикл 25 раз
      Mpgnmbr = Mpgnmbr + 1
   ENDDO     && DO WHILE Mpgnmbr <= 25
   

4.68 ON
---------------------------------------------------------------

   Отслеживание условия при выполнении программы

   Формат: ON ERROR/ESCAPE/KEY [<команда>]
           ON KEY = <числ_выраж>[<команда>]

     Команда ON отслеживает  указанное  условие  при  выполнении
программы. При выполнении указанного условия выполняется указан-
ная команда.
     Этим  условием  может быть ошибка FoxBASE+ (ERROR), нажатия
клавиши Escape (ESCAPE), нажатие любой клавиши (KEY) или опреде-
ленной клавиши (KEY = <числ_выраж>). Если используется несколько
команд ON, их приоритет установлен в следующем  порядке:  ERROR,
ESCAPE, KEY.
     Все команды ON остаются активными до тех пор, пока не будет
обнаружена следующая команда ON, использующая то же условие. Но-
вая  введенная  <команда> отменяет ранее введенную команд, кроме
того ранее введенная команда может быть отменеа  вводом  команды
ON без указания команды.
     После выполнения <команды> выполнение программы продолжает-
ся со строки, следующей за строкой, с которой был произведен пе-
реход.  Однако если <команда> является командой DO <файл>, и вы-
ход из <файла> производится при помощи команды RETRY, выполнение
команды продолжается с той же строки, с которой был выполнен пе-
реход.
     За исключением команды  ON  KEY=<числ_выраж>,  код  нажатой
клавиши  сохраняется  в  буфере  клавиатуры. Этот код может быть
удален из буфера при помощи команды INKEY() или аналогичной ей.
       
     ____________________________________________________
     ! Команда ON ESCAPE не будет выполняться, если ус- !
     ! тановлено SET ESCAPE OFF.                        !
     !__________________________________________________!

   Пример:

   ON ERROR DO Proc1


   PROCEDURE Proc1
   <команды>
   ON ERROR
   RETURN

     В этом примере программа перейдет  к  выполнению  процедуры
Proc1,  если пройзойдет ошибка FoxBASE+. После того, как <коман-
ды> в программном файле будут выполнены, команда ON ERROR выклю-
чается второй командой ON ERROR.
     Команда ON KEY назначает определенную  клавишу  в  качестве
рабочей.  Это позволяет разработчику вводить вспомогательную ин-
формацию, зависящую от контекста, например, путем переназначения
клавиши F1. Функции SYS(16) и SYS(18)  могут  быть  использованы
для  вывода названия активной процедуры и имени поля при нажатии
назначенной клавиши.
     Может быть назначена клавиша, имеющая скэн-код любой  функ-
циональной  клавиши,  а  не только F1. Назначенаая клавиша может
использоваться в процессе работы с файлом форматов (.FMT) вместе
с командами EDIT, APPEND, CHANGE, INSERT, И READ.
     Клавиша,  которой  соответствует  графический  образ, может
быть назначена рабочей посредством использования  значения  кода
ASCII  в  выражении <числ_выраж>. Фукнциональная клавиша или уп-
равляющая клавиша могут быть назначены рабочими посредством  ис-
пользования  соответствующего кода клавиши, плюс 256 в выражении
<числ_выраж>. Таблица этих значений приведена в приложении Е.

   Пример:

   SET PROCEDURE TO exampl
   DO vdeosale
   PROCEDURE vdeosale
   SET TALK OFF
   CLEAR
   vname = SPACE(10)
   buyrent = "B"
   *
   *Trap F! for help 'hot-key'
   *
   ON KEY=315 DO userhelp;
      WITH SYS(16), SYS(18)
   *
   *Draw input screen
   *
   @ 10,10 SAY "VIDEO NAME:" GET vname;
         PICTURE "AAAAAAAAAA"
   @ 12,10 SAY "(B)UY OR (R)ENT:";
         GET buyrent VALID (buyrent $'BRbr')
   READ

   PROCEDURE userhelp
   *
   *Recieve program name and field name
   *
   PARAMETERS pgmname, fldname
   SAVE SCREEN
   CLEAR
   * Strip drive name off pgmname
   pgmname = substr(pgmname,3)
   IF pgmname="VDEOSALE.PRG"
      @ 2,0 TO 5,79 DOUBLE   &&draw a box
      DO CASE
      CASE fldname = "VNAME"
         @ 3,10 SAY "Enter the name of the;
         video."
      CASE fldname = "BUYRENT"
         @ 3,10 SAY "Enter 'B' if Buing the;
         video or 'R' if Renting it."
      ENDCASE
      @ 4,10 SAY "Press a key to continue..."
      WAIT  ""
   ENDIF
   RESTORE SCREEN
   RETURN

     Далее приведены  несколько  рекомендаций  по  использованию
процедур  ON  KEY=  для  организации контекстно зависимой помощи
пользователю.

   * Процедура HELP не должна использовать команды READ,
     @...GET,  или CLEAR GETS. При попытке их использования
     будет выдано сообщение "A READ is currently in effect".

   * Для упродения ваших процедур help вводите команду SAVE
     SCREEN при входе и RESTORE SCREEN при выходе для сохранения
     образа части экрана, в которой была выведена информация.

   * При использовании фукнции SYS(16) для вывода имени
     процедуры используйте фукнцию SUBSTR() для удаления имени
     дисковода из начала имени процедуры с тем, чтобы ваша
     программа могла быть установлена на любом дисководе.

   Смотри также: INKEY(), READKEY, SET ESCAPE, RETURN, RETRY,
                 SYS(18)

     
4.69 PACK
---------------------------------------------------------------

   Физически удаляет логически удаленные записи

   Формат: PACK

   Команда PACK окончательно удаляет все записи в активном файле
базы данных, помеченные для удаления командой DELETE.
                                          
    _________________________________________
    ! После  выполнения команды PACK невоз- !
    ! можно восстановить записи, помеченные !
    ! для удаления командой DELETE.         !
    !_______________________________________!

   Если активная база данных используется совместно с одним  или
несколькими  индексными  файлами, команда PACK переформирует ин-
дексные файлы.
   Несмотря на установку команды SET ESCAPE, нажатие клавиши ESC
не прервет выполнение команды PACK.

   Пример:

   *.USE Video
   *.COUNT
      35 records
   *.DELETE FOR RECNO() = 2
      1 record deleted
   *.COUNT
      35 records
   *.PACK
      34 records copied
   *.COUNT
      34 records

   Смотри также: DELETE, RECALL, ZAP.


4.70 PARAMETERS
---------------------------------------------------------------

   Определяет переменные памяти в качестве параметров процедуры

   Формат: PARAMETERS <список_парам>

   Команда PARAMETERS позволяет назначить  данным,  передаваемым
вызывающей программе, имена локальных переменных.
   Эта  команда  должна быть первой в вызванной программе. Пара-
метром в списке параметров <список_парам> может быть любая пере-
менная памяти с допустимым именем. Параметры в списке параметров
<список_парам> разделяются запятыми и должны соответствовать ко-
личеству параметров, приведенных в списке вызывающей  программы.
Если имя переменной памяти изменяется в вызванной программе, из-
мененное значение передается в вызвавшую программу.

   Пример:

   * Salestax.PRG
   PARAMETERS Sub,Tot,Tax
   Tot=(Sub*Tax)+Sub
   * End Salestax.PRG

   Для выполнения программы Salestax.PRG:

   *.USE Video
   *.STORE 0.00 TO Total
   *.STORE Cost_buy TO Subtotal
   *.STORE .055 TO Taxrate
   *.? Cost_buy
   59.95
   *.DO Salestax WITH Subtotal,Total,Taxrate
   *.? Total
         63.24725

   Смотри также: DO, PRIVATE, PUBLIC, PROCEDURE


4.71 PRIVATE
---------------------------------------------------------------

   Описать локальную переменную памяти

   Форматы: PRIVATE <список_перем_пам>
            PRIVATE ALL [LIKE/EXCEPT <скел>]

   Команда  PRIVATE  позволяет совместно использовать одну пере-
менную памяти как переменную, которая была создана  в  вызвавшей
программе или была описана ранее, как переменная памяти PUBLIC.
   При   выполнении   программы,  содержащей  переменные  памяти
PRIVATE, все переменные, имеющие те же имена,  будут  "спрятаны"
от  пользователя до тех пор, пока не завершится выполнение прог-
раммы. Когда программа, содержащая  переменные  памяти  PRIVATE,
завершит свою работу, все переменные, имеющие имена, дублирующи-
еся в команде PRIVATE, будут восстановлены.
   Может  быть  объявлен  определенный  список переменных памяти
PRIVATE (формат а), или для указания переменных  памяти  PRIVATE
может быть использован трафарет (формат b).

   Смотри также: DO, PARAMETERS, PUBLIC


4.72 PROCEDURE
---------------------------------------------------------------

   Обозначить начало процедуры

   Формат: PROCEDURE <имя процедуры>

   Команда PROCEDURE является первым оператором в составе проце-
дуры.  Эта  команда  идентифицирует  начало каждого процедурного
файла. Имя процедуры может содержать до 8 символов.  Оно  должно
начинаться с буквы и может содержать буквы, цифры и символы под-
черкивания.
   Может  быть  также  выполнен  косвенный  вызов,  если команда
PROCEDURE обнаруживается в командном файле и  эта  процедура  не
является  частью  команды  SET PROCEDURE TO <файл>, которая была
выполнена ранее.

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

   * Total.PRG
   SET TALK OFF
   USE Video
   STORE 0.00 TO Subtotal
   STORE "      " TO Subtotal
   @ 5,0 SAY "RENT OR BUY:" GET Action PICTURE "!!!!!"
   READ
   SET PROCEDURE TO Subtotal   && открыть процедурный файл
   IF Action = "RANT"
      DO Rent                  &&   выполнить процедуру Rent
   ELSE Action = "BUY"
      DO Buy                  && выполнить процедуру Buy
   ENDIF
   CLOSE PROCEDURE            && закрыть процедурный файл
   * End ещефдюЗКП

   * Procedure файл Subtotal.PRG
   PROCEDURE Buy
      Subtotal=Cost_buy
   RETURN
   PROCEDURE Rent
      Subtotal=Cost_rent
   RETURN
   *End Procedure файл Subtotal.PRG

   Смотри также: SET PROCEDURE TO.


4.73 PUBLIC
---------------------------------------------------------------

   Описать переменную памяти общего пользования

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

   Команда PUBLIC позволяет вам описывать глобальные  переменные
памяти. Переменные памяти PUBLIC могут быть использованы в любом
программном файле в текущем сеансе работы с FoxBASE+.
   Перем  енные памяти, создаваемые командой PUBLIC, инициализи-
руются как ".F.", за исключением глобальной переменной FOX,  ко-
торая  автоматически инициализируется ".Т.". Глобальная перемен-
ная FOX позволяет использовать в программном файле FoxBASE+  ко-
манды и функции, не поддерживаемые самим FoxBASE+.
   Важно  помнить,  что все переменные памяти, которые вы хотите
описать, как PUBLIC, должны быть объявлены PUBLIC перед  занесе-
нием в них значений.
    _________________________________________
    ! Если  вы попытаетесь присвоить значе- !
    ! ние переменной памяти, а затем  попы- !
    ! таетесь  описать  эту переменную, как !
    ! PUBLIC, будет  выведено  сообщение  о !
    ! синтаксической ошибке.                !
    !_______________________________________!
   
   Вы можете объявить любую переменную памяти PRIVATE в качестве
PUBLIC.
   При использовании формата 2 может быть сформирован одномерный
или двумерный массив.

   Смотри также: DIMENSION, PRIVATE, DO, PARAMETERS


4.74 QUIT
---------------------------------------------------------------

   Прервать сеанс работы в FoxBASE+

   Формат: QUIT

   Команда  QUIT  позволяет  вам окончить текущий сеанс работы в
FoxBASE+.

    _________________________________________
    ! Для окончания работы с FoxBASE+ всег- !
    ! да используйте команду QUIT. Выключе- !
    ! ние компьютера без команды QUIT может !
    ! привести к повреждению открытых  фай- !
    ! лов и потере информации.              !
    !_______________________________________!

   Дополнительная  информация по этому вопросу приведена в главе
3 в разделе "Прочтите этот раздел ПЕРЕД работой в FoxBASE+".


4.75 READ
---------------------------------------------------------------

   Считать данные из @...GET

   Формат: READ [SAVE]

   Использованием команды READ начинается полноэкранное
редактирование или ввод данных для всех операторов @ GET. Курсор
может быть перемещен в любую позицию @ GET, после чего могут
быть введены или отредактированы данные. Любые введенные или
измененые данные будут считаны командой READ в соответствующее
поле или переменную памяти с помощью оператора @GET. Если коман-
да READ встречается в тот момент, когда не задействована  никакя
команда  GET, FoxBASE+ ожидает нажатия любой клавиши, после чего
родолжает выполнение.
   Данные, введенные или отредактированные командой READ, должны
относиться к определенным ранее переменным памяти или именам по-
лей файла базы данных в области  USE.  Переменные  памяти  могут
быть  описаны,  как  пустые  строки символов (" ") или с нулевым
числовым значением (0) для выполнения этого  требования  команды
READ.
   В обычной ситуации все операторы GET будут очищены  вслед  за
выполнением команды READ. Использование команды SAVE совместно с
командой  READ  позволит избежать очистки операторов GET. Обяза-
тельно введите команду CLEAR GETS во избежание  достижения  пре-
дельного  количества операторов GET. Смотрите раздел 6 для полу-
чения информации об  установке  количества  количества  активных
оперторов GET с помощью параметра BUCKET в файле CONFIG.FX.

   Примеры:
      
   *.STORE "          " TO Class
   *.@ 5,0 SAY "What type of Movie do you like?" GET Class
   *.READ SAVE
   *.USE Video
   *.@ 6,0 GET Title
   *.READ

   В  первом  примере команды READ переменная памяти Class может
быть отредактирована. Во втором примере команды READ может  быть
отредактировано поле Title базы данных Video. В связи с тем, что
после первой команды GET была выполнена команда READ SAVE, когда
выполняется  вторая  команда READ, переменная памяти Class может
быть вновь отредактирована.

   Смотри также: CLEAR GETS, CLEAR MEMORY, @
                                            
   
  4.76 READ MENU
---------------------------------------------------------------
                                                               
   Активизация вынимаемого меню
   
   Формат: READ MENU TO <перем> [SAVE]
   
   Эта команда активизирует вынимаемое меню, определенное коман-
дой @<коорд> MENU.
   
   <перем> - Переменная, определяющая начальную позицию световой
             полосы в меню и возвращающая номер выбранной  опции
             меню.
   
   Смотри также: @<перем> MENU
   

4.77 RECALL
---------------------------------------------------------------

   Отменить логическое удаление записей

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

   Команда RECALL отменяет пометку записей для  удаления.  Любая
команда DELETE может быть отменена последующей командой RECALL.
   Команда  RECALL  может быть использована для отмены удаления,
если по отношению к файлу не были использованы команды PACK  или
ZAP.
                                     
  ______________________________________
  ! Если  была  использована   команда !
  ! PACK  или ZAP, все записи, которые !
  ! были ранее помечены для  удаления, !
  ! безвозвратно удалены.              !
  !____________________________________!

   Пример:

   *.USE Video
   *.DELETE FOR .NOT. Available
      15 recjrds deleted
   *.RECALL FOR .NOT. Available
      15 records recalled

   Смотри также: DELETE, DELETED(), PACK, SET DELETED, ZAP


4.78 REINDEX
---------------------------------------------------------------

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

   Формат: REINDEX
                    
   Команда  REINDEX используется для кооректировки индексных фа-
лов, которые не были активными в процессе внесения  изменений  в
ключевые поля активной базы данных.
   Для выполнения операции переиндексирования, введите команду

   USE <база данных>INDEX <индексный файл>

а затем введите команду REINDEX. При этом будет откорректирован
индексный файл.
   Команда  REINDEX  сохраняет  текущий статус UNIQUE индексного
файла при его переформировании.

   Пример:

   *.USE Video INDEX Title
   *.REINDEX
   Reindexing index file - C:\FOX\TITLE.NDX
         35 records indexed

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


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