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



 

Часть 10

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              LIST               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Показывает записи базы данных или выражения
    Синтаксис
LIST
        [FIELDS ]
        [] [FOR ]
        [WHILE]
        [OFF]
        [NOCONSOLE]
        [NOOPTIMIZE]
        [TO PRINTER | TO FILE ]

LIST FILES
        [ON ]
        [LIKE ]
        [TO PRINTER | TO FILE ]

LIST MEMORY
        [LIKE ]
        [NOCONSOLE]
        [TO PRINTER | TO FILE ]

LIST STATUS
        [NOCONSOLE]
        [TO PRINTER | TO FILE ]

LIST STRUCTURE
        [NOCONSOLE]
        [TO PRINTER | TO FILE ]
    Смотри также
DISPLAY, DISPLAY   FILES,  DISPLAY  MEMORY,  DISPLAY  STATUS,  DISPLAY
STRUCTURE, SET DELETED

    Описание
    Команды LIST  эквивалентны  командам  DISPLAY  за исключением трех
отличий:
    - Область  действия  для команды LIST по умолчанию ALL (все
записи)
    - Команда LIST не приглашает вас продвигаться вперед,  когда экран
или окно заполнятся
    - Команда  LIST  не  показывает записей,  помеченных для удаления,
когда DELETED является SET ON (включено).
    Дополнительную информацию   о   командах   LIST   можно   найти  в
соответствующих темах DISPLAY в этом руководстве.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              LOAD               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Загружает бинарный файл в памяти
    Синтаксис
LOAD  [SAVE] [NOSAVE]
    Смотри также
CALL

    Описание
    Команда LOAD  загружает  бинарную  программу  с  диска  в  памяти.
Одновременно в память могут быть загружены шестнадцать файлов (до  64К
каждый).

    Дополнительные опции

    Файл, загружаемый  в  память.  Для  бинарных программ по умолчанию
принимается расширение .BIN.  Когда вы вызываете  бинарную  программу,
расширение можно опустить.  Если загружаемый файл имеет то же имя,  но
другое расширение,  чем загруженный перед ним,  то новый файл  стирает
предыдущий.

SAVE
    Команды LOAD и CALL поддерживают необязательные ключевые слова для
использования с   бинарными  программами,  осуществляющими  запись  на
экран. Вы можете включить SAVE (NOSAVE по умолчанию), когда загружаете
бинарную программу,  или  SAVE  и  NOSAVE,  когда  вызываете  бинарную
программу, размещенную в памяти с помощью команды LOAD.  При задании в
команде CALL  опции  SAVE  и  NOSAVE отменяют опции,  ранее заданные в
команде LOAD.
    Если задана   опция   SAVE,  FoxPro  копирует  текущее  содержание
видеопамяти в область  "стола"  FoxPro  при  возвращении  из  бинарной
программы (подразумевается, что бинарная программа осуществляла запись
прямо в видеопамять).
    Это подразумевает,  что  любые  записи бинарной программы известны
FoxPro, и трактуются,  как если бы они сделаны  FoxPro.  В  частности,
такие внешне  записанные  данные  не  будут  уничтожаться  первый  раз
никаким объектом FoxPro,  буксируемым по ним,  если используется опция
SAVE.
    Если это  не  требуется,  опция   SAVE   нежелательна,   так   как
используется время  для  просмотра  и сохранения содержания экрана при
каждом возврате из бинарной программы.

    Создание бинарной программы
    При создании   бинарного   файла     должна  быть  проделана
следующая последовательность операций:

1. MASM 

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

2. LINK 

- Компонует объектный файл и создает загрузочный файл

3. EXE2BIN 

- Создает бинарный файл

    Следуйте следующим правилам при создании бинарных файлов в FoxPro:

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

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

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

    * Регистры  SS  и  CS  должны  быть  восстановлены  до  того,  как
управление будет передано FoxPro

    * Дальний  возврат должен быть использован для передачи управления
FoxPro, когда программа выполняется с помощью команд LOAD и CALL

    * Когда работа программы завершена  с  помощью  вызова  выхода  из
системы,  а не дальнего возврата, необходимо выполнять ассемблирование
программы с командой RUN | !.

    Внимание!!!

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             LOCATE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Определяет местоположение записи в базе данных
    Синтаксис
LOCATE FOR 
        [] [WHILE ]
        [NOOPTIMIZE]
    Смотри также
CONTINUE, SEEK(), FOUND(), EOF(), RECNO

    Описание
    Команда LOCATE  последовательно  ищет  в  текущей  выбранной  базе
данных первую запись,  соответствующую выражению .  База данных
не должна быть индексирована.
    Если команда   LOCATE   находит  соответствующую  запись,  функция
RECNO() вернет номер этой  записи,  функция  FOUND()  вернет  значение
"истинно" (.Т.),  а функция EOF() вернет значение "ложно" (.F.). Номер
записи также отобразится на экране,  несмотря на то,  что команда TALK
установлена в SET OFF.
    Если команда  LOCATE  нашла  соответствующую  запись,  вы   можете
использовать  команду  CONTINUE  для  поиска соответствующих записей в
оставшейся части файла. При выполнении команды CONTINUE процесс поиска
продолжается,   начиная   с   записи,   следующей  непосредственно  за
найденной.  Команда CONTINUE выполняется до тех  пор,  пока  не  будет
достигнут  конец  области  видимости или конец файла,  или до тех пор,
пока не заработает новая команда LOCATE.
    Если соответствующая  запись  не  будет  найдена,  функция RECNO()
вернет величину,  равную количеству записей в базе данных  плюс  один,
функция  FOUND()  вернет  значение  "ложно",  а  функция  EOF() вернет
значение "истинно".
    Команда LOCATE  также  может  быть  запущена  путем  выбора в Меню
записей (Record) пункта Locate...
    Для получения    более   полной   информации   по   интерактивному
использованию команды LOCATE обратитесь к "Руководству по  интерфейсу"
(Interface Guide) системы FoxPro.
    Итерационная процедура  определения   местоположения   записей   и
осуществления серии операций над ними может быть создана в программном
файле путем помещения ряда операторов FoxPro между командами LOCATE  и
CONTINUE.
    Команды LOCATE и CONTINUE определены для текущей выбранной рабочей
области.  Если  выбрана  другая  рабочая  область,  то  процесс поиска
приостанавливается до тех пор,  пока не будет переопределена  исходная
рабочая область. Тогда процесс поиска будет продолжен.

    Дополнительные опции
FOR 
    Команда LOCATE  последовательно  ищет  в  текущей  выбранной  базе
данных первую запись, которая соответствует .
    Rushmore будет  оптимизировать  запрос  LOCATE  FOR,  если 
является  оптимизируемым  выражением.  Для   повышения   эффективности
используйте   оптимизируемые   выражения   в   опции  FOR.  Выражения,
оптимизируемые Rushmore,  рассматриваются в  главе  Оптимизация  ваших
прикладных  программ  в "Руководстве разработчика" (Developre's Guide)
по системе FoxPro.


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

WHILE 
    Вы можете также включить опцию WHILE . При этом поиск будет
производиться до тех пор, пока  остается истинным (.T.).

NOOPTIMIZE
    Для блокировки   оптимизации  Rushmore  команды  LOCATE,  включите
NOOPTIMIZE.  Более подробную информацию о  NOOPTIMIZE  можно  найти  в
описании команды SET OPTIMIZE в этом руководстве и в описании Rushmore
в  главе  Оптимизация  ваших  прикладных   программ   в   "Руководстве
разработчика" (Developre's Guide) по системе FoxPro.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

CLOSE ALL
SET TALK OFF
CLEAR
USE customer
STORE 0 TO mcount
LOCATE FOR city = 'Perrysburg'
DO WHILE FOUND()
   ? company
   mcount = mcount + 1
   CONTINUE
ENDDO
? 'Total customers from Perrysburg: ' + LTRIM(STR(mcount))
USE

    В этом  примере все покупатели из Perrysburg найдены,  выведены на
экран и подсчитаны. Затем общий результат выводится на экран.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            LOCFILE()            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Определяет местоположение файла на диске
    Синтаксис
LOCFILE([, ] [, ])
    Параметры
  Отыскиваемый файл
  Список расширений файлов
  Приглашение диалога Открыть файл
    Возвращаемый тип
Символьный
    Замечания
Новая в FoxPro 2.0
    Смотри также
FILE(), GETFILE(), PUTFILE()

    Описание
    Функция LOCFILE()  определяет  местоположение  файла  на  диске  и
возвращает имя файла с полным путевым именем.  Если файл не может быть
найден, представляется   диалог  Открыть  файл  так,  чтобы  вы  могли
отыскать файл.

    Параметры

    Параметр  задает  имя  отыскиваемого  файла.  Если  
является простым  именем  файла,  исследуется директория по умолчанию.
Если файла  нет  в  директории  по  умолчанию,  исследуется   маршрут,
заданный для FoxPro. Если файл найден, возвращается полное путевое имя
файла. Если  не имеет расширения, рассматриваются расширения из
 при попытке определить местоположение файла.
    Если в  вы зададите директорию вместе с именем файла, будет
исследоваться  заданная  директория.  Если файл не может быть найден в
заданной директории,  исследуется директория  по  умолчанию,  а  затем
исследуется   маршрут,   заданный   для   FoxPro.  Если  файл  найден,
возвращается полное путевое имя файла.
    Если файл  не  может быть найден в директории по умолчанию,  также
как и в маршруте FoxPro или заданной директории, представляется диалог
Открыть файл.   Диалог   Открыть   файл  может  быть  использован  для
определения местоположения файла.  Когда файл выбирается  из  диалога,
возвращается полное  путевое имя файла,  и маршрут файла добавляется в
маршрут FoxPro.
    Если был  осуществлен  выход  из  диалога  Открыть  файл с помощью
кнопки Cancel   или    нажатия    клавиши    Escape,    представляется
предупреждение "File  does  not exist" (Файл не существует) (сообщение
об ошибке 1), и функция LOCFILE() не возвращает значения.


    Параметр   определяет  расширения файлов,  представляемых в
диалоге Открыть файл,  если не выбран блок  проверки  All  Files  (Все
файлы). Полный список расширений,  используемых FoxPro,  можно найти в
таблице расширений файлов в  "Руководстве  разработчика"  (Developer's
Guide) по системе FoxPro.
     может быть представлен в различных формах:
    -    может  содержать  единственное  расширение  (например,
'PRG'), и будут представлены только те  файлы,  которые  имеют  данное
расширение.
    -  может содержать список  расширений  файлов,  разделенных
точкой с  запятой  (например,  'PRG;FXP').  В  данном  примере функция
LOCKFILE() представит все файлы с расширениями PRG и FXP. Однако, если
файлы имеют  одно  и  то же имя,  но различные расширения,  (например,
CUSTOMER.PRG и CUSTOMER.FXP),  будет представлен только  один  файл  с
расширением, идущим в списке расширений первым.  В этом примере,  если
список  расширений  файлов  содержит  'PRG;FXP',   будет   представлен
CUSTOMER.PRG.
    -  может содержать список  расширений  файлов,  разделенных
вертикальной чертой   (например,   'PRG|FXP').  В  этом  случае  будут
представлены все файлы с данными расширениями,  даже если файлы  имеют
одинаковые имена.
    - Если  содержит только точку с запятой  (';'),  все  файлы
без расширения будут представлены в прокручивающемся списке.
    - Если  является пустой  строкой,  будут  представлены  все
файлы в текущей директории.
    -  может также содержать метасимволы DOS  (*  и  ?).  Будут
представлены все  файлы,  которые удовлетворяют критерию метасимволов.
Например, если  является '?X?',  будут представлены все файлы с
расширениями FXP, EXE, TXT и т. д.


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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              LOCK               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Пытается заблокировать запись или группу записей базы данных
    Синтаксис
LOCK([ | ] | [,  | ])
    Параметры
   Номер рабочей области для базы данных
  Псевдоним базы данных
  Список  одного  или  нескольких номеров записей,  разделенных
         запятыми
    Возвращаемый тип
Логический
    Замечания
FoxPro/LAN
    Смотри также
CLEAR, CLOSE, FLOCK(), RLOCK(), SET MULTILOCKS, SET REPROCESS, UNLOCK,
USE

    Описание
    С помощью функции LOCK() вы можете попытаться заблокировать запись
или группу  записей  базы данных.  FoxPro/LAN,  сетевая версия FoxPro,
требует блокировки записей базы данных или файлов.
    Если блокировка   или  блокировки  сделаны  успешно,  возвращается
значение "истинно" (.T.).  Заблокированные записи доступны на чтение и
запись только     заблокировавшему    их    пользователю,    остальным
пользователям сети доступны только на чтение.  Функция  LOCK()  всегда
возвращает истинное значение для однопользовательской версии FoxPro.
    Использование функции   LOCK()   не   гарантирует,   что   попытка
блокировки записи завершится удачно.  Нельзя заблокировать запись, уже
заблокированную другим пользователем,  или заблокировать запись в  уже
заблокированном другим   пользователем   файле   базы   данных.   Если
блокировка или  блокировки  не   могут   быть   успешно   произведены,
возвращается логическое значение "ложно" (.F.).
    Вы можете выдавать функцию LOCK() в Командном окне и в программах.
Функция LOCK() идентична функции RLOCK().
    Команда SET  REPROCESS  определяет,  как  функция   LOCK()   будет
возвращать значение.  С  помощью  SET  REPROCESS  вы можете продолжать
попытки заблокировать  запись,  если  начальная  блокировка  не   была
успешной. Более  подробную информацию о том,  как SET REPROCESS влияет
на попытки блокировки,  можно найти в описании команды SET REPROCESS в
этом руководстве.
    Команда SET  MULTILOCKS   определяет   возможность   заблокировать
несколько записей базы данных. Если установлено SET MULTILOCKS OFF (по
умолчанию), то можно заблокировать только  одну  запись  базы  данных.
Группу записей   можно   заблокировать,  когда  установлен  режим  SET
MULTILOCKS ON.  Смотрите описание  команды  SET  MULTILOCKS  в  данном
руководстве.

    Параметры
 | 
    Если вы  не  задали рабочую область или псевдоним,  функция LOCK()
будет пытаться заблокировать текущую запись  в  файле  базы  данных  в
текущей рабочей области.
    Для попытки блокировки текущей записи в базе  данных,  открытой  в
заданной рабочей  области,  задайте  номер  рабочей области  или
псевдоним базы данных .


    Для попытки  блокировки  нескольких  записей  используйте параметр
. Вы должны также включить номер рабочей области или  псевдоним
базы данных,  в  которой вы пытаетесь заблокировать несколько записей,
кроме того, нужно включить режим MULTILOCKS.
     является  списком  одного  или нескольких номеров записей.
LOCK() пытается заблокировать все эти записи. Номера записей в 
должны разделяться   запятыми.  Например,  для  попытки  заблокировать
первые четыре  записи  в  базе  данных,      должно   содержать
'1,2,3,4'. Список   номеров  записей    может  быть  символьной
строкой, заключенной в одинарные или двойные кавычки,  или  переменной
памяти или  элементом  массива  символьного типа.  Он может быть также
полем базы данных символьного типа или memo полем.
    Вы можете   также  заблокировать  несколько  записей  установкой
указателя записей на желаемую запись,  использованием  функции  LOCK()
или RLOCK(), и повторением этой процедуры для каждой записи.
    Если успешно  заблокированы  все  записи,  заданные   в   ,
возвращается логическое значение "истинно" (.T.).
    Даже если одна из записей,  заданных  в  ,  не  может  быть
заблокирована, возвращается  логическое  значение "ложно" (.F.),  и ни
одна из записей,  заданных в  не будет  заблокирована.  Однако,
существующие блокировки записей будут оставаться на месте.  Блокировка
нескольких записей   является   аддитивным   процессом   -   установка
дополнительных блокировок не удаляет блокировки других записей.
    Максимальное число  записей,  которые  могут   быть   одновременно
заблокированы в каждой рабочей области,  приблизительно равно 8000.  В
отношении скорости выполнения, всегда быстрее заблокировать целую базу
данных, чем небольшое число записей.

    Разблокировка записей
    Запись базы данных может быть разблокирована только пользователем,
установившим блокировку.   Блокировки   записей   могут  быть  удалены
использованием команды UNLOCK,  закрытием базы данных или  выходом  из
системы FoxPro/LAN с помощью команды QUIT.
    Команда UNLOCK может использоваться для снятия блокировок  записей
в текущей  рабочей области (UNLOCK),  заданной рабочей области (UNLOCK
IN  | ) или во всех рабочих областях (UNLOCK ALL).  Более
подробную информацию  о  команде  UNLOCK  можно  найти в ее описании в
данном руководстве.
    Переключение режима  MULTILOCKS  из  режима  ON  в  режим  OFF или
наоборот всегда влечет выполнение команды UNLOCK ALL  -  освобождаются
блокировки записей во всех рабочих областях.
    Базы данных могут быть закрыты с помощью команд USE, CLEAR ALL или
CLOSE DATABASE.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

SET MULTILOCKS ON
SET REPROCESS TO AUTOMATIC
STORE '1,2,3,4' TO mreclist

CLOSE ALL
SELECT 0
USE customer
SELECT 0
USE states

? LOCK('1,2,3,4', 'customer') && Блокирует первые 4 записи в customer
? RLOCK(mreclist, 'states')   && Блокирует первые 4 записи в states
UNLOCK IN customer
UNLOCK IN states

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               LOG               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает значение натурального логарифма (по основанию e) численного
выражения
    Синтаксис
LOG()
    Возвращаемый тип
Численный
    Смотри также
EXP(), LOG10(), SET DECIMALS

    Описание
    Математическая функция  LOG()  возвращает  значение   натурального
логарифма  численного  выражения.  Основанием  натурального  логарифма
является  число  e.  Десятичная  часть   результата   возвращается   с
точностью, определенной командой SET DECIMALS.

    Параметр

    Функция LOG()  возвращает значение числа x в выражении e в степени
x = .  должно быть больше нуля.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? LOG(1)

0.00

STORE EXP(2) TO esquared
? LOG(esquared)

2.00

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              LOG10              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает значение десятичного логарифма (по основанию 10) численного
выражения
    Синтаксис
LOG10()
    Возвращаемый тип
Численный
    Смотри также
EXP(), LOG(), SET DECIMALS

    Описание
    Математическая функция  LOG10()  возвращает  значение  десятичного
логарифма  численного  выражения.  Основанием  десятичного   логарифма
является   число   10.  Десятичная  часть  результата  возвращается  с
точностью, определенной командой SET DECIMALS.

    Параметр

    Функция LOG10() возвращает значение  числа  x  в  выражении  10  в
степени x = .  должно быть больше нуля.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? LOG10(10)

1.00

STORE 100 TO baseten
? LOG10(baseten)

2.00

? LOG10(baseten^2)

4.00

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            LOOKUP               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Осуществляет поиск в базе данных
    Синтаксис
LOOKUP(, , [, ])
    Возвращаемый тип
Символьный, численный, логический или дата
    Смотри также
FIND, INDEX, LOCATE

    Описание
    Функция LOOKUP()  ищет  в  базе  данных первое появление заданного
выражения. Если имеется в распоряжении индекс,  то он используется для
поиска выражения; в противном случае выполняется команда LOCATE.
    Если выражение найдено,  указатель записи перемещается на  запись,
соответствующую выражению.  Возвращается  содержание заданного поля из
записи. Если  записей  не  найдено,  возвращается  пустая  строка,   а
указатель записей остается на конце файла. Указатели записей связанных
файлов перемещаются на связанные записи.
    Эта функция не оптимизируется Rushmore.

    Дополнительные опции

    Если поиск успешен,  возвращается поле,  заданное в . Если
поиск неуспешен, возвращается пустая строка.


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


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


    Вы можете  задать  для  использования  в  поиске  тег  компактного
индекса. Имя   тега   компактного   индекса  задается  в  .  Тег
компактного индекса может быть создан из комбинации полей базы данных,
и выражение  для  поиска  должно  соответствовать индексному выражению
компактного индекса.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              LOWER              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает заданное символьное выражение в нижнем регистре
    Синтаксис
LOWER()
    Возвращаемый тип
Символьный
    Смотри также
ISALPHA(), ISLOWER(), ISUPPER(), PROPER(), UPPER()

    Описание
    Функция LOWER()  возвращает символьную строку в нижнем регистре из
символьного выражения.  Буквы в верхнем регистре  (A-Z)  в  символьном
выражении преобразуются   в   нижний  регистр  (a-z).  Все  символы  в
символьном выражении, кроме символов A-Z, остаются неизмененными.

    Параметр

    Символьное выражение  преобразуется в нижний регистр.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

STORE 'FOX' TO name
?LOWER(name)

fox

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              LTRIM              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает символьную  строку,  получившуюся после удаления лидирующих
пробелов из символьного выражения
    Синтаксис
LTRIM()
    Возвращаемый тип
Символьный
    Смотри также
ALLTRIM(), LEFT(), RIGHT(), RTRIM(), SUBSTR(), TRIM()

    Описание
    Функция LTRIM()  возвращает символьную строку,  получившуюся после
удаления лидирующих пробелов из  символьного  выражения.  Эта  функция
полезна для удаления лидирующих пробелов,  которые возникают, когда вы
используете функцию STR() для  преобразования  численного  значения  в
символьную строку.

    Параметр

    Из символьного выражения  удаляются лидирующие пробелы.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

STORE 'Perrysburg'  TO city
STORE '         Ohio'  TO state
? city, state

Perrysburg         Ohio

? city, LTRIM(state)

Perrysburg Ohio

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             LUPDATE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает дату последнего обновления заданной базы данных
    Синтаксис
LUPDATE([ | ])
    Возвращаемый тип
Дата
    Смотри также
DIR, FILER

    Описание
    Функция LUPDATE()  возвращает  дату  последнего  обновления   базы
данных. Эта функция полезна в процедурах обновления.

    Параметр
 | 
    Если вы не задали рабочую область или псевдоним, возвращается дата
последнего обновления файла базы данных в текущей рабочей области.  Вы
можете  получить  дату  последнего обновления базы данных,  открытой в
другой  рабочей  области,  задав  номер  рабочей  области    или
псевдоним базы данных .
    Если в заданной рабочей области нет открытой базы данных,  функция
LUPDATE()  возвращает  пустую  дату (' / / ').  Если нет базы данных с
заданным псевдонимом, выдается сообщение "Alias not found" ("Псевдоним
не найден").

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

USE Customer
? LUPDATE ( )

09/15/89

USE

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               MAX               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает наибольшее  значение  из   списка   символьных,   численных
выражений или выражений с датой
    Синтаксис
MAX(, [,  ... ])
    Возвращаемый тип
Символьный, дата или численный
    Смотри также
CALCULATE, MIN()

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

    Параметры
, [, ...]
    Используйте набор выражений (,  , ...) одного
типа в  функции  MAX().  Эти  выражения  вычисляются,  и  возвращается
наибольшее значение.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? MAX(54, 39, 40)

54

? MAX(6^6, 10*12, PI())

    46656.00

? MAX({07/12/99},DATE())

07/12/99

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              MCOL               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает колонку экрана или окна, в которой находится указатель мыши
    Синтаксис
MCOL([])
    Возвращаемый тип
Численный
    Смотри также
COL(), MROW(), ROW(), WCOLS(), WROWS()

    Описание
    Функция MCOL()  возвращает  колонку  экрана  или  окна,  в которой
находится указатель мыши.

    Параметр

    Функция MCOL() возвращает колонку,  в которой расположен указатель
мыши,  если в  задана пустая строка.  Колонка экрана,  в которой
расположен указатель мыши возвращается также,  если опустить   и
при этом нет активного открытого окна.
    Если есть активное окно,  и  не указано,  то функция  MCOL()
выдает  колонку,  в  которой  расположен указатель мыши,  относительно
активного окна.  Если вы задаете имя окна в , координата колонки
возвращается  относительного  заданного окна.  В обоих случаях функция
MCOL() возвращает значение -1, если указатель мыши находится вне окна.
    Если MCOL()  возвращает  координату  экрана,  то ее значение будет
находиться в диапазоне от 0 до максимального числа колонок  на  экране
минус 1.  Например,  если дисплей работает в режиме EGA25,  то функция
MCOL() будет возвращать значения в диапазоне от 0 до 79.
    При получении  с  помощью  этой  функции координаты в виде колонки
окна, ее значение будет в диапазоне от 0 до числа колонок в окне минус
1  (или  равно  -1  в  том случае,  когда указатель мыши находится вне
окна).  Число колонок  в  окне  можно  определить  с  помощью  функции
WCOLS().
    Если  является именем Окна просмотра  или  Окна  отладки,  а
указатель мыши  находится  на  левой  границе окна,  MCOL() возвращает
ноль. Когда указатель мыши находится на левой границе  любого  другого
окна, MCOL() возвращает -1.

    Важно!!!
    Если драйвер мыши не был  загружен,  и  нет  окна  вывода,  MCOL()
возвращает -1.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Второй пример  в  описании  функции  INKEY()  использует   MCOL().
Смотрите описание функции INKEY() для примера использования MCOL().

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              MDOWN              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает логическое значение, соответствующее состоянию кнопки мыши
    Синтаксис
MDOWN()
    Возвращаемый тип
Логический
    Смотри также
MCOL(), MROW()

    Описание
    Функция MDOWN() возвращает значение "истинно"  (.Т.)  или  "ложно"
(.F.),  которое  соответствует  состоянию  левой кнопки мыши.
    Если эта кнопка нажата во время выполнения функции MDOWN(), то она
возвращает значение "истинно" (.Т.). Если эта левая кнопка отпущена во
время выполнения функции MDOWN(), то ее значение "ложно" (.F.).

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               MDX               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает имена открытых составных индексных файлов .CDX
    Синтаксис
MDX( [,  | ])
    Параметры
  Число, соответствующее  позиции  индекса,  которое  указывает
         MDX(), что нужно возвращать
  Номер рабочей области для базы данных
   Псевдоним базы данных
    Возвращаемый тип
Символьный
    Замечания
Новая в FoxPro 2.0
    Смотри также
CDX(), INDEX, NDX(), SET INDEX, SYS(14), TAG(), USE

    Описание
    Функция MDX() возвращает имена открытых составных индексных файлов
.CDX. MDX() идентична функции CDX().
    Индексные файлы могут быть открыты для базы данных с помощью опции
INDEX  команды  USE  или  с  помощью  SET  INDEX.  Файл  .CDX сложного
структурного индекса  автоматически  открывается  с  файлом  его  базы
данных. Все  индексные  файлы .IDX,  заданные опцией INDEX команды USE
или командой SET INDEX игнорируются этой функцией.
    Функция TAG()   может  использоваться  для  получения  имени  тега
составного индексного файла .CDX;  функция NDX() может  использоваться
для возвращения имен открытых индексных файлов .IDX.

    Параметры

    Если база данных имеет структурный индексный файл, и  равно
1, возвращается имя  структурного  индексного  файла  (которое  всегда
идентично имени базы данных).  Если  равно 2,  возвращается имя
первого составного  индексного  файла  .CDX,  заданного  опцией  INDEX
команды USE или командой SET INDEX. Если  равно 3, возвращается
имя второго составного индексного файла .CDX  и  т.  д.  Если  
больше числа  открытых  составных индексных файлов .CDX,  возвращается
пустая строка.
    Если база данных не имеет структурного индексного файла, и 
равно 1,  возвращается имя первого составного индексного  файла  .CDX,
заданного  опцией  INDEX  команды  USE  или  командой SET INDEX.  Если
 равно 2,  возвращается имя второго составного индексного файла
.CDX  и т.  д.  Если  больше числа открытых составных индексных
файлов .CDX, возвращается пустая строка.

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               MDY               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Преобразует выражение с датой в Американский формат Месяц День Год
    Синтаксис
MDY()
    Возвращаемый тип
Символьный
    Смотри также
DMY(), SET CENTURY, SET DATE

    Описание
    Функция MDY() возвращает символьную строку в  формате  Месяц  День
Год,  используя выражение с датой. Месяц всегда возвращается полностью
(без сокращений).  Если команда CENTURY установлена в режим  SET  OFF,
вернувшееся значение будет иметь формат : Месяц,ДД,ГГ. Если же CENTURY
установлена в SET ON, тогда формат будет выглядеть так: Месяц,ДД,ГГГГ.

    Параметр

     является выражением  с  датой.  Соответствующая  символьная
строка возвращается функцией MDY() в формате Месяц Дата Год.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

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

*** LongDate ***
FUNCTION longdate
PARAMETERS mdate
RETURN CDOW(mdate) + ', '+MDY(mdate)

Использование этой функции:

SET CENTURY OFF
? Longdate({08/16/89})

Wednesday, August 16, 89

SET CENTURY ON
? Longdate({08/16/89})

Wednesday, August 16, 1989

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            MEMLINES             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает число строк в memo поле
    Синтаксис
MEMLINES()
    Возвращаемый тип
Численный
    Смотри также
MLINE(), SET MEMOWIDTH

    Описание
    Функция MEMLINES() возвращает число строк в memo поле произвольной
длины.  Число  строк  в  memo  поле  определяется  текущим  значением,
определенным в команде SET MEMOWIDTH.

    Параметр

    Функция MEMLINES()  возвращает  число  строк  в  memo  поле  .  Если memo поле находится в базе данных,  которая открыта не в
текущей рабочей области, укажите перед именем memo поля псевдоним базы
данных и точку.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

CLOSE ALL
SET TALK OFF
USE customer
SET MEMOWIDTH TO 65
mline = 1
SCAN
    memo_size = MEMLINES(comments)
    IF memo_size = 0
        STORE .T. TO nocomment
        STORE 1 TO memo_size
    ELSE
        STORE .F. TO nocomment
    ENDIF
    IF mline + memo_size  > 65
                EJECT
        mline = 1
    ENDIF
    @ mline,2 SAY 'Company : '+company
    mline = mline+1
    @ mline,2 SAY 'Comments: '
    ?? IIF(nocomment, 'No comments ',comments)
     mline = mline + memo_size + 2
        IF mline > 24
                mline = 1
                CLEAR
        ENDIF
ENDSCAN

Этот пример выводит все комментарии в базе данных CUSTOMER.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             MEMORY              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает размер оставшейся свободной памяти в килобайтах
    Синтаксис
MEMORY()
    Возвращаемый тип
Численный
    Смотри также
SYS(12), SYS(1001)

    Описание
    Эта функция  возвращает  размер  свободной памяти в килобайтах как
численное значение.
    MEMORY() похожа на функцию SYS(12) с двумя отличиями:
    - MEMORY() возвращает размер  свободной  памяти  в  килобайтах,  а
SYS (12) в байтах.
    - MEMORY() возвращает числовое значение,  в отличие от функции SYS
(12), которая возвращает значение в виде символьной строки.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? MEMORY ()
167

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є MENU - Имена Системного меню    є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Имена Системного меню FoxPro
    Замечания
Новое в FoxPro 2.0
    Смотри также
ACTIVATE MENU,  ACTIVATE POPUP, DEFINE BAR, DEFINE MENU, DEFINE POPUP,
SET SYSMENU, SYS(2013)

    Описание
    Следующая таблица представляет имена пунктов в линейке  Системного
меню FoxPro,  имена  всплывающих  меню в Системном меню и имена команд
всплывающих меню  в  Системном   меню.   Эти   имена   позволяют   вам
использовать линейку   Системного   меню   FoxPro.   Более   подробную
информацию по использованию линейки Системного меню FoxPro можно найти
в "Руководстве разработчика" (Developer's Guide) по системе FoxPro.
    Функция SYS(2013)  возвращает   строку,   разделенную   пробелами,
содержащую эти имена.
    Именем линейки Системного меню FoxPro является _MSYSMENU.

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і     Пункты Системного меню и их имена     і
    ГДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДґ
    і  Пункт меню           і     Имя           і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і System (Система)      і _MSM_SYSTM        і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і File (Файл)           і _MSM_FILE         і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і Edit (Редактировать)  і _MSM_EDIT         і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і Database (База данных)і _MSM_DATA         і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і Record (Запись)       і _MSM_RECRD        і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і Program (Программа)   і _MSM_PROG         і
    ГДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДґ
    і Window (Окно)         і _MSM_WINDO        і
    АДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і   Имена всплывающих меню в меню System (Система)  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплывающее меню System (Система)   і _MSYSTEM    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і About FoxPro... (О FoxPro...)       і _MST_ABOUT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Help... (Подсказка...)              і _MST_HELP   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Macros... (Макросы...)              і _MST_MACRO  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый Разделитель                    і _MST_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Filer (Работа с файлами)            і _MST_FILER  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Calculator (Калькулятор)            і _MST_CALCU  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Calendar/Diary (Календарь/Дневник)  і _MST_DIARY  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Special Characters (Спец. символы)  і _MST_SPECL  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і ASCII Chart (Таблица ASCII)         і _MST_ASCII  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Capture (Захват)                    і _MST_CAPTR  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Puzzle  (Головоломка)               і _MST_PUZZL  і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і   Имена всплывающих меню в меню File (Файл)       і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплывающее меню File (Файл)        і _MFILE      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і New... (Новый...)                   і _MFI_NEW    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Open... (Открыть...)                і _MFI_OPEN   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Close (Закрыть)                     і _MFI_CLOSE  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Close All (Закрыть все)             і _MFI_CLALL  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый разделитель                    і _MFI_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Save (Сохранить)                    і _MFI_SAVE   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Save as... (Сохранить как...)       і _MFI_SAVAS  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Revert (Вернуться)                  і _MFI_REVRT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 2-ой разделитель                    і _MFI_SP200  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Printer Setup...(Настр. принтера...)і _MFI_SETUP  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Print... (Печать...)                і _MFI_PRINT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 3-ий разделитель                    і _MFI_SP300  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Quit (Выход)                        і _MFI_QUIT   і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і Имена всплывающих меню в меню Edit (Редактировать)і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплывающ. меню Edit (Редактировать)і _MEDIT      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Undo (Отменить)                     і _MED_UNDO   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Redo (Отменить отмену)              і _MED_REDO   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый разделитель                    і _MED_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Cut (Вырезать)                      і _MED_CUT    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Copy (Скопировать)                  і _MED_COPY   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Paste (Вставить)                    і _MED_PASTE  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Clear (Стереть)                     і _MED_CLEAR  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 2-ой разделитель                    і _MED_SP200  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Select All (Выбрать все)            і _MED_SLCTA  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 3-ий разделитель                    і _MED_SP300  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Goto Line... (Перейти к строке...)  і _MED_GOTO   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Find... (Искать...)                 і _MED_FIND   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Find Again (Искать снова)           і _MED_FINDA  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Replace and Find Again              і             і
    і (Заменить и искать снова)           і _MED_REPL   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Replace All (Заменить все)          і _MED_REPLA  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 4-ый разделитель                    і _MED_SP400  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Preferences... (Приоритеты...)      і _MED_PREF   і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і Имена всплыв. меню в меню Database (База данных)  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплыв. меню Database (База данных) і _MDATA      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Setup... (Настройка...)             і _MDA_SETUP  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Browse (Правка)                     і _MDA_BROW   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый разделитель                    і _MDA_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Append From... (Добавить из...)     і _MDA_APPND  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Copy To... (Скопировать в...)       і _MDA_COPY   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Sort... (Сортировать...)            і _MDA_SORT   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Total... (Итог...)                  і _MDA_TOTAL  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 2-ой разделитель                    і _MDA_SP200  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Average... (Среднее...)             і _MDA_AVG    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Count... (Подсчет...)               і _MDA_COUNT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Sum... (Сумма...)                   і _MDA_SUM    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Calculate... (Вычислить...)         і _MDA_CALC   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Report... (Отчет...)                і _MDA_REPRT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Label... (Этикетка...)              і _MDA_LABEL  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 3-ий разделитель                    і _MDA_SP300  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Pack (Сжать)                        і _MDA_PACK   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Reindex (Переиндексировать)         і _MDA_RINDX  і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і   Имена всплывающих меню в меню Record (Запись)   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплывающее меню Record (Запись)    і _MRECORD    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Append (Добавить)                   і _MRC_APPND  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Change (Изменить)                   і _MRC_CHNGE  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый разделитель                    і _MRC_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Goto... (Перейти...)                і _MRC_GOTO   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Locate... (Определить местополож.)  і _MRC_LOCAT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Continue (Продолжить)               і _MRC_CONT   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Seek... (Искать...)                 і _MRC_SEEK   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 2-ой разделитель                    і _MRC_SP200  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Replace... (Заменить...)            і _MRC_REPL   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Delete... (Удалить...)              і _MRC_DELET  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Recall... (Восстановить...)         і _MRC_RECAL  і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і Имена всплывающих меню в меню Program (Программа) і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплывающее меню Program (Программа)і _MPROG      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Do... (Выполнить...)                і _MPR_DO     і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый разделитель                    і _MPR_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Cancel (Прекратить)                 і _MPR_CANCL  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Resume (Продолжить)                 і _MPR_RESUM  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 2-ой разделитель                    і _MPR_SP200  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Compile... (Компилировать...)       і _MPR_COMPL  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Generate... (Генерировать...)       і _MPR_GENER  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і FoxDoc                              і _MPR_DOCUM  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і FoxGraph...                         і _MPR_GRAPH  і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і   Имена всплывающих меню в меню Window (Окно)     і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
    і  Всплывающие меню и команды         і    Имя      і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і всплывающее меню Window (Окно)      і _MWINDOW    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Hide (Скрыть)                       і _MWI_HIDE   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Hide All (Скрыть все)               і _MWI_HIDEA  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Show All (Показать все)             і _MWI_SHOWA  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Clear (Стереть)                     і _MWI_CLEAR  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 1-ый указатель                      і _MWI_SP100  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Move (Переместить)                  і _MWI_MOVE   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Size (Изменить размер)              і _MWI_SIZE   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Zoom  (Распахнуть)                 і _MWI_ZOOM   і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Zoom  (Минимизировать)             і _MWI_MIN    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Cycle (Перейти по циклу)            і _MWI_ROTAT  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Color... (Цвет...)                  і _MWI_COLOR  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і 2-ой разделитель                    і _MWI_SP200  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Command (Командное окно)            і _MWI_CMD    і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Debug (Отладочное окно)             і _MWI_DEBUG  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і Trace (Окно трассировки)            і _MWI_TRACE  і
    ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
    і View (Окно просмотра)               і _MWI_VIEW   і
    АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              MENU               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Средства создания массива для меню
    Синтаксис
MENU BAR , 

MENU , , [, ]

READ MENU BAR TO ,  [SAVE]
    Замечания
Включена для  совместимости   с   ранними   версиями   -   Используйте
Построитель меню FoxPro для создания меню
    Смотри также
@ ... MENU, CREATE MENU

    Описание
    Средства создания меню включают некоторые команды, которые создают
систему  меню.  Система  меню  состоит  из линейки меню (размещающейся
вверху экрана или  активного  окна),  которая  содержит  пункты  меню.
Каждый пункт  меню имеет соответствующее всплывающее меню,  содержащее
список команд.
    Клавиши управления  курсором используются для выбора пункта меню в
линейке меню.  Когда пункт меню установлен,  вы  можете  выбрать  его,
чтобы  отобразить  под ним список соответствующих ему команд.  Клавиши
управления курсором используются также для перемещения по командам.  В
любой  момент,  когда  во  всплывающем  меню  нажата  клавиша "стрелка
вправо" или "стрелка влево",  будет выбран смежный  пункт  меню.
    Если определено  больше  заголовков меню,  чем может уместиться на
экране или в окне,  то по мере необходимости пункты  меню  могут  быть
прокручены горизонтально.
    Первым шагом  при  создании  нового  меню   является   определение
размеров  и  инициализация  массива для линейки меню.  Следующий шаг -
определение размеров и инициализация массива для каждого списка
команд  меню.  Установите линейку меню,  используя команду MENU
BAR,  и установите каждое отдельное всплывающее меню в  линейке
меню,  используя  серию  команд MENU - одну команду для каждого
всплывающего меню.  Затем активизируйте введенную систему  меню
выполнением команды READ MENU BAR.

    Команды
MENU BAR , 
    Команда MENU  BAR используется для установки линейки меню 
в линейке меню.  Элементы массива    должны  быть  символьного
типа.  По  умолчанию все элементы массива  становятся пунктами
меню.

     является    двумерным    массивом    символьных    строк.
(i,1) является пунктом меню,  появляющимся в  линейке  меню  в
позиции  i.  Если  (i,2)  не пустая символьная строка,  то она
используется как  дополнительное сообщение и будет появляться в
положении, установленном командой SET MESSAGE TO.
    Численное выражение  является числом пунктов меню в линейке
меню.

MENU , , [, ]

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

READ MENU BAR TO ,  [SAVE]

    Эта команда  активизирует  структуру  меню,   определенную   двумя
предыдущими командами.
    Переменные в памяти  и   используются  для  двух
различных целей.  Во-первых,  они управляют пунктом меню () и
командой меню (),  на которые  будет  установлен  курсор  при
начальном отображении линейки меню. Если эти величины не соответствуют
допустимой команде меню,  то установится 1 команда всплывающего меню 1
пункта  меню.  Во-вторых,  они  используются  для возвращения индексов
массивов для пункта  меню  и  команды  меню,  выбранных  в  результате
операции READ MENU. Если ничего не было выбрано, то обе переменные при
возвращении имеют значение 0.
    Если выбрана  опция  SAVE,  то всплывающее меню остается на экране
после выбора команды.  Если эта опция не используется, то после выбора
команды  всплывающее  меню удаляется,  и экран возвращается в исходное
состояние.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

*** Пример программы всплывающего меню MENUS ***
SET STATUS OFF
SET ECHO OFF
SET TALK OFF
SET MESSAGE TO 24 CENTER

*** Инициализация массива для линейки меню ***
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 '

*** Установка размеров и инициализация массива
*** для меню File

DIMENSION M_FILE (7)
M_FILE (1) = 'NEW'
M_FILE (2) = 'OPEN'
M_FILE (3) = 'CLOSE'
M_FILE (4) = '\-'    && Вставка линии между элементов
M_FILE (5) = 'SAVE'
M_FILE (6) = 'PRINT'
M_FILE (7) = 'QUIT'

*** Установка размеров и инициализация массива
*** для меню Edit

DIMENSION M_EDIT (5)
M_EDIT (1) = 'COPY'
M_EDIT (2) = 'FIND'
M_EDIT (3) = 'REPLACE'
M_EDIT (4) = 'UNDO'
M_EDIT (5) = 'CLEAR'

*** Установка размеров и инициализация массива
*** для меню DATA

DIMENSION DATA (9)
DATA (1) = 'BROWSE'
DATA (2) = 'APPEND'
DATA (3) = 'SORT'
DATA (4) = 'JOIN'
DATA (5) = '\-'      && Вставка линии между элементами
DATA (6) = 'TOTAL'
DATA (7) = 'AVERAGE'
DATA (8) = 'COUNT'
DATA (9) = 'SUM'

*** Установка системы меню ***

MENU BAR TOP, 3      && Установка линейки меню
MENU 1, M_FILE, 7, 7  && Установка меню file в линейке меню
MENU 2, M_EDIT, 5, 5  && Установка меню edit в линейке меню
MENU 3, DATA, 9, 9    && Установка меню data в линейке меню

*** Инициализация местоположения команды меню ***

ROW = 1
COL = 1

*** Активизация системы меню ***

READ MENU BAR TO ROW, COL SAVE

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             MENU TO             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Вызывает всплывающее меню
    Синтаксис
MENU TO 
    Замечания
Включена для  совместимости   с   ранними   версиями   -   Используйте
Построитель меню FoxPro для создания меню
    Смотри также
@ ... PROMPT, CREATE MENU

    Описание
    Команда MENU используется для ввода в действие всплывающих меню  в
FoxPro.
    Серия команд @ ...  PROMPT используется для  представления  команд
меню в указанных позициях на экране. Команда MENU TO  вызывает
всплывающее меню,  управляемого  клавишами  курсора  или  мышью,   для
текущих определенных запросов.
    Когда вы перемещаетесь по командам меню,  каждый  запрос  (PROMPT)
визуально выделяется, и появляется дополнительное сообщение, связанное
с этим запросом,  в позиции,  определенной командой  SET  MESSAGE  TO.
Запросы выбираются одним из следующих действий:
    - Нажатием клавиши Enter, когда выделен желаемый запрос
    - Нажатием клавиши, соответствующей начальной букве запроса
    - Щелчком мыши в позиции запроса

    Дополнительные опции

    Переменная в  памяти    используется  для  двух  различных
целей. Во-первых, она может управлять тем, на какую команду меню будет
первоначально указывать курсор, когда меню отобразится на экране. Если
значение  переменной  не  соответствует  допустимым командам меню,  то
начальной считается команда 1. Во-вторых, она может использоваться для
возврата команды  меню,  которая  была выбрана в результате выполнения
операции  READ  MENU.  Возвращаемая  в   процессе   выбора   величина,
определяется тем порядком,  в котором расположены запросы.  Если выход
из меню был осуществлен нажатием клавиши Escape, то переменная получит
значение 0.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              MENU               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает имя текущей активной линейки меню
    Синтаксис
MENU()
    Возвращаемый тип
Численный
    Смотри также
ACTIVATE MENU, CREATE MENU, DEFINE MENU

    Описание
    Функция MENU() возвращает название текущего активного меню в  виде
строки символов,  состоящей из заглавных букв. Если анализируемое меню
не задействовано в данный момент,  MENU() вернет пустую строку.
Для получения названия меню,  это меню должно  быть  определено
командой DEFINE MENU и активизировано командой ACTIVATE MENU.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

CLEAR
DEFINE MENU mainmenu
DEFINE PAD invoices  OF mainmenu PROMPT ' \, [,  ... ])
    Возвращаемый тип
Символьный, дата или численный
    Смотри также
CALCULATE, MAX()

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

    Параметры
, [, ...]
    Используйте набор выражений (,  , ...) одного
типа в  функции  MIN().  Эти  выражения  вычисляются,  и  возвращается
наименьшее значение.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? MIN(54, 39, 40)

39

? MIN(6^6, 10*12, PI())

3.14

? MIN({07/12/18},DATE())

07/12/18

? MIN('a','abc')

a

? MIN('a','XYZ')

XYZ

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              MLINE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает заданную строку из заданного memo поля
    Синтаксис
MLINE(, [, ]
    Параметры
  memo поле, из которого возвращается строка
       Номер возвращаемой строки
       Смещение от начала memo поля
    Возвращаемый тип
Символьный
    Замечание
Усилена: Новая опция для смещения от начала memo поля
    Смотри также
ATCLINE(), ATLINE(),  COPY MEMO,  MEMLINES(), _MLINE, MODIFY MEMO, SET
MEMOWIDTH

    Описание
    Функция MLINE()  возвращает  заданную  строку из memo поля.  Длина
строк и число строк внутри memo поля  определяются  текущим  значением
SET MEMOWIDTH (по умолчанию 50).
    Когда в memo поле ищется символьная строка, вы можете использовать
функцию ATLINE()  или ATCLINE() для возврата номера строки,  в которой
была найдена символьная  строка.  Используйте  этот  номер  в  функции
MLINE() для получения содержания строки из memo поля.

Параметры

    Функция MLINE()  возвращает  строку  из  заданного  вами memo поля
.  Если memo поле находится в базе данных,  открытой не  в
текущей рабочей  области,  расположите перед memo полем псевдоним базы
данных и точку.


    Численное выражение  является номером строки,  возвращаемой
из memo поля.  Если  равно нулю или больше числа строк  в  memo
поле, возвращается нулевая строка.


    Численное выражение   является  смещением  от  начала  memo
поля. Если  вы  используете ,  возвращается -я строка от
смещения .
    Для   обычно  используется  системная  переменная  в памяти
_MLINE.  _MLINE автоматически корректируется  каждый  раз  при  вызове
функции MLINE().
    В рекурсивных процедурах,  которые возвращают  строки  из  больших
memo полей,  более  эффективного  выполнения  можно добиться,  включив
_MLINE в качестве .

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    В примере,  приведенном ниже,  используются  два  метода  возврата
строк из memo поля. Новая запись добавляется в базу данных CUSTOMER, и
заполняется ее memo поле.  Два цикла используют  функцию  MLINE()  для
возврата строк  из  memo  поля.  Заметим  улучшение выполнения второго
цикла, достигнутое  использованием   в   функции   MLINE()   системной
переменной _MLINE.

CLEAR
SET TALK OFF
SET MEMOWIDTH TO 50
CLOSE ALL
USE customer  && Открыть базу данных customer
APPEND BLANK  && Добавить запись
@ 2,2 SAY 'Filling memo field...'
*** Заполнить memo поле ***
FOR outerloop = 1 TO 5  &&  цикл с 5 итерациями
        FOR alphabet = 65 TO 90  &&  буквы от A до Z
                REPLACE comments WITH REPLICATE(CHR(alphabet), 40) ;
                        + CHR(13) ADDITIVE
        NEXT
NEXT

*** Показать все строки из memo поля ***
STORE MEMLINES(comments) TO numlines  && Число строк в memo поле
STORE SECONDS() TO begin     &&  Время начала
FOR count = 1 TO numlines  &&  Цикл по числу строк в  memo поле
        ?MLINE(comments, count)      &&  Показать каждую строку
NEXT
? STR(SECONDS() - begin, 4, 2) + ' seconds'  && Общее время
*** Улучшенный метод с использованием _MLINE в MLINE() ***
*** Показать все строки из memo поля ***
WAIT 'Press a key to see the preferred method' WINDOW
CLEAR
STORE 0 TO _MLINE                && Сбросить _MLINE в ноль
STORE SECONDS() TO begin        && Время начала
FOR count = 1 TO numlines  && Цикл по числу строк в memo поле
        ?MLINE(comments, 1, _MLINE)  &&  Показать каждую строку
NEXT
? STR(SECONDS() - begin, 4, 2) + ' seconds'  && Общее время
SET TALK ON
    
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               MOD               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает остаток,   получившийся   в   результате   деления   одного
численного выражения на другое
    Синтаксис
MOD(, )
    Параметры
  Делимое (число, которое делится)
  Делитель (число, на которое делится делимое)
    Возвращаемый тип
Численный
    Смотри также
%

    Описание
    Функция MOD()   возвращает   остаток,  получившийся  в  результате
деления одного численного выражения  на  другое  численное  выражение.
MOD() возвращает тот же результат, что и оператор %.

    Параметры

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


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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? MOD(36, 10)

6

? MOD(4*9, 90/9)

6

? MOD(YEAR(DATE()),4)

3

? MOD(25.250, 5.0)

0.250

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є  MODIFY COMMAND | MODIFY FILE   є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает окно текстового редактора
    Синтаксис
MODIFY COMMAND  | MODIFY FILE []
        [NOEDIT]
        [NOWAIT]
        [RANGE , ]
         [[WINDOW ]
        [IN [WINDOW]  | SCREEN]]
        [SAVE]
    Смотри также
DO, NOTE | * | &&

    Описание
    Этот формат команды MODIFY открывает окно текстового редактора для
заданного  файла.
    Команды MODIFY  COMMAND  и  MODIFY  FILE   поддерживают   "скелет"
файла,использующий метасимволы  для  открытия  окна редактирования для
файлов, совпадающих с шаблоном файла.
    Несмотря на то, что в файле конфигурации CONFIG.FP с помощью TEDIT
определяется  внешний  текстовый  редактор,  используется   встроенный
редактор FoxPro.
    Когда изменения осуществляются в программных или текстовых файлах,
то измененный файл записывается на диск. Файл с резервной копией (файл
без изменений) с расширением .BAK будет создан,  если вы выбрали  блок
проверки  Make backup в диалоге,  который возникнет,  если вы выберете
команду Preference... (Приоритеты...) в меню Edit (Редактировать).
    Для получения   более   полной   информации   о   команде   MODIFY
COMMAND/FILE обратитесь к разделу "Основы интерфейса"  в  "Руководстве
по интерфейсу" (Interface Guide) по системе FoxPro.

    Дополнительные опции
MODIFY COMMAND 
    Редактирует файлы программ.  Присваивается расширение .PRG. 
может иметь метасимволы (*.prg, A*.prg).

MODIFY FILE 
    Редактирует текстовые файлы. Расширений файлов не присваивается.

NOEDIT
    Опция NOEDIT   не   допускает   модификаций    текста    в    окне
редактирования, открытом  командой  MODIFY  COMMAND  или  MODIFY FILE.
Текст может просматриваться, но не может изменяться.

NOWAIT
    Когда команда   MODIFY   COMMAND   или  MODIFY  FILE  возникает  в
программе, открывается окно  редактирования,  и  выполнение  программы
приостанавливается, пока   окно  редактирования  не  закроется.  Опция
NOWAIT продолжает   выполнение   программы   после    открытия    окна
редактирования. Программа  не  ожидает  закрытия  окна,  а  продолжает
выполнение со строки,  следующей за командой MODIFY COMMAND или MODIFY
FILE.
    Опция NOWAIT возникает неявно,  если вы открываете несколько  окон
редактирования одной   командой   MODIFY   COMMAND   или  MODIFY  FILE
(например, MODIFY COMMAND *.PRG).

RANGE , 
    Опция RANGE  позволяет с уже выбранной областью символов.  Символы
выбираются, начиная с позиции,  заданной численным выражением ,
и вплоть  до  (но  невключая)  позиции,  заданной численным выражением
. Если  равно ,  символы не выбираются,  и курсор
располагается в позиции, заданной  и .

WINDOW 
    Если вы   используете   опцию   WINDOW   ,    окно
редактирования получит  характеристики окна .  Например,
если  было определено  с  опцией  FLOAT  команды  DEFINE
WINDOW, окно  редактирования  сможет  перемещаться.  Окно,  заданное в
опции ,  не обязано быть активным или  видимым,  но  оно
должно быть определено.

IN [WINDOW] 
    Если вы  используете  опцию  IN  WINDOW   ,   окно
редактирования откроется внутри порождающего окна.  Это не присваивает
окну редактирования характеристик окна,  в  котором  оно  открывается.
Когда окно  редактирования  активизируется  внутри  порождающего окна,
редактор не может перемещаться  за  пределы  порождающего  окна.  Если
порождающее окно перемещается, окно редактирования перемещается вместе
с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить окно редактирования.

IN SCREEN
    Вы можете расположить окно  редактирования  на  экране  с  помощью
опции IN  SCREEN.  Эта  опция  позволяет  вам  явно  расположить  окно
редактирования на экране,  вместо расположения  его  внутри  окна.  По
умолчанию, окно редактирования располагается на экране.

SAVE
    Опция SAVE сохраняет окно редактирования на экране после того, как
пользователь   его  покинет.  Обычно,  окна  редактирования,  открытые
командами MODIFY COMMAND и MODIFY FILE, удаляются с экрана после того,
как вы покидаете окна редактирования.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          MODIFY LABEL           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает окно компоновки этикеток
    Синтаксис
MODIFY LABEL [ | ?]
         [[WINDOW ]
        [IN [WINDOW]  | IN SCREEN]]
        [NOENVIRONMENT]
        [NOWAIT]
        [SAVE]
    Замечания
Усилена в FoxPro 2.0: опция NOENVIRONMENT
    Смотри также
CREATE LABEL, LABEL

    Описание
    Команда MODIFY  LABEL  позволяет  вам  интерактивно модифицировать
существующие этикетки или создавать новые этикетки в  окне  компоновки
этикеток.
    Появление команды  MODIFY  LABEL  без  дополнительных   аргументов
вызывает  диалог  Открыть файл.  Если вы выберите кнопку New (Новый) в
диалоге,  окну компоновки этикеток назначается имя UNTITLED.  Когда вы
выйдете из окна компоновки этикеток, вы можете сохранить файл этикеток
с другим именем.
    Более подробную информацию о создании и модификации этикеток можно
найти в "Руководстве  по  интерфейсу"  (Interface  Guide)  и  "Началах
работы" (Getting Started) системы FoxPro.

    Дополнительные опции

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

?
    Если вы используете опцию  ?  или  опустите  опцию  ,  будет
представлен   диалог  Открыть  файл  со  списком  существующих  файлов
этикеток для выбора файла или выбора кнопки New (Новый)  для  создания
нового файла этикеток.

WINDOW 
    Если вы используете опцию WINDOW ,  окно  компоновки
этикеток  получит характеристики окна .  Например,  если
 было определено с опцией FLOAT команды  DEFINE  WINDOW,
окно компоновки этикеток сможет перемещаться.  Окно,  заданное в опции
,  не обязано быть активным или видимым,  но оно  должно
быть определено.
    Окно компоновки этикеток имеет стандартный размер,  который  может
быть  больше,  чем окно .  В этом случае окно компоновки
этикеток  просто  присваивает  характеристики  окна,  в  котором   оно
располагается.   Левый   верхний   угол   окна   компоновки   этикеток
располагается в тех же координатах,  что и  левый  верхний  угол  окна
, и может располагаться за границами .

IN [WINDOW] 
    Если вы  используете  опцию  IN  WINDOW   ,   окно
компоновки   этикеток  откроется  внутри  порождающего  окна.  Это  не
присваивает окну компоновки этикеток характеристик окна, в котором оно
открывается.  Когда  окно  компоновки  этикеток  активизируется внутри
порождающего окна,  оно не может перемещаться за пределы  порождающего
окна.  Если  порождающее  окно перемещается,  окно компоновки этикеток
перемещается вместе с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить окно компоновки этикеток.

IN SCREEN
    Вы можете расположить окно компоновки этикеток на экране с помощью
опции  IN  SCREEN.  Эта  опция  позволяет  вам  явно  расположить окно
компоновки этикеток на экране, вместо расположения его внутри окна. По
умолчанию, окно компоновки этикеток располагается на экране.

NOENVIRONMENT
    Когда вы  создаете  этикетки,  вы  можете  при  желании  сохранить
текущее  состояние  среды  FoxPro  вместе  с файлом описания этикеток.
Сохранение состояния среды FoxPro размещает  дополнительную  запись  в
базе данных описания этикеток. Эта запись содержит имена всех открытых
баз данных и индексных файлов,  индексный порядок и  все  связи  между
базами данных.
    Команда MODIFY  LABEL  автоматически   восстанавливает   состояние
среды,  сохраненное  в  файле  описания этикеток (если состояние среды
было сохранено).  Если вы используете опцию  NOENVIRONMENT,  состояние
среды   не  восстанавливается.  Используйте  опцию  NOENVIRONMENT  для
предотвращения изменений текущего состояния среды.

NOWAIT
    Когда команда MODIFY LABEL возникает в программе, открывается окно
компоновки этикеток,  и выполнение программы приостанавливается,  пока
окно   компоновки  этикеток  не  закроется.  Опция  NOWAIT  продолжает
выполнение  программы  после  открытия   окна   компоновки   этикеток.
Программа не ожидает закрытия окна, а продолжает выполнение со строки,
следующей за командой MODIFY LABEL NOWAIT.
    Эту опцию  возможно  использовать только внутри программ.  Если вы
используете опцию NOWAIT в команде MODIFY LABEL в командном окне,  это
не даст эффекта.

SAVE
    Опция SAVE сохраняет окно  компоновки  этикеток  на  экране  после
того,  как пользователь его покинет. Обычно, окно компоновки этикеток,
открытое командой MODIFY LABEL,  удаляется с экрана после того, как вы
покидаете окно компоновки этикеток.
    Эту опцию возможно использовать только внутри  программ.  Если  вы
используете опцию SAVE в команде MODIFY LABEL в командном окне, это не
даст эффекта.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           MODIFY MEMO           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Модифицирует содержание memo поле
    Синтаксис
MODIFY MEMO [,  ... ]
        [NOEDIT]
        [NOWAIT]
        [RANGE , ]
        [[WINDOW ]
        [IN [WINDOW]  | SCREEN]]
        [SAVE]
    Смотри также
CLOSE MEMO

    Описание
    Команда MODIFY  MEMO открывает окно для редактирования memo поля в
текущей записи базы данных.  Это позволяет вам просмотреть  содержимое
memo поля или сделать и сохранить изменения в memo поле. Если в записи
более одного memo поля,  то вы можете открыть окно  для  каждого  memo
поля.
    Для редактирования нужно определить имя memo поля или список  имен
memo полей. Вы можете также открыть окно редактирования memo полей для
memo полей из других рабочих областей, определив их псевдонимы.
    Для выхода  из окна и сохранения изменений нажмите клавиши Ctrl+W,
или сделайте щелчок мыши на блоке Close (Закрыть).  Для выхода из окна
без сохранения изменений нажмите клавиши Ctrl+Q или Escape.  Вы можете
также закрыть  окно,  дав  команду  CLOSE  MEMO.  Команда  CLOSE  MEMO
сохранит любые изменения,  сделанные в memo поле. Закрытие базы данных
также сохранит все изменения, сделанные в memo поле или memo полях.

    Дополнительные опции
[, ...]
    Одно или несколько memo полей для редактирования.

NOEDIT
    Опция NOEDIT  не  допускает  модификаций  текста  или информации в
окнах редактирования,  открытых  командой  MODIFY  MEMO.  Текст  может
просматриваться, но не может изменяться.

NOWAIT
    Когда команда MODIFY MEMO возникает в программе,  открывается окно
редактирования memo полей,  и выполнение программы приостанавливается,
пока memo окно.  Опция NOWAIT продолжает  выполнение  программы  после
открытия memo окна.  Программа не ожидает закрытия окна,  а продолжает
выполнение со строки, следующей за командой MODIFY MEMO NOWAIT.
    Если команда  MODIFY  MEMO  включает два или несколько memo полей,
опция NOWAIT возникает неявно.
    Если вы используете опцию NOWAIT в команде MODIFY MEMO в командном
окне, это не даст эффекта.

RANGE , 
    Опция RANGE  позволяет с уже выбранной областью символов.  Символы
выбираются, начиная с позиции,  заданной численным выражением ,
и вплоть  до  (но  невключая)  позиции,  заданной численным выражением
. Если  равно ,  символы не выбираются,  и курсор
располагается в позиции, заданной  и .
    Опция RANGE может использоваться с  функциями  AT()  и  ATC()  для
поиска в memo поле заданной символьной строки и последующего выделения
этой строки.

WINDOW 
    Если вы    используете   опцию   WINDOW   ,   окно
редактирования memo полей получит характеристики окна .
Например,  если   было определено с опцией FLOAT команды
DEFINE WINDOW,  окно редактирования memo  полей  сможет  перемещаться.
Окно,  заданное  в опции ,  не обязано быть активным или
видимым, но оно должно быть определено.

IN [WINDOW] 
    Если вы   используете   опцию   IN  WINDOW  ,  окно
редактирования memo полей откроется внутри порождающего окна.  Это  не
присваивает  окну  редактирования  memo  полей  характеристик окна,  в
котором  оно  открывается.  Когда  окно  редактирования   memo   полей
активизируется внутри порождающего окна,  оно не может перемещаться за
пределы порождающего окна.  Если порождающее окно  перемещается,  окно
редактирования memo полей перемещается вместе с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить окно редактирования memo полей.

IN SCREEN
    Вы можете  расположить  окно редактирования memo полей на экране с
помощью опции IN SCREEN. Эта опция позволяет вам явно расположить окно
редактирования  memo  полей на экране,  вместо расположения его внутри
окна.  По умолчанию,  окно редактирования memo полей располагается  на
экране.

SAVE
    Опция SAVE сохраняет окно  редактирования  memo  полей  на  экране
после того,  как пользователь его покинет. Обычно, окно редактирования
memo полей,  открытое командой MODIFY MEMO,  удаляется с экрана  после
того, как вы покидаете его.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

CLOSE ALL
USE customer
MODIFY MEMO comments NOEDIT RANGE 1,20
USE

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           MODIFY MENU           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает окно разработки меню
    Синтаксис
MODIFY MENU [ | ?]
        [[WINDOW ]
        [IN [WINDOW]  | IN SCREEN]]
        [NOWAIT]
        [SAVE]
    Замечания
Новая в FoxPro 2.0
    Смотри также
DEFINE BAR, DEFINE MENU, DEFINE PAD, DEFINE POPUP, SET SYSMENU

    Описание
    Команда MODIFY  MENU  открывает  окно  разработки меню.  Вы можете
модифицировать существующие файлы меню или создавать новые. Информацию
об использовании  компоновщика  меню  можно  найти в главе Компоновщик
меню "Руководства по интерфейсу" (Interface Guide) системы FoxPro.

    Дополнительные опции

    С помощью   имени   файла   описания   меню      вы   можете
модифицировать   существующие  меню.  Если  файл  с  таким  именем  не
существует или не найден, создается новый файл меню.
    Появление команды   MODIFY   MENU  без  дополнительных  аргументов
вызывает диалог Открыть файл.  Выберите  существующий  файл  меню  или
кнопку  New  (Новый).  Если  вы выберите кнопку New (Новый) в диалоге,
окну разработки меню назначается имя UNTITLED.  Когда  вы  выйдете  из
окна разработки меню, вы можете сохранить файл меню с другим именем.

?
    Если вы используете опцию ?, будет представлен диалог Открыть файл
со списком существующих файлов меню для выбора файла или выбора кнопки
New (Новый) для создания нового файла меню.

WINDOW 
    Если вы  используете опцию WINDOW ,  окно разработки
меню  получит  характеристики  окна  .  Например,  если
  было определено с опцией FLOAT команды DEFINE WINDOW,
окно разработки меню  сможет  перемещаться.  Окно,  заданное  в  опции
,  не обязано быть активным или видимым,  но оно должно
быть определено.
    Окно разработки меню имеет стандартный размер,  который может быть
больше,  чем окно .  В этом случае окно разработки  меню
просто  присваивает характеристики окна,  в котором оно располагается.
Левый верхний  угол  окна  разработки  меню  располагается  в  тех  же
координатах,  что  и  левый верхний угол окна ,  и может
располагаться за границами .

IN [WINDOW] 
    Если вы   используете   опцию   IN  WINDOW  ,  окно
разработки меню откроется внутри порождающего окна. Это не присваивает
окну  разработки  меню характеристик окна,  в котором оно открывается.
Когда окно разработки меню активизируется  внутри  порождающего  окна,
оно   не   может  перемещаться  за  пределы  порождающего  окна.  Если
порождающее  окно  перемещается,  окно  разработки  меню  перемещается
вместе с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить окно разработки меню.

IN SCREEN
    Вы можете  расположить  окно  разработки  меню на экране с помощью
опции IN  SCREEN.  Эта  опция  позволяет  вам  явно  расположить  окно
разработки  меню  на экране,  вместо расположения его внутри окна.  По
умолчанию, окно разработки меню располагается на экране.

NOWAIT
    Когда команда MODIFY MENU возникает в программе,  открывается окно
разработки меню,  и выполнение программы приостанавливается, пока окно
разработки  меню  не  закроется.  Опция  NOWAIT  продолжает выполнение
программы после открытия окна разработки меню.  Программа  не  ожидает
закрытия  окна,  а  продолжает  выполнение  со  строки,  следующей  за
командой MODIFY MENU NOWAIT .
    Если вы используете опцию NOWAIT в команде MODIFY MENU в командном
окне, это не даст эффекта.

SAVE
    Во время выполнения программы опция SAVE оставляет окно разработки
меню открытым после того,  как другое окно было выдвинуто  вперед.  Во
время выполнения  программы окно разработки,  открытое командой MODIFY
MENU, закрывается, когда выдвигается другое окно.
    Если вы  используете  опцию SAVE в команде MODIFY MEMO в командном
окне, это не даст эффекта.
    Для закрытия  окна  разработки  меню,  созданного  с  опцией SAVE,
нажмите Ctrl+W,  Ctrl+End,  Ctrl+Q или Escape, сделайте щелчок мыши на
блоке Close  (Закрыть),  или  выберите  команду Close (Закрыть) в меню
Edit (Редактировать).

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         MODIFY PROJECT          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает Окно проекта
    Синтаксис
MODIFY PROJECT [ | ?]
        [[WINDOW ]
        [IN [WINDOW]  | SCREEN]]
        [NOWAIT]
        [SAVE]
    Замечания
Новая в FoxPro 2.0
    Смотри также
BUILD APP, BUILD EXE, BUILD PROJECT, COMPILE, CREATE PROJECT

    Описание
    Команда MODIFY  PROJECT открывает Окно проекта так,  что вы можете
интерактивно модифицировать  или   создавать   проекты.   Проект   это
специальный файл  базы  данных,  который  сохраняет  сведения  о  всех
программах, экранах,  меню,  библиотеках,   отчетах,   базах   данных,
индексах, форматных файлах и т.  д., требуемые для создания прикладных
программ, также как сведения о всех  зависимостях,  ссылках  и  связях
между файлами.  Проектный  файл имеет расширение .PJX и связанных memo
файл (.PJT).  В проекте  вы  задаете  все  компоненты,  требуемые  для
результирующей прикладной программы,  а FoxPro заботится о том,  чтобы
прикладная программа была сгенерирована на основе самых поздних версий
исходных файлов.
    Информацию о Менеджере  проектов  можно  найти  в  главе  Менеджер
проектов "Руководства по интерфейсу" (Interface Guide) системы FoxPro.

    Дополнительные опции

    Существующие проекты  вы  можете  модифицировать,  задав  имя базы
данных описания проекта . Если файл с таким именем не существует
или не найден, может быть создан новый проект.
    Появление команды MODIFY  PROJECT  без  дополнительных  аргументов
вызывает диалог Открыть файл.  Файлу проекта назначается имя UNTITLED.
Когда  вы  выйдете  из  Окна  проекта,  вы  можете  сохранить  проект,
используя другое имя.

?
    Если вы  используете  опцию  ?  или  опустите  имя  файла,   будет
представлен диалог   Открыть   файл  со  списком  существующих  файлов
описаний проектов для выбора файла или выбора кнопки New  (Новый)  для
создания нового проекта.

WINDOW 
    Если вы используете опцию  WINDOW  ,  Окно  проекта
получит  характеристики  окна .  Например,  если  было определено с опцией  FLOAT  команды  DEFINE  WINDOW,  Окно
проекта сможет перемещаться. Окно, заданное в опции , не
обязано быть активным или видимым, но оно должно быть определено.
    Окно проекта имеет стандартный размер,  который может быть больше,
чем окно . В этом случае Окно проекта просто присваивает
характеристики окна,  в котором оно располагается.  Левый верхний угол
Окна проекта располагается в тех же координатах,  что и левый  верхний
угол  окна ,  и может располагаться за границами .

IN [WINDOW] 
    Если вы  используете опцию IN WINDOW ,  Окно проекта
откроется внутри порождающего окна.  Это не присваивает  Окну  проекта
характеристик  окна,  в  котором  оно открывается.  Когда Окно проекта
активизируется внутри порождающего окна,  оно не может перемещаться за
пределы  порождающего окна.  Если порождающее окно перемещается,  Окно
проекта перемещается вместе с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить Окно проекта.

IN SCREEN
    Вы можете расположить Окно проекта на экране с  помощью  опции  IN
SCREEN.  Эта  опция  позволяет  вам  явно  расположить Окно проекта на
экране,  вместо расположения  его  внутри  окна.  По  умолчанию,  Окно
проекта располагается на экране.

NOWAIT
    Когда команда MODIFY PROJECT возникает  в  программе,  открывается
Окно  проекта,  и  выполнение программы приостанавливается,  пока Окно
проекта не закроется.  Опция NOWAIT  продолжает  выполнение  программы
после  открытия  Окна проекта.  Программа не ожидает закрытия окна,  а
продолжает выполнение со строки,  следующей за командой MODIFY PROJECT
NOWAIT.
    Эта опция используется только внутри программ. Использование опции
NOWAIT в команде MODIFY PROJECT в командном окне не даст эффекта.

SAVE
    Опция SAVE оставляет Окно проекта на экране после выхода  из  Окна
проекта.  Обычно,  Окно  проекта,  открытое  командой  MODIFY PROJECT,
удаляется  с  экрана,  когда  вы  покидаете  Окно  проекта.  Если   вы
используете опцию SAVE в команде MODIFY MEMO в командном окне,  это не
даст эффекта.
    
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          MODIFY QUERY           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает окно RQBE
    Синтаксис
MODIFY QUERY [ | ?]
        [NOWAIT]
    Замечания
Новая в FoxPro 2.0
    Смотри также
CREATE QUERY

    Описание
    Команда MODIFY QUERY  позволяет  вам  интерактивно  модифицировать
существующий запрос или создавать новый запрос в окне RQBE.
    Информацию о создании запросов можно  найти  в  главе  Реляционный
запрос на примерах "Руководства по интерфейсу" (Interface Guide) или в
главе Извлечение ваших данных "Начал работы" (Getting Started) системы
FoxPro.

    Дополнительные опции

    Существующий запрос  вы  можете модифицировать,  задав имя запроса
.  Если файл с таким именем не существует или не  найден,  может
быть создан новый запрос.
    Появление команды  MODIFY  QUERY  без  дополнительных   аргументов
вызывает диалог Открыть файл.  Запросу назначается имя UNTITLED. Когда
вы выйдете из окна RQBE,  вы можете сохранить запрос, используя другое
имя. После  того,  как  вы  создали  запрос,  он  сохраняется как файл
программы FoxPro с расширением  .QPR.  Программа  запроса  может  быть
выполнена с помощью команды DO.

?
    Если вы  используете  опцию  ?  или  опустите  имя  файла,   будет
представлен диалог   Открыть   файл  со  списком  существующих  файлов
запросов для выбора файла или ввода имени для создания нового файла.

NOWAIT
    Когда команда MODIFY QUERY возникает в программе, открывается окно
RQBE,  и выполнение программы приостанавливается,  пока окно  RQBE  не
закроется. Опция NOWAIT продолжает выполнение программы после открытия
окна RQBE. Программа не ожидает закрытия окна, а продолжает выполнение
со  строки,  следующей  за  командой  MODIFY  QUERY NOWAIT.  Эта опция
используется только внутри  программ.  Использование  опции  NOWAIT  в
команде MODIFY QUERY в командном окне не даст эффекта.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          MODIFY REPORT          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает окно компоновки отчета
    Синтаксис
MODIFY REPORT [ | ?]
        [[WINDOW ]
        [IN [WINDOW]  | SCREEN]]
        [NOENVIRONMENT]
        [NOWAIT]
        [SAVE]
    Замечания
Усилена в FoxPro 2.0: опция NOENVIRONMENT
    Смотри также
CREATE REPORT, REPORT

    Описание
    Этот формат    команды   MODIFY   используется   для   модификации
существующих файлов описаний отчетов. Файлы описаний отчетов создаются
командой CREATE   REPORT  или  выбором  кнопки  New...  (Новый...)  из
всплывающего меню File (Файл).
    Более подробную  информацию о создании и модификации отчетов можно
найти в "Руководстве  по  интерфейсу"  (Interface  Guide)  и  "Началах
работы" (Getting Started) системы FoxPro.

    Дополнительные опции

    С помощью   имени   отчета      вы   можете   модифицировать
существующие отчеты.  Если файл с таким именем не  существует  или  не
найден, может   быть  создан  новый  отчет.  Для  модификации  отчета,
созданного в FoxBASE+, вы должны включить расширение файла .FRM.
    Появление команды  MODIFY  REPORT  без  дополнительных  аргументов
вызывает диалог Открыть файл.  Отчету назначается имя UNTITLED.  Когда
вы  выйдете  из  окна  компоновки  отчетов,  вы  можете сохранить файл
отчетов с другим именем.  Структура .FRX файлов описана в "Руководстве
разработчика" (Developer's Guide) по системе FoxPro.

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

WINDOW 
    Если вы  используете опцию WINDOW ,  окно компоновки
отчетов получит характеристики окна  .  Например,  если
  было определено с опцией FLOAT команды DEFINE WINDOW,
окно компоновки отчетов сможет перемещаться.  Окно,  заданное в  опции
,  не обязано быть активным или видимым,  но оно должно
быть определено.

IN [WINDOW] 
    Если вы   используете   опцию   IN  WINDOW  ,  окно
компоновки  отчетов  откроется  внутри  порождающего  окна.   Это   не
присваивает окну компоновки отчетов характеристик окна,  в котором оно
открывается.  Когда  окно  компоновки  отчетов  активизируется  внутри
порождающего  окна,  оно не может перемещаться за пределы порождающего
окна.  Если порождающее окно  перемещается,  окно  компоновки  отчетов
перемещается вместе с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить окно компоновки отчетов.

IN SCREEN
    Вы можете  расположить окно компоновки отчетов на экране с помощью
опции IN  SCREEN.  Эта  опция  позволяет  вам  явно  расположить  окно
компоновки отчетов на экране,  вместо расположения его внутри окна. По
умолчанию, окно компоновки отчетов располагается на экране.

NOENVIRONMENT
    Когда вы создаете отчеты,  вы можете при желании сохранить текущее
состояние среды FoxPro вместе с файлом  описания  отчетов.  Сохранение
состояния  среды  FoxPro размещает дополнительную запись в базе данных
описания отчетов. Эта запись содержит имена всех открытых баз данных и
индексных файлов, индексный порядок и все связи между базами данных.
    Команда MODIFY  REPORT  автоматически  восстанавливает   состояние
среды, сохраненное в файле описания отчетов (если состояние среды было
сохранено).  Если вы используете опцию NOENVIRONMENT,  состояние среды
не    восстанавливается.    Используйте    опцию   NOENVIRONMENT   для
предотвращения изменений текущего состояния среды.

NOWAIT
    Когда команда  MODIFY  REPORT  возникает в программе,  открывается
окно компоновки отчетов,  и выполнение  программы  приостанавливается,
пока  окно  компоновки  отчетов не закроется.  Опция NOWAIT продолжает
выполнение программы после открытия окна компоновки отчетов. Программа
не ожидает закрытия окна, а продолжает выполнение со строки, следующей
за командой MODIFY REPORT NOWAIT.
    Эту опцию  возможно  использовать только внутри программ.  Если вы
используете опцию NOWAIT в команде MODIFY REPORT в командном окне, это
не даст эффекта.

SAVE
    Опция SAVE сохраняет окно компоновки отчетов на экране после того,
как   пользователь  его  покинет.  Обычно,  окно  компоновки  отчетов,
открытое командой MODIFY REPORT, удаляется с экрана после того, как вы
покидаете окно компоновки отчетов.
    Эту опцию возможно использовать только внутри  программ.  Если  вы
используете  опцию SAVE в команде MODIFY REPORT в командном окне,  это
не даст эффекта.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          MODIFY SCREEN          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открывает окно компоновки экранов
    Синтаксис
MODIFY SCREEN [ | ?]
        [[WINDOW ]
        [IN [WINDOW]  | IN SCREEN]]
        [NOENVIRONMENT]
        [NOWAIT]
        [SAVE]
    Замечания
Новая в FoxPro 2.0
    Смотри также
CREATE SCREEN

    Описание
    Этот формат   команды   MODIFY   используется   для    модификации
существующих файлов описаний экранов. Файлы описаний экранов создаются
командой  CREATE  SCREEN  или  выбором  кнопки  New...  (Новый...)  из
всплывающего меню File (Файл).

    Дополнительные опции

    С помощью   имени   отчета      вы   можете   модифицировать
существующие экраны.  Если файл с таким именем не  существует  или  не
найден, может быть создан новый экран.
    Появление команды  MODIFY  SCREEN  без  дополнительных  аргументов
вызывает диалог Открыть файл.  Экрану назначается имя UNTITLED.  Когда
вы выйдете из окна компоновки экранов, вы можете сохранить файл экрана
с  другим  именем.  Таблица  структуры  баз  данных  описаний  экранов
приведена в "Руководстве разработчика" (Developer's Guide) по  системе
FoxPro.

?
    Если вы используете опцию ?, будет представлен диалог Открыть файл
со  списком  существующих  файлов  экранов  для выбора файла или ввода
имени для создания нового экрана.

WINDOW 
    Если вы  используете опцию WINDOW ,  окно компоновки
экранов получит характеристики окна  .  Например,  если
  было определено с опцией FLOAT команды DEFINE WINDOW,
окно компоновки экранов сможет перемещаться.  Окно,  заданное в  опции
,  не обязано быть активным или видимым,  но оно должно
быть определено.

IN [WINDOW] 
    Если вы   используете   опцию   IN  WINDOW  ,  окно
компоновки  экранов  откроется  внутри  порождающего  окна.   Это   не
присваивает окну компоновки экранов характеристик окна,  в котором оно
открывается.  Когда  окно  компоновки  экранов  активизируется  внутри
порождающего  окна,  оно не может перемещаться за пределы порождающего
окна.  Если порождающее окно  перемещается,  окно  компоновки  экранов
перемещается вместе с ним.
    Порождающее окно    должно  быть сначала определено
командой DEFINE WINDOW. Окно  должно быть видимым, чтобы
получить окно компоновки экранов.

IN SCREEN
    Вы можете  расположить окно компоновки экранов на экране с помощью
опции IN  SCREEN.  Эта  опция  позволяет  вам  явно  расположить  окно
компоновки экранов на экране,  вместо расположения его внутри окна. По
умолчанию, окно компоновки экранов располагается на экране.

NOENVIRONMENT
    Когда вы создаете экраны,  вы можете при желании сохранить текущее
состояние среды FoxPro вместе с файлом  описания  экранов.  Сохранение
состояния  среды  FoxPro размещает дополнительную запись в базе данных
описания экранов. Эта запись содержит имена всех открытых баз данных и
индексных файлов, индексный порядок и все связи между базами данных.
    Команда MODIFY  SCREEN  автоматически  восстанавливает   состояние
среды, сохраненное в файле описания экранов (если состояние среды было
сохранено).  Если вы используете опцию NOENVIRONMENT,  состояние среды
не    восстанавливается.    Используйте    опцию   NOENVIRONMENT   для
предотвращения изменений текущего состояния среды.

NOWAIT
    Когда команда  MODIFY  SCREEN  возникает в программе,  открывается
окно компоновки экранов,  и выполнение  программы  приостанавливается,
пока  окно  компоновки  экранов не закроется.  Опция NOWAIT продолжает
выполнение программы после открытия окна компоновки экранов. Программа
не ожидает закрытия окна, а продолжает выполнение со строки, следующей
за командой MODIFY SCREEN NOWAIT.
    Эту опцию  возможно  использовать только внутри программ.  Если вы
используете опцию NOWAIT в команде MODIFY SCREEN в командном окне, это
не даст эффекта.

SAVE
    Опция SAVE сохраняет окно компоновки экранов на экране после того,
как   пользователь  его  покинет.  Обычно,  окно  компоновки  экранов,
открытое командой MODIFY SCREEN, удаляется с экрана после того, как вы
покидаете окно компоновки экранов.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         MODIFY STRUCTURE        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Модифицирует структуру базы данных
    Синтаксис
MODIFY STRUCTURE
    Замечания
Усилена в FoxPro 2.0: Возможность добавления индексных тегов
    Смотри также
CREATE

    Описание
    Команда MODIFY  STRUCTURE   открывает   диалог   для   модификации
структуры базы  данных,  открытой  в  текущей рабочей области.  Если в
текущей рабочей области  нет  открытого  файла,  выдается  приглашение
выбрать модифицируемый   файл.  Может  быть  выполнено  редактирование
структуры, включая  добавление  и  удаление  полей,   и   могут   быть
модифицированы имена,  размеры и типы полей. Вы можете также добавлять
индексные теги в базу данных, используя диалог модификации структуры.
    Вы можете  также  модифицировать  структуры  баз  данных с помощью
команды  Setup...  (Настройка...)  всплывающего  меню  Database  (База
данных).  Более подробную информацию о модификации структур баз данных
с помощью интерфейса FoxPro можно  найти  в  параграфе  Меню  Database
(База данных)  "Руководства  по  интерфейсу" (Interface Guide) системы
FoxPro.
    Когда модифицируется  структура  базы  данных,  которая имеет memo
поле, размер блока в memo файле устанавливается  в  текущую  установку
размера блока.  Размер  блока memo файла может быть задан командой SET
BLOCKSIZE.
    FoxPro автоматически  делает  резервную  копию текущей базы данных
перед структурными  модификациями.   После   завершения   модификаций,
данные, содержащиеся   в  резервной  копии  файла  базы  данных  .BAK,
добавляются в  модифицированную  структуру  записей.  Также  создается
резервный файл memo полей с расширением .TBK.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              MONTH              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает численный номер месяца (от 1 до 12) из выражения с датой
    Синтаксис
MONTH()
    Возвращаемый тип
Численный
    Смотри также
CMONTH(), DAY(), YEAR(), SYS()

    Описание
    Функция месяца года MONTH() возвращает номер месяца (от 1  до  12)
из выражения с датой. Январь является месяцем номер 1, а декабрь - 12.
    Параметр

     является  выражением  с  датой,  используемым   в   функции
MONTH(). Выражение  с  датой  может быть функцией,  возвращающей
дату, или переменной в памяти, элементом массива или полей базы данных
типа дата.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Примеры             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

? DATE()

08/12/91

? MONTH(DATE())

8

STORE {05/23/91} TO buy
STORE MONTH(buy + 30) TO month
? month

6

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           MOVE POPUP            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Перемещает всплывающее меню в новое местоположение
    Синтаксис
MOVE POPUP  TO , 
        | BY , 
    Замечания
Новая в FoxPro 2.0
    Смотри также
ACTIVATE POPUP, DEFINE POPUP, SIZE POPUP

    Описание
    Перемещает всплывающее меню,  определенное пользователем, в другое
место на экране или окне.  Всплывающее меню может  быть  перемещено  в
заданную позицию   или  может  быть  перемещено  относительно  текущей
позиции. Если меню,  определенное  пользователем,  было  определено  с
возможностью перемещения, оно не должно быть вначале активизировано.
    Системные всплывающие меню также могут  быть  перемещены.  Задайте
имя системного всплывающего меню (_MSYSTEM,  _MFILE,  _MEDIT,  _MDATA,
_MRECORD, _MPROG  или  _MWINDOW)  в  параметре   .   Для
возвращения системных    всплывающих   меню   в   исходное   положение
используйте команду SET SYSMENU TO DEFAULT.

    Дополнительные опции

    Перемещаемое всплывающее меню.

TO , 
    Перемещает всплывающее меню в заданную позицию экрана или окна.

BY , 
    Перемещает всплывающее меню  в  другую  позицию  относительно  его
текущей   позиции.      задает   число  строк  для  перемещения
всплывающего  меню  (вниз,  если    положительно;  вверх,  если
отрицательно).      задает   число   колонок   для  перемещения
всплывающего меню (вправо,  если    положительно;  влево,  если
отрицательно).

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

CLEAR
DEFINE POPUP movinpop FROM 2,2 TO 20, 17 PROMPT FILES LIKE *.PRG ;
    TITLE 'Programs'
ACTIVATE POPUP movinpop NOWAIT

ON SELECTION POPUP movinpop DO moveproc WITH PROMPT()

FOR count = 1 TO 10
    SIZE POPUP movinpop BY 0,1 && Расширение всплывающего меню
NEXT

FOR count = 1 TO 30
    MOVE POPUP movinpop BY 1,0 && Перемещение всплывающего меню вниз
NEXT

MOVE POPUP movinpop TO -20,50 && Перемещение всплывающего меню вверх
                              && по экрану

FOR count = 1 TO 22
    MOVE POPUP movinpop BY 1,0 && Перемещение всплывающего меню вниз
NEXT

FOR count = 1 TO 10
    SIZE POPUP movinpop BY 0,-1 && Возвращение всплывающему меню
                                && предыдущих размеров
NEXT

FOR count = 1 TO 48
    MOVE POPUP movinpop BY 0,-1 && Возвращение всплывающего меню в
                                && исходную позицию
NEXT

ACTIVATE POPUP movinpop

PROCEDURE moveproc
PARAMETERS choice
DEACTIVATE POPUP movinpop
RELEASE POPUP    movinpop
@ 2,2 SAY 'You selected the file ' + choice

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           MOVE WINDOW           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Перемещает окно в новое местоположение
    Синтаксис
MOVE WINDOW  TO , 
        | BY , 
    Смотри также
ACTIVATE WINDOW

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

    Дополнительные опции

    Перемещаемое окно.

TO , 
    Перемещает окно в заданную позицию экрана или окна.

BY , 
    Перемещает окно в другую позицию относительно его текущей позиции.
 задает число строк для перемещения окна  (вниз,  если  
положительно;  вверх, если отрицательно).  задает число колонок
для перемещения окна (вправо,  если  положительно;  влево, если
отрицательно).

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

DEFINE WINDOW menter FROM 10,4 TO 15,54
ACTIVATE WINDOW menter
WAIT WINDOW
MOVE WINDOW menter TO 15,10

    После того,  как окно menter было определено и активизировано, оно
перемещается.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             MRKBAR              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает значение  "истинно"  (.T.),  если  строка всплывающего меню
помечена
    Синтаксис
MRKBAR(, )
    Параметры
  Имя всплывающего меню
  Номер проверяемой строки
    Возвращаемый тип
Численный
    Замечания
Новая в FoxPro 2.0
    Смотри также
MRKPAD(), SET MARK OF

    Описание
    Функция MRKBAR()   возвращает   логическое    значение,    которое
указывает, является  ли строка всплывающего меню (команда) помеченной.
Строка всплывающего меню может быть помечена,  а  пометка  может  быть
удалена с помощью команды SET MARK.
    Если заданная  строка  всплывающего  меню  помечена,  возвращается
значение "истинно"  (.T.).  Если  строка всплывающего меню не является
помеченной, возвращается значение "ложно" (.F.).

    Параметры

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


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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    В следующем  примере,  называющемся  CNTBAR.PRG,  в системное меню
добавляется пункт  меню.  Всплывающее  меню  ENVIRO   определяется   с
четырьмя пунктами,  которые будут изменять статус указанных элементов.
Пометка располагается  на  строке,  когда  связанный  с  ней   элемент
находится в  состоянии  "ON",  и удаляется из строки,  когда связанный
элемент находится в состоянии "OFF".

DEFINE PAD enviro OF _MSYSMENU PROMPT 'E\ 25
        CASE PRMBAR('enviro', i) = 'Sticky'
                SET MARK OF BAR i OF enviro TO  SET('STICKY') = 'ON'
        ENDCASE
ENDFOR

PROCEDURE enviropop
DO CASE
CASE PROMPT() = 'Status'
        IF MRKBAR('enviro', BAR())
                   SET STATUS OFF
                   SET MARK OF BAR BAR() OF enviro TO .F.
        ELSE
                   SET STATUS ON
                   SET MARK OF BAR BAR() OF enviro TO .T.
        ENDIF
CASE PROMPT() = 'Clock'
        IF MRKBAR('enviro', BAR())
                   SET CLOCK OFF
                   SET MARK OF BAR BAR() OF enviro TO .F.
        ELSE
                   SET CLOCK ON
                   SET MARK OF BAR BAR() OF enviro TO .T.
        ENDIF
CASE PROMPT() = 'Extended Video'
        IF MRKBAR('enviro', BAR())
                   SET DISPLAY TO VGA25
                   SET MARK OF BAR BAR() OF enviro TO .F.
        ELSE
                   SET DISPLAY TO VGA50
                   SET MARK OF BAR BAR() OF enviro TO .T.
        ENDIF
CASE prompt() = 'Sticky'
        IF MRKBAR('enviro', BAR())
                   SET STICKY OFF
                   SET MARK OF BAR BAR() OF enviro TO .F.
           ELSE
                   SET STICKY ON
                   SET MARK OF BAR BAR() OF enviro TO .T.
        ENDIF
ENDCASE
    
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             MRKPAD              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает значение "истинно" (.T.), если пункт меню помечен
    Синтаксис
MRKPAD(, )
    Параметры
  Имя линейки меню
  Номер проверяемого пункта
    Возвращаемый тип
Численный
    Замечания
Новая в FoxPro 2.0
    Смотри также
MRKBAR(), SET MARK OF

    Описание
    Функция MRKPAD()    возвращает    логическое   значение,   которое
указывает,  является ли пункт меню в линейке  меню  помеченным.  Пункт
меню  может  быть  помечен,  а  пометка  может  быть удалена с помощью
команды SET MARK.
    Если заданный пункт меню помечен,  возвращается значение "истинно"
(.T.).  Если пункт меню не является помеченным,  возвращается значение
"ложно" (.F.).

    Параметры

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


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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Примеры             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

***  Программа должна называться PADEXAM.PRG ***
CLEAR
DEACTIVATE MENU mainmenu
DEFINE MENU mainmenu ;
        KEY alt+z BAR AT LINE 1
PUBLIC skipvar
skipvar = .t.

DEFINE PAD invoices  OF mainmenu PROMPT '\])
    Возвращаемый тип
Численный
    Смотри также
COL(), MCOL(), ROW(), WCOLS(), WROWS()

    Описание
    Функция MROW()  возвращает  строку  экрана  или  окна,  в  которой
находится указатель мыши.

    Параметр

    Функция MROW()  возвращает строку,  в которой расположен указатель
мыши,  если в  задана пустая строка.  Строка экрана,  в  которой
расположен  указатель мыши возвращается также,  если опустить  и
при этом нет активного открытого окна.
    Если есть  активное окно,  и  не указано,  то функция MROW()
выдает строку,  в  которой  расположен  указатель  мыши,  относительно
активного окна.  Если вы задаете имя окна в ,  координата строки
возвращается относительного заданного окна.  В обоих  случаях  функция
MROW() возвращает значение -1, если указатель мыши находится вне окна.
    Если MROW() возвращает координату экрана,  то  ее  значение  будет
находиться  в  диапазоне  от  0 до максимального числа строк на экране
минус 1.  Например,  если дисплей работает в режиме EGA25,  то функция
MROW() будет возвращать значения в диапазоне от 0 до 24.
    При получении с помощью этой  функции  координаты  в  виде  строки
окна, ее значение будет в диапазоне от 0 до числа строк в окне минус 1
(или равно -1 в том случае,  когда указатель мыши находится вне окна).
Число строк в окне можно определить с помощью функции WROWS().
    Если  является именем Окна просмотра  или  Окна  отладки,  а
указатель  мыши  находится на верхней границе окна,  MROW() возвращает
ноль. Когда указатель мыши находится на верхней границе любого другого
окна, MROW() возвращает -1.

    Важно!!!
    Если драйвер мыши не был  загружен,  и  нет  окна  вывода,  MROW()
возвращает -1.  Это  позволяет  вам  проверять  наличие  мыши в начале
работы программы.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Второй пример  в  описании  функции  INKEY()  использует   MROW().
Смотрите описание функции INKEY() для примера использования MROW().

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               NDX               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает имя открытого индексного файла .IDX.
    Синтаксис
NDX( [,  | ])
    Параметры
  Позиция (в списке файлов) возвращаемого .IDX файла
  Номер рабочей области для базы данных
   Псевдоним базы данных
    Возвращаемый тип
Символьный
    Смотри также
CDX(), INDEX, MDX(), SET INDEX, SYS(14), TAG(), USE

    Описание
    Функция NDX()   возвращает   имя    открытого    однокомпонентного
индексного файла   .IDX.   Для  возвращения  имен  открытых  составных
индексных файлов .CDX могут использоваться функции CDX() и MDX().

    Параметры

    Обе команды USE и SET  INDEX  TO  поддерживают  индексный  список,
который  позволяет  вам  открывать  индексные  файлы  для базы данных.
Возвращенное имя индексного файла,  определено размещением в индексном
списке.  Например,  если  равно 1,  то возвращается имя первого
индексного  файла,  размещенного  в  списке,  если    равно  2,
возвращается  имя  второго  индексного файла,  и т.  д.  Все составные
индексные файлы .CDX игнорируются.
    Функция возвращает   пустую  строку,  если    больше  числа
индексов .IDX в списке индексных файлов.

 | 
    Если вы  не  задали  рабочую  область или псевдоним,  возвращаются
имена открытых индексных файлов .IDX для базы данных в текущей рабочей
области.
    Вы можете получить имена индексных файлов .IDX,  открытых в другой
рабочей  области,  задав  номер  рабочей области  или псевдоним
базы данных .
    Если в заданной рабочей области нет открытой базы данных,  функция
NDX() возвращает пустую  строку.  Если  нет  базы  данных  с  заданным
псевдонимом,  выдается  сообщение  "Alias  not  found"  ("Псевдоним не
найден").

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             NETWORK             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает значение "истинно" (.T.),  если вы используете  FoxPro/LAN,
сетевую версию FoxPro
    Синтаксис
NETWORK()
    Возвращаемый тип
Логический
    Замечания
FoxPro/LAN
    Смотри также
OS(), VERSION()

    Описание
    Функция NETWORK() возвращает значение  значение  "истинно"  (.T.),
если вы используете FoxPro/LAN. При использовании однопользовательской
версии FoxPro функция возвращает значение "ложно" (.F.).
    Заметим, что  функция  NETWORK()  проверяет не активность сети,  а
только использование FoxPro/LAN.
    Эта функция позволяет использовать в одной программе специфические
команды и функции для одно- и многопользовательского  режимов  работы.
Различные процедуры  могут  выполняться  в  зависимости от логического
значения, возвращаемого функцией NETWORK().
    Следующий пример  программы проверяет,  используется ли FoxPro или
FoxPro/LAN, а также проверяет  версию  DOS.  Выдаются  соответствующие
сообщения.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

CLEAR
SET TALK OFF

STORE NETWORK() TO mnet
STORE OS() TO mdosver

DO CASE

   CASE mnet = .F.           && Однопользовательская версия FoxPro
      ? "This is FoxPro"

   CASE mnet = .T. AND "2." $ mdosver   && FoxPro/LAN, DOS 2.XX
      ? "FoxPro/LAN requires DOS 3.1 or"
      ? "higher to lock records and files"
      ? "You are using " + mdosver

   CASE mnet = .T. AND "3.0" $ mdosver  && FoxPro/LAN, DOS 3.0X
      ? "FoxPro/LAN requires DOS 3.1 or"
      ? "higher to lock records and files"
      ? "You are using " + mdosver
OTHERWISE                           && FoxPro/LAN, DOS 3.1X или старше
      ? "This is FoxPro/LAN"
ENDCASE

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          NOTE | * | &&          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Размещает комментарии в файле программы
    Синтаксис
NOTE []

* []

&& []
    Смотри также
MODIFY COMMAND

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

    Дополнительные опции
NOTE []
    Слово NOTE в начале строки программы  указывает,  что  эта  строка
является комментарием. Например:

NOTE Это комментарий

* []
    Звездочка (*) в начале строки программы указывает,  что эта строка
является комментарием. Например:

* Это комментарий

&& []
    Символы && в конце строки программы указывают,  что далее  следуют
встроенные комментарии. Например:

STORE (20*12) TO payments  && Месячная плата в течение 20 лет

    Встроенные комментарии в конце конструкций IF, DO и FOR ... ENDFOR
повышают читаемость программы.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

NOTE Инициализация переменной;
        номера страницы
STORE 1 to MPGNMBR
* Установка цикла
DO WHILE MPGNMBR <= 25 && Цикл в 25 итераций
   MPGNMBR = MPGNMBR + 1
ENDDO     && Пока MPGNMBR <= 25

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             NUMLOCK             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает текущее состояние режима NumLock  или  устанавливает  режим
NumLock
    Синтаксис
NUMLOCK([])
    Возвращаемый тип
Логический
    Смотри также
CAPSLOCK(), INSMODE()

    Описание
    Эта функция  возвращает  текущее  состояние  режима  NumLock   или
включает  или  выключает режим клавиатуры NumLock.  Функция возвращает
логическое значение "истинно" (.T.) или "ложно" (.F.),  основанное  на
текущей установке режима NumLock.  Если включен режим NumLock (нажатие
клавиши на цифровой клавиатуры возвращает  число),  возвращается  .T..
Если  режим NumLock (нажатие клавиши на клавиатуры перемещает курсор),
возвращается .F..

    Параметр

    Параметр  может  включаться  для  включения  или  выключения
режима  NumLock.  NUMLOCK(.T.)  включает  режим NumLock,  NUMLOCK(.F.)
выключает  его.  Возвращается  логическое  значение,   соответствующее
установке  режима  NumLock  перед  появлением команды NUMLOCK(.T.) или
NUMLOCK(.F.).

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

* Включение режима Set NumLock
oldlock = NUMLOCK(.T.)

* Возврат в исходное состояние
= NUMLOCK(oldlock)

* Переключение режима NumLock в противоположное значение
= NUMLOCK(!NUMLOCK())

    В последних   двух   примерах   знак  равенства  используется  для
выполнения функции NUMLOCK() без возврата значения.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             OBJNUM              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает номер объекта поля GET
    Синтаксис
OBJNUM( [, ])
    Параметры
   Имя поля GET
  Номер уровня READ
    Возвращаемый тип
Численный
    Замечания
Новая в FoxPro 2.0
    Смотри также
@ ... GET, CLEAR READ, _CUROBJ, RDLEVEL(), READ, SHOW GET, SHOW OBJECT

    Описание
    Команды @ ... GET и @ ... EDIT позволяют вам создавать GET объекты
(поля, блоки  проверки,  невидимые,  селективные  и  текстовые кнопки,
всплывающие меню,  списки  и  области  редактирования  текста).  Номер
объекта определяется порядком его создания.

    Параметры

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


    Вложенные команды  READ могут быть получены с помощью команд GET и
команды READ в процедуре, вызванной с помощью READ. Команды READ могут
иметь до   пяти   уровней  вложения.  Для  получения  номера  объекта,
относящегося к  другому  уровню   READ,   используйте   необязательное
численное выражение , задающее номер уровня READ. Если  не
используется, функция  OBJNUM()  возвращает  номер  объекта  GET   для
текущего уровня READ.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

SET TALK OFF
DEFINE WINDOW gotodialog FROM 9, 17 TO 19,61 ;
        FLOAT NOCLOSE SHADOW DOUBLE COLOR SCHEME 5
PRIVATE file,lastobj,enter,tab,shifttab,up,down,left,right

*  Назначение значений клавиш выхода
*
enter    = 13
tab      = 9
shifttab = 15
up       = 5
down     = 24
right    = 4
left     = 19
lastobj  = 1

* Открыть файл базы данных
*
IF EMPTY(DBF())
        file = GETFILE('DBF','Pick a database')
        IF EMPTY(FILE)
                WAIT WINDOW 'Cancelled' NOWAIT
                RETURN
        ENDIF
        USE (file)
ENDIF

* Извлечение полей
*
ACTIVATE WINDOW gotodialog
@ 0,1 TO 8,25
@ 1,3 GET radio PICTURE '@*RVN \ RECCOUNT()
                WAIT WINDOW 'Record out of range' NOWAIT
        ELSE
                GO recordnum
        ENDIF
CASE radio = 4
        IF skipnum+RECNO() > RECCOUNT() OR skipnum+RECNO() < 0
                WAIT WINDOW 'Record out of range' NOWAIT
        ELSE
                SKIP skipnum
        ENDIF
ENDCASE
ENDIF


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