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



 

Часть 8

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           DIFFERENCE            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает относительное фонетическое различие между двумя символьными
выражениями
    Синтаксис
DIFFERENCE(, )
    Возвращаемый тип
Численный
    Смотри также
SOUNEX()

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

    Параметры
, 
     и    задают  символьные   выражения,   сравниваемые
функцией DIFFERENCE().

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

STORE 'Smith'   TO name1
STORE 'Smythe'  TO name2
STORE 'Smittie' TO name3
STORE '' TO name4
? DIFFERENCE(name1, name2)

4

? DIFFERENCE(name1, name3)

4

? DIFFERENCE(name1, name4)

1

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            DIMENSION            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создает массив переменных памяти
    Синтаксис
DIMENSION  ([, ])
        [,  ([, ])] ...
    Замечания
Усилена в FoxPro 2.0:  Массивы могут изменять размерность  без  потери
данных. Массивы также могут передаваться в процедуры по ссылке.
    Смотри также
ADEL(), AELEMENT(),  AINS(),  APPEND FROM ARRAY, ASUBSCRIPT(), COPY TO
ARRAY,  DECLARE,  GATHER,  PUBLIC,  PRIVATE,  SET COMPATIBLE, SCATTER,
STORE

    Описание
    Команда DIMENSION позволяет создавать одно- или двумерные  массивы
переменных   памяти.   По  действию  и  синтаксису  команда  DIMENSION
идентична команде DECLARE.

    Параметры

    Имя создаваемого массива задается  с  помощью  .  В  одной
команде DIMENSION  может  быть  создано  несколько  массивов с помощью
использования дополнительных имен массивов (,  ...).

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

DIMENSION arayone(10)

создает одномерный массив с именем ARRAYONE, содержащий одну колонку и
10 строк.
    Для создания  двумерного массива используйте оба параметра 
и .   задает число строк в  массиве,  а    задает
число колонок  в массиве.  Следующий пример создает двумерный массив с
именем ARRATWO, содержащий две строки и четыре колонки:

DIMENSION arraytwo(2, 4)

    Одной командой  DIMENSION  можно  создать  несколько  массивов.  В
следующем примере  создаются  три  массива  -  ARRAYONE  и ARRAYTWO из
примеров выше, и третий массив с именем ARRAYTHREE:

DIMENSION arrayone(10), arraytwo(2, 4), arraythree(3, 3)

    При описании   массивов   командами    DIMENSION    или    DECLARE
поддерживаются и круглые, и квадратные скобки. Например, следующие две
команды создают идентичные массивы:

DIMENSION arrayone(10), arraytwo[2, 4], arraythree(3, 3)
DIMENSION arrayone[10], arraytwo(2, 4), arraythree[3, 3]

    Элементы массива
    Размерность массива определяет  количество  элементов  в  массиве.
Каждый  элемент  в  массиве может сохранять один "элемент" информации.
Для определения количества элементов,  содержащихся  в  массиве,  надо
умножить число строк () на число колонок ().
    Элементы массива  переменных  памяти  могут  содержать  любой  тип
данных.  При создании массива командами DECLARE или DIMENSION элементы
массива инициализируются  логическим  значением  "ложно"  (.F.).  Если
режим  SET  COMPATIBLE  установлен  в  FOXPLUS  или  OFF (установка по
умолчанию),  то  весь  массив  переменных   памяти   в   целом   может
инициализироваться в одно и тоже значение командой STORE. Например:

DIMENSION y(10, 3)
STORE 'initial' TO y

    Индексы
    Ссылка на  элементы  массива  производится по их индексам.  Каждый
элемент в  массиве  имеет   уникальный   численный   индекс,   который
идентифицирует его.  Если массив одномерный,  индекс элемента является
его номером строки. Например, индекс элемента в третьей строке массива
равен 3.  Элементы  в  двумерных  массивах  идентифицируются  по  двум
индексам. Первый индекс указывает положение элемента в троках массива,
а второй  индекс  указывает  положение  элемента  в  колонках массива.
Например, индексы  элемента  в  третьей  строке  и  четвертой  колонке
массива равны   3,   4.  Более  подробно  индексы  элементов  массивов
обсуждаются в описании функции ASUBSCRIPT() в этом руководстве.
    Индекс или  индексы  первого  элемента  массива  переменных памяти
FoxPro  всегда  равны  1.  Если  массив  двумерный,  он  также   может
идентифицироваться  по  одному  индексу.  Для определения того,  какой
индекс соответствует паре индексов,  элементы  сохраняются  построчно.
Функция AELEMENT()   возвращает   соответствующий   индекс   для  пары
индексов.  Обратно,  функция ASUBSCRIPT() возвращает пару индексов для
одного индекса.

    Изменение размерности массивов
    Вы можете изменить размерность  массива  повторным  использованием
команды DIMENSION.  Размер  массива  может быть увеличен или уменьшен,
одномерный массив может быть преобразован в двумерный и наоборот.
    Для изменения размерности массива используйте его имя.  Если число
элементов в  массиве  увеличивается,  содержание  всех   элементов   в
исходном массиве   копируется   в   массив   с   новой   размерностью.
Дополнительные элементы  массива  получают  значение  "ложно"   (.F.).
Следующий пример    демонстрирует    результат    увеличения   размера
одноэлементного массива:

DIMENSION marray(2)
STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
DISPLAY MEMORY LIKE marray

*** Будет выдано следующее ***

MARRAY    Pub   A
      (  1)   C "A"
      (  2)   C "B"

DIMENSION marray(4)
DISPLAY MEMORY LIKE marray

*** Будет представлен массив с новым размером ***

MARRAY    Pub   A
      (  1)   C "A"
      (  2)   C "B"
      (  3)   L .F.
      (  4)   L .F.

    Если число  элементов  в   массиве   уменьшается,   дополнительные
элементы отсекаются, а существующие данные в этих элементах теряются.
    Если одномерный  массив  преобразуется  в  двумерный,   содержание
исходного одноэлементного массива копируется в новый массив построчно.
В следующем  примере  одномерный  массив  преобразуется  в  двумерный.
Заметим, что   содержание  элементов  одномерного  массива  копируется
сначала в первую строку нового массива, затем во вторую строку и т. д.
Дополнительные элементы получают значение "ложно" (.F.).

DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
DISPLAY MEMORY LIKE marrayone

MARRAYONE    Pub   A
       (  1)    C  "E"
       (  2)    C  "F"
       (  3)    C  "G"
       (  4)    C  "H"

DIMENSION marrayone(2, 3)
DISPLAY MEMORY LIKE marrayone

MARRAYONE    Pub   A
    (   1,   1)   C  "E"
    (   1,   2)   C  "F"
    (   1,   3)   C  "G"
    (   2,   1)   C  "H"
    (   2,   2)   C  .F.
    (   2,   3)   C  .F.

    Когда двумерный  массив  преобразуется  в  одномерный,  содержание
исходного двумерного массива копируется в новый  массив  в  построчном
порядке. Первый  элемент в первой строке становится первым элементом в
одномерном массиве,  второй элемент в первой строке становится  вторым
элементом и т. д.
    Элементы, строки и колонки могут  быть  удалены  или  вставлены  в
одномерный или двумерный массив с помощью функций ADEL() и AINS().
    Команды APPEND  FROM  ARRAY,  COPY  TO  ARRAY,  SCATTER  и  GATHER
позволяют  легко  передавать  данные  между  записями  базы  данных  и
массивами.

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

DIMENSION sample(2,3)
STORE `Goodbye' TO sample(1,2)
STORE `Hello' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
DISPLAY MEMORY

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є        DIR or DIRECTORY         є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Выводит на дисплей оглавление директории на диске
    Синтаксис
DIR | DIRECTORY [[ON] ]
        [[LIKE] [] []]
        [TO PRINTER | TO FILE ]
    Смотри также
DISPLAY FILES, FILER

    Описание
    Команда DIR выводит на дисплей:
    - Имена всех файлов баз данных в текущей директории
    - Число записей в каждом файле
    - Дату последнего обновления каждого файла
    - Размер  каждого  файла  в  байтах  (базы  данных  в оригинальном
      формате FoxBASE специально помечаются как таковые)
    - Число представленных файлов
    - Объем  доступной  памяти на диске
    Выводимая информация относится к текущему устройству и директории,
если не заданы аргументы  и/или .

    Дополнительные опции
[ON] 
    Устройство, на котором располагается директория.

LIKE  
    Опция   является  маршрутом DOS,  описывающим местоположение
директории.  может включать в себя устройство,  если  не  задана
опция [ON] .
    Опция   позволяет  вам  представлять  информацию  о  файлах,
отличных от  баз данных.   является скелетом спецификации файла,
который может   включать   в   себя   метасимволы.    Например,    для
предоставления списка   всех  файлов  программ  в  текущей  директории
используйте DIR *.PRG.

TO PRINTER | TO FILE
    Эта опция  пересылает  список файлов на принтер (TO PRINTER) или в
текстовый файл (TO FILE) .

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

DIR         && Перечисляет базы данных в текущей директории
DIR *.IDX   && Перечисляет индексные файлы в текущей директории
DIR V*.DBF  && Перечисляют базы данных, начинающиеся с V

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            DISKSPACE            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает доступное    пространство    на    дисковом     устройстве,
установленном по умолчанию.
    Синтаксис
DISKSPACE()
    Возвращаемый тип
Численный
    Смотри также
HEADER(), RECSIZE()

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

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

*** Проверка пространстве на диске перед сортировкой ***

USE customer

*** Считывание размера заголовка базы данных ***

dbf_top = HEADER()

*** Вычисление размера базы данных ***

file_size = dbf_top + (RECSIZE() * RECCOUNT() + 1)

IF DISKSPACE() > (file_size * 3)
        @ 5,0 SAY 'Sufficient diskspace to Sort.'
ELSE
        @ 5,0 SAY 'Insufficient diskspace. Sort cannot be done.'
ENDIF

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

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

    Описание
    Команда DISPLAY представляет на экране содержимое  текущего  файла
базы данных.  Она почти идентична команде LIST.  Команда DISPLAY будет
отображать информацию на полном экране или в окне. При заполнении окна
или  экрана  отображение  останавливается.  Для  дальнейшего просмотра
следует нажать любую клавишу или воспользоваться мышью.  Команда  LIST
будет отображать ту же информацию, но без остановок.
    Команда DISPLAY также  используется  для  отображения  результатов
выражений,  которые  могут состоять из литералов,  переменных памяти и
массивов,  полей  базы  данных  и  memo  полей.  Имена   полей   будут
отображаться  вверху экрана,  если не будет выдана команда SET HEADING
OFF.

    Дополнительные опции
FIELDS 
    Если вы не включили опцию FIELDS  с  заданным  списком
полей, будут отображаться все поля базы данных.
    Содержимое memo поля не будет отображаться, если его имя не задано
явно  в  .  Ширина  отображаемых  memo полей определяется
командой SET MEMOWIDTH.


    Вы можете   использовать  область  охвата    представляемых
записей. Будут  представлены  только  записи,  попадающие  в   область
охвата.
    По умолчания область охвата для команды DISPLAY равна NEXT 1.

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

WHILE 
    Если используется  опция WHILE ,  то отображение информации
будет продолжаться,  пока   имеет  значение "истинно" (.T.).

OFF
    Если используется  опция  OFF,  представляется  номер  записи  для
каждой записи.

TO PRINTER | TO FILE 
    Эта опция  пересылает  информацию  на  принтер  (TO PRINTER) или в
текстовый файл (TO FILE) .  Если загружена  установка  принтера,
вывод команды  DISPLAY,  направляемый  в  файл  или на принтер,  будет
использовать установки  принтера.  Вывод   на   принтер   может   быть
представлен с   различными   стилями   и  размерами.  Более  подробную
информацию о  установках  принтера  можно  найти  в  главе  Печатающие
устройства в "Руководстве разработчика" (Developer's Guide) по системе
FoxPro.

NOCONSOLE
    Использование опции  NOCONSOLE  подавляет  вывод  на  экран  или в
активное окно.

NOOPTIMIZE
    Для подавления  оптимизации  Rushmore  команды DISPLAY используйте
опцию NOOPTIMIZE.  Более подробную  информацию  об  режиме  NOOPTIMIZE
можно найти в описании команды SET OPTIMIZE в этом руководстве.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          DISPLAY FILES          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Отображает информацию о файлах на диске
    Синтаксис
DISPLAY FILES
        [ON ]
        [LIKE ]
        [TO PRINTER | TO FILE ]
    Смотри также
DIRECTORY, FILER, LIST FILES

    Описание
    Команда DISPLAY  FILES  используется  для отображения информации о
файлах на диске.  Вы можете просмотреть все файлы на  указанном  диске
или  в  указанной  директории,  или  только те,  которые соответствуют
шаблону , содержащему метасимволы.
    Команда DISPLAY  FILES  без  аргументов  отображает  информацию  о
файлах  базы  данных,  которые  находятся   на   том   диске   или   в
поддиректории,  доступ  к которому имеется по умолчанию.  Отображаемая
информация включает:
    * Имя базы данных
    * число записей в базе данных
    * Дату и время последнего обновления базы данных

    Дополнительные опции
ON 
    Задает устройство или директорию, в которой находятся файлы.

LIKE 
    Ограничивает представляемые файлы шаблоном .  Шаблон  
может содержать метасимволы.

TO PRINTER | TO FILE 
    Эта опция  пересылает  информацию  на  принтер  (TO PRINTER) или в
текстовый файл (TO FILE) .  Если загружена  установка  принтера,
вывод команды  DISPLAY,  направляемый  в  файл  или на принтер,  будет
использовать установки  принтера.  Вывод   на   принтер   может   быть
представлен с   различными   стилями   и  размерами.  Более  подробную
информацию о  установках  принтера  можно  найти  в  главе  Печатающие
устройства в "Руководстве разработчика" (Developer's Guide) по системе
FoxPro.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         DISPLAY MEMORY          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Отображает содержимое переменных памяти и массивов
    Синтаксис
DISPLAY MEMORY [LIKE ]
        [TO PRINTER | TO FILE ]
        [NOCONSOLE]
    Смотри также
DECLARE, DIMENSION, LIST MEMORY, STORE

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

    Дополнительные опции
LIKE 
    Вы можете  выборочно  просмотреть  переменные  памяти  и массивы с
помощью опции  LIKE  .  Выражение  шаблона  файлов  поддерживает
метасимволы. Например,   для  представления  всех  переменных  памяти,
начинающихся с буквы A, используйте команду

DISPLAY MEMORY A*

TO PRINTER | TO FILE 
    Эта опция  пересылает  информацию  на  принтер  (TO PRINTER) или в
текстовый файл (TO FILE) .  Если загружена  установка  принтера,
вывод команды  DISPLAY,  направляемый  в  файл  или на принтер,  будет
использовать установки  принтера.  Вывод   на   принтер   может   быть
представлен с   различными   стилями   и  размерами.  Более  подробную
информацию о  установках  принтера  можно  найти  в  главе  Печатающие
устройства в "Руководстве разработчика" (Developer's Guide) по системе
FoxPro.

NOCONSOLE
    Использование опции  NOCONSOLE  подавляет  вывод  на  экран  или в
активное окно.

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

STORE 'Goodbye' TO sample1
STORE 'Hello' TO sample2
STORE .T. TO texit
STORE .T. TO mexit
DISPLAY MEMORY LIKE sam*
DISPLAY MEMORY LIKE ?exit

    В этом примере создано несколько переменных памяти^ и им присвоены
некоторые  значения.  Затем  команда  DISPLAY  MEMORY  отобразит   все
переменные,   начинающиеся   с  трех  букв  "sam"  и  все  переменные,
содержащие 5 букв и заканчивающиеся "exit".

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         DISPLAY STATUS          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Описание
Отображает статус среды FoxPro
    Синтаксис
DISPLAY STATUS
        [TO PRINTER | TO FILE ]
        [NOCONSOLE]
    Замечания
Усилена в FoxPro 2.0: Предоставляет дополнительную информацию
    Смотри также
LIST STATUS

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

    * Информация о базах данных и индексных файлах:
      - Текущие активные базы данных
      - Текущие активные memo файлы
      - Псевдонимы баз данных
      - Отношения баз данных
      - Текущие активные индексы
      - Ключи индексных файлов
      - Главный индексный файл
      - Структурный файл CDX
      - Теги индексов CDX

    * Информация об открытых файлах низкого уровня:
      - Открытые файлы низкого уровня
      - Номер дескриптора файла для каждого файла низкого уровня
      - Позицию указателя файла для каждого файла низкого уровня
      - Атрибуты чтения/записи для каждого файла низкого уровня

    * Дополнительная информация о среде FoxPro:
      - Используемый файл процедур
      - Тип процессора
      - Маршрут поиска файлов
      - Дисковое устройство, установленное по умолчанию
      - Направление информации для печати
      - Установка границ
      - Текущая рабочая область
      - Установки команд SET
      - Загруженные бинарные модули

    * Сетевая информация (только в FoxPro/LAN):
      - Статус  атрибута  разделения  для  каждого открытого файла баз
        данных
      - Заблокированные  в  данный  момент  записи  в каждом файле баз
        данных
      - Установка использования EXCLUSIVE
      - Установка LOCK
      - Установка MULTILOCK
      - Значение SET REFRESH
      - Значение SET REPROCESS

    Дополнительные опции
TO PRINTER | TO FILE 
    Эта опция  пересылает  информацию  на  принтер  (TO PRINTER) или в
текстовый файл (TO FILE) .

NOCONSOLE
    Использование опции  NOCONSOLE  подавляет  вывод  на  экран  или в
активное окно.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є        DISPLAY STRUCTURE        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Отображает структуру базы данных
    Синтаксис
DISPLAY STRUCTURE [IN  | ]
        [TO PRINTER | TO FILE ]
        [NOCONSOLE]
    Замечания
Усилена в FoxPro 2.0: Отображает индексные теги
    Смотри также
LIST STRUCTURE

    Описание
    Эта форма команды DISPLAY отображает структуру базы данных. Каждое
поле представляется  вместе  с  типом  (символьный,  численный,  дата,
логический или  memo)  и размером.  Если поле численное,  показывается
количество десятичных знаков в поле.
    Также отображается  текущий  число  записей  в  базе данных и дата
создания последней версии. Если база данных имеет связанное с ней memo
поле, отображается  размер блока memo поля.  Также отображается полный
размер всех полей.
    База данных  может  иметь структурный индекс,  который открывается
вместе с базой данных. Если тег в структурном индексе имеет то же имя,
что и  поле  в  базе данных6 и индексирован по этому полю,  после поля
отображается порядок этого тега (восходящий или нисходящий).
    Если сначала  была  выполнена команда SET FIELDS TO,  то с полями,
доступными по этой команде, будет выведен символ "больше чем" (>).

    Дополнительные опции
IN  | 
    По умолчанию, команда DISPLAY STRUCTURE работает с текущей рабочей
областью. Вы  можете  отобразить  структуру  базы  данных,  открытой в
другой рабочей области,  используя номер рабочей  области    или
псевдоним базы данных .

TO PRINTER | TO FILE 
    Эта опция  пересылает  информацию  на  принтер  (TO PRINTER) или в
текстовый файл (TO FILE) .

NOCONSOLE
    Использование опции  NOCONSOLE  подавляет  вывод  на  экран  или в
активное окно.

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

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

    Параметр

    Функция DMY() возвращает выражение даты в европейском формате  для
выражения с датой .

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

? DATE()

09/15/91

SET CENTURY ON
? DMY(DATE())

15 September 1991

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               DO                є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Выполняет командный файл или файл процедур
    Синтаксис
DO 
        [WITH ]
        [IN ]
    Замечания
Усилена в FoxPro 2.0: Опция IN 
    Смотри также
CLEAR, PARAMETERS,  PARAMETERS(),  PRIVATE,  PROCEDURE,  PUBLIC,   SET
DEVELOPMENT, SET PATH, SET PROCEDURE

    Описание
    Команда DO выполняет программу.  Файл программы сам может включать
команды DO. Уровень вложенности команд DO ограничен глубиной 32.
    Когда вы используете команду DO для  выполнения  программы,  будут
выполняться  команды,  содержащиеся  в  выполняющемся файле программы.
Программа будет выполняться до тех пор,  пока  не  возникнет  одна  из
следующих ситуаций:

    * Выполнилась команда RETURN
    * Выполнилась команда CANCEL
    * Выполнилась команда QUIT
    * Достигнут конец файла
    * Появилась еще одна команда DO

    После выполнения   командного   файла   управление   передается  в
вызывающую программу, Командное окно или DOS.
    Выполнение программы   в  директории  и  устройстве,  отличных  от
текущих, из команды Do...  (Выполнить...)  всплывающего  меню  Program
(Программа) изменяет  текущие  директорию  и устройство.  Директория и
устройство выполняющейся программы становятся текущими.
    Если вы  не  использовали  расширение  выполняемого файла,  FoxPro
ищет и выполняет версии программы в следующем порядке:

    * .EXE - Выполняемая версия
    * .APP - Прикладная программа
    * .FXP - Компилированная версия
    * .PRG - Программа

    Для задания  команде  DO  программы  меню,  экрана  или запроса вы
должны задать ее расширение (.MPR, .SPR и .QPR соответственно).

    Дополнительные опции
WITH 
    Опция WITH позволяет вам передать параметры  в  программу.  Список
параметров    содержит   выражения,   переменные  памяти,
литералы, поля баз данных или функции,  определенные пользователем. По
умолчанию, параметры  передаются  в программу или процедуру по ссылке.
Параметр может передаваться по  значению  размещением  его  в  круглых
скобках. Передача  параметров  по  значениям или по ссылкам в функции,
определенные пользователем,  обсуждается  в   описании   команды   SET
UDFPARMS, а  более  подробную  информацию  о передаче параметров можно
найти в описании команды PARAMETER.

IN 
    Опция IN      позволяет   выполнять   процедуру  в  заданном
программном файле .
    Когда программный   файл   найден,   выполняется  процедура.  Если
программный файл не найден,  выдается сообщение "File does not  exist"
("Файл не  существует").  Если  файл найден,  но заданная процедура не
является программным файлом,  выдается сообщение "Procedure not found"
("Процедура не найдена").

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

CLOSE ALL
SET TALK OFF
DEFINE WINDOW customer FROM 3,3 TO 13,57 ;
        FLOAT SHADOW DOUBLE
DEFINE WINDOW panel2 FROM 2, 61 TO 14,74 ;
        FLOAT SHADOW DOUBLE COLOR SCHEME 5
USE customer
ACTIVATE WINDOW customer NOSHOW
@ 3,3 SAY 'Company'
@ 3,14 GET customer.company SIZE 1,35
@ 5,3 SAY 'Contact'
@ 5,14 GET customer.contact SIZE 1,35
@ 7,3 SAY 'City/State'
@ 7,14 GET customer.city SIZE 1,21
@ 7,36 GET customer.state
@ 7,39 GET customer.zip
@ 0,3 SAY 'Customer #'
@ 0,15 SAY cust_id SIZE 1,6
@ 0,36 SAY 'Record #'
@ 0,46 SAY RECNO() SIZE 1,3
ACTIVATE WINDOW panel2
@ 1,2 GET act PICTURE;
        '@*VN Top;Prior;Next;Bottom;\?Quit' ;
        SIZE 1,8,1 DEFAULT 0 VALID actvalid()
READ CYCLE SHOW readshow() COLOR ,r/bg
RELEASE WINDOWS customer,panel2

FUNCTION actvalid
DO CASE
CASE act = 1
        GO TOP
CASE ACT = 2
        DO go_prev
CASE ACT = 3
        DO go_next
CASE act = 4
        GO BOTTOM
CASE act = 5
        CLEAR READ
ENDCASE
SHOW GETS
RETURN 0

FUNCTION readshow
STORE WOUTPUT() TO currwind
IF SYS(2016) = 'customer' OR SYS(2016) = '*'
        ACTIVATE WINDOW customer SAME
        @ 0,15 SAY cust_id SIZE 1,6
        @ 0,46 SAY RECNO() SIZE 1,3
ENDIF
IF NOT EMPTY(currwind)
        ACTIVATE WINDOW (currwind) SAME
ENDIF
RETURN .T.

PROCEDURE go_prev
SKIP -1
IF BOF()
        GO TOP
ENDIF
RETURN

PROCEDURE go_next
SKIP 1
IF EOF()
        GO BOTTOM
ENDIF
RETURN

    В этом примере открывается база данных  CUSTOMER,  и  отображается
первая запись. Вы можете перемещаться вперед, назад, в начало, в конец
и выйти из программы.  При выборе вами соответствующей команды, FoxPro
перемещает указатель   записи   с   помощью  команды  DO,  выполняющей
соответствующую процедуру,  или, если вы выбрали команду Выход (Quit),
программа прекращает работу.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             DO CASE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Выполняет набор команд в зависимости от логического условия
    Синтаксис
DO CASE
        CASE 
                
        [CASE 
                
        ...
        CASE 
                ]
        [OTHERWISE
                ]
ENDCASE
    Смотри также
DO WHILE, FOR ... ENDFOR, IF ... ENDIF, IIF(), SCAN

    Описание
    Команда DO CASE используется для выполнения набора  команд  FoxPro
() в зависимости от результата логического условия.  Когда
выполняется команда   DO   CASE,   рассматриваются    последовательные
логические условия (CASE);  результат проверки определяет, какой набор
команд (если он найдется) будет выполняться.
    Когда первый  раз  встретится  истинное  (.T.)  логическое условие
CASE, выполняются  команды,  следующие  за  ним.   Выполнение   команд
продолжается до  тех пор,  пока не встретится следующее ключевое слово
CASE или ENDCASE. Затем выполнение продолжается с первой команды после
ключевого слова ENDCASE.
    Если логическое условие CASE ложно (.F.),  команды после  него  до
следующего CASE игнорируются.
    Будет выполнены  команды  только  после  одного  CASE  -   первого
истинного логического  условия  CASE.  Все  последующие  истинные CASE
игнорируются.
    Если все  логические  условия CASE оказались ложными,  наличие или
отсутствие ключевого слова OTHERWISE определяет,  будут ли выполняться
дополнительные операторы:
    * Если используется  ключевое  слово  OTHERWISE,  выполняются  все
команды после  него,  и  выполнение  затем  переходит на команды после
ключевого слова ENDCASE.
    * Если  ключевое  слово  OTHERWISE отсутствует,  не выполняется ни
одна из команд, расположенных между DO CASE и ENDCASE.
    Комментарии могут  располагаться  в  той же строке,  что DO CASE и
ENDCASE; при компиляции и выполнении комментарии будут игнорироваться.

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

STORE CMONTH(DATE()) TO month  && Текущий месяц

DO CASE  Вы можете расположить комментарии здесь!
        CASE INLIST(month,'January','February','March')
                STORE 'First Quarter Earnings' TO rpt_title
        CASE INLIST(month,'April','May','June')
                STORE 'Second Quarter Earnings' TO rpt_title
        CASE INLIST(month,'July','August','September')
                STORE 'Third Quarter Earnings' TO rpt_title
        OTHERWISE
                STORE 'Fourth Quarter Earnings' TO rpt_title
ENDCASE   Или вы можете расположить комментарии здесь!

    В этом  примере FoxPro просматривает последовательность логических
условий CASE до тех пор,  пока в одном из  списков  не  будет  найдена
переменная  MONTH.  Соответствующая строка будет записана в переменную
RPT_TITLE, и выполнение оператора DO CASE закончится.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            DO WHILE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Выполняет команды  внутри  цикла,  пока  логическое  условие  остается
истинным
    Синтаксис
DO WHILE 
                
        [LOOP]
        [EXIT]
ENDDO
    Смотри также
DO CASE, EXIT, IF, IIF(), FOR ... ENDFOR, SCAN

    Описание
    В этой   команде   структурного    программирования    вычисляется
логическое выражение  .  Пока    имеет  значение "истинно"
(.T.), выполняется  набор  команд  ,  расположенный  между
ключевыми словами  DO  WHILE и соответствующим ENDDO.  Каждое ключевое
слово DO WHILE должно иметь соответствующее ключевое слово ENDDO.
    Комментарии могут  располагаться  в той же строке,  что DO WHILE и
ENDDO; при компиляции и выполнении комментарии будут игнорироваться.

    Дополнительная опция

    Логическое выражение.  Пока логическое выражение    остается
истинным, выполняются  команды  между  ключевыми  словами  DO  WHILE и
соответствующим ENDDO.


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

LOOP
    Ключевое слово  LOOP  может  располагаться  в любом месте между DO
WHILE и ENDDO. Ключевое слово LOOP возвращает управление назад прямо в
DO WHILE.

EXIT
    Ключевое слово EXIT передает управление из цикла DO WHILE команде,
следующей  первой  после  ключевого  слова ENDDO.  Ключевое слово EXIT
может располагаться в любом месте между DO WHILE и ENDDO.

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

SET TALK OFF
USE payments
julytot = 0

DO WHILE .T.   Вы можете расположить комментарии здесь!
        IF EOF()
                EXIT
        ENDIF
        IF CMONTH(DATE) <> 'July'
                SKIP
                LOOP
        ENDIF
        julytot = julytot + amount
        SKIP
ENDDO   Или вы можете расположить комментарии здесь!
? 'Total of payments for July is '
?? julytot

    В этом примере в цикле DO WHILE  считается  оплата  за  июль.  Это
происходит  до  тех пор,  пока не будет достигнут конец файла ( EOF ).
Цикл заканчивается и результат выводится на экран.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               DOW               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает номер дня в неделе, соответствующего выражению с датой
    Синтаксис
DOW()
    Возвращаемый тип
Численный
    Смотри также
CDOW(), DAY(), SYS()

    Описание
    DOW(),  функция  дня  недели,  возвращает численное значение дня
недели, соответствующее выражению с  датой  .  Оно  представляет
собой  число,  лежащее  в  диапазоне  от 1 (для воскресенья) до 7 (для
субботы).

    Параметр

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

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

STORE {06/06/91} TO daynum
? DOW(daynum)

5

? CDOW(daynum)

Thursday

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              DTOC               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Преобразует выражение с датой в символьное выражение
    Синтаксис
DTOC( [, 1])
    Возвращаемый тип
Символьный
    Смотри также
CTOD(), SET CENTURY, SET DATE, SYS()

    Описание
    DTOC(), символьная функция  даты,  возвращает  символьную  строку,
содержащую   дату,   соответствующую   выражению   с   датой.   Формат
представления даты управляется текущими режимами  SET  CENTURY  и  SET
DATE.

    Параметры

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

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

INDEX ON DTOC(invdate, 1)+invtime TO Timeindx

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

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

STORE CTOD('10/31/91') TO thisdate
? DTOC(thisdate)

10/31/91

STORE DTOC({10/31/91}+90) TO expiredate
? 'Your 90-day warranty expires', expiredate

Your 90-day warranty expires 01/29/92

? DTOC({10/31/91},1)

19911031

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              DTOR               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Преобразует градусы в радианы
    Синтаксис
DTOR()
    Возвращаемый тип
Численный
    Смотри также
COS(), RTOD(), SIN(), TAN()

    Описание
    Функция DTOR() преобразует численное  значение  угла,  заданное  в
градусах,  в значение, заданное в радианах. Функция DTOR() полезна при
работе с тригонометрическими функциями FoxPro  (COS(),  SIN(),  TAN(),
...).  Функция RTOD() может использоваться для преобразования радианов
в градусы.

    Параметр

    Используйте численное  выражение    для   преобразования   в
радианы. Угол, выраженный в формате градусы:минуты:секунды должен быть
преобразован в эквивалентное десятичное представление.

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

? DTOR(0)

0.00

? DTOR(45)

0.79

? DTOR(90)

1.57

? DTOR(180)

3.14

? COS(DTOR(90)

0.00

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              DTOS               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Преобразует выражение даты в символьную строку
    Синтаксис
DTOS()
    Возвращаемый тип
Символьный
    Смотри также
CTOD(), DTOC()

    Описание
    Функция DTOS()  возвращает  восьмиразрядную  символьную  строку  в
формате ГГГГММДД для заданного выражения даты. Эта функция полезна при
индексировании  баз  данных  в  поле  даты.  Это  эквивалентно функции
DTOC(), используемой с необязательным аргументом равным 1.
    На символьную  строку,  возвращаемую функцией DTOS(),  команды SET
DATE и SET CENTURY влияния не оказывают.

    Параметр

    Функция DTOS()  возвращает  символьную   строку,   соответствующую
выражению с датой .

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              EDIT               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
EDIT
        [FIELDS ]
        []
        [FOR ]
        [WHILE ]
        [FREEZE ]
        [KEY  [, ]]
        [LAST]
        [LEDIT] [REDIT]
        [LPARTITION]
        [NOAPPEND]
        [NOCLEAR]
        [NODELETE]
        [NOEDIT | NOMODIFY]
        [NOLINK]
        [NOMENU]
        [NOOPTIMIZE]
        [NORMAL]
        [NOWAIT]
        [PARTITION ]
        [PREFERENCE ]
        [REST]
        [SAVE]
        [TIMEOUT ]
        [TITLE ]
        [VALID [F:]  [ERROR ]]
        [WHEN ]
        [WIDTH ]
        [[WINDOW ]
        [IN [WINDOW]  | IN SCREEN]]
        [COLOR SCHEME  | COLOR ]

    Замечания
Усилена в  FoxPro  2.0:  Ключевые  слова  LEDIT,  LPARTITION,  NOLINK,
NOOPTIMIZE и REDIT;  опции PARTITION,  VALID и WHEN;  поддержка COL(),
ROW(), VARREAD() и SET SKIP
    Смотри также
BROWSE, CHANGE

    Описание
    Команда EDIT  работает  идентично  команде  CHANGE.  Более  полную
информацию можно найти в описании команды CHANGE.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              EJECT              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Устанавливает принтер на начало следующей страницы
    Синтаксис
EJECT
    Смотри также
EJECT PAGE,  ON PAGE,  SET DEVICE, SET PRINTER, PCOL(), PROW(), System
Memory Variables

    Описание
    Использование команды  EJECT подготавливает ваш принтер для печати
следующей страницы. EJECT устанавливает режим "перевод страницы", если
системная   переменная   _PADVANCE   установлена  в  "FORMFEED".  Если
переменная _PADVANCE установлена в  "LINEFEED",  то  будет  установлен
режим "перевод строки".
    EJECT переустанавливает функции  PCOLO  и  PROWO  но  не  изменяет
значения системных переменных _PAGENO и _PFILENO.

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

    В этом  примере  на  печать  выводится  содержимое полей COMPANY и
ADRESS (убедитесь,  что принтер подключен и  находится  во  включенном
состоянии).   Когда   число   напечатанных  строк  станет  больше  62,
переводится страница.

USE customer
SET DEVICE TO PRINTER
DO WHILE NOT EOF()
   @ PROW()+1,10 SAY 'Company: ' + company
   @ PROW()+1,10 SAY 'Address: ' + address1
   @ PROW()+1,1 SAY ''
   IF PROW() > 62
      EJECT
   ENDIF
   SKIP
ENDDO
SET DEVICE TO SCREEN

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           EJECT PAGE            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Перевод страницы в зависимости от условия
    Синтаксис
EJECT PAGE
    Смотри также
EJECT, ON  PAGE,  SET  ALTERNATE,  SET  DEVICE,  SET PRINTER,  PCOL(),
PROW(), System Memory Variables

    Описание
    Команда ON  PAGE  используется для перевода страницы при выводе на
печать. Перевод  страницы  зависит  от  системной  переменной   памяти
_PADVANCE и от того, установлена ли процедура ON PAGE.
    Если системная  переменная  _PADVANCE   установлена   в   значение
"FORMFEED", а  процедура  ON  PAGE не установлена,  команда EJECT PAGE
выполняет следующие действия:
    * На  принтер  посылается команда перевода страницы,  если принтер
      включен.
    * Посылается  _PLENGTH  -  _PLINENO команд перевода строк на экран
      и/или в  альтернативный  файл,  если  альтернативный  файл   был
      открыт.
    * Системная переменная _PAGENO увеличивается на единицу.
    * Системная переменная _PLINENO устанавливается в 0.

    Если системная   переменная   _PADVANCE   установлена  в  значение
"LINEFEED", процедура ON  PAGE  установлена,  а  системная  переменная
памяти  _PLINENO  меньше  номера строки страницы,  заданного в текущей
процедуре ON PAGE, команда EJECT PAGE выполняет следующие действия:
    * На  принтер  посылается  необходимое  количество команд перевода
      строк на принтер,  экран и/или альтернативный файл для  перехода
      на начало новой страницы.

    Если процедура   ON   PAGE  не  установлена,  или  если  системная
переменная памяти _PADVANCE установлена  в  "LINEFEEDS",  а  системная
переменная памяти  больше  числа  строк страницы,  заданного в текущей
процедуре ON PAGE, команда EJECT PAGE выполняет следующие действия:
    * Посылается _PLENGTH - _PLINENO команд перевода строк на принтер,
      экран и/или в альтернативный файл,  если альтернативный файл был
      открыт.
    * Системная переменная _PAGENO увеличивается на единицу.
    * Системная переменная _PLINENO устанавливается в 0.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              EMPTY              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Определяет, является ли выражение пустым.
    Синтаксис
EMPTY()
    Возвращаемое значение
Логическое
    Смотри также
LEN()

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

    Параметр

    В выражение    вы  можете  включать  символьное,  численное,
логическое выражение,  выражение  с датой или имя memo поля в открытой
базе данных.
    Функция EMPTY()  будет  возвращать значение "истинно" (.T.),  если
выражения следующего типа данных содержат следующую информацию:

    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
    і                Оценка типов данных                            і
    ГДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
    і Тип данных і                   Содержание                     і
    ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
    і            і Пустые символы, пробелы, символы табуляции,      і
    і Символьный і символы возврата каретки или перевода строк      і
    і            і или любые комбинации этих символов               і
    ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
    і Численный  і 0                                                і
    ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
    і Дата       і Пустой символ (т. е. CTOD(' '))                  і
    ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
    і Логический і Ложно (.F.)                                      і
    ГДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
    і Memo       і Пустое (не имеет содержания)                     і
    АДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

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

CLOSE ALL
USE customer
SET FILTER TO NOT EMPTY(comments) && Непустое memo поле
BROWSE LAST
SET FILTER TO

    В этом примере база данных CUSTOMER имеет набор фильтров,  который
распознает только записи, не имеющие пустого memo поля (COMMENTS).
    
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               EOF               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает логическое   значение   "истинно",  если  указатель  записи
размещается на конце файла базы данных.
    Синтаксис
EOF([ | ])
    Возвращаемый тип
Логический
    Смотри также
BOF()

    Описание
    Эта функция возвращает логическое значение "истинно"  (.T.),  если
достигается конец файла. "Конец файла" имеет место в том случае, когда

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

    * когда  какая-либо  из  команд  FIND,  LOCATE или SEEK успешно не
завершена.

Функция EOF() возвращает  логическое  значение  "ложно"  (.F.)  в  том
случае, если конец файла не достигнут.

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

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

SET TALK OFF
CLEAR
USE customer
DEFINE WINDOW mskip FROM 9,10 TO 13,65 DOUBLE COLOR SCHEME 5
ACTIVATE WINDOW mskip
@ 1,5 GET mchoice FUNCTION '*HN \ | ?
    Смотри также
DELETE FILE, FILER

    Описание
    Команда ERASE удаляет файл с диска.

    Внимание!!!
    Осторожно используйте эту команду - файлы, удаленные этой командой
не могут быть восстановлены.  Даже если включен режим SAFETY в команде
SET, вы не будете предупреждены перед удалением файла.

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


     является   удаляемым   файлом.   Накладываются    следующие
ограничения:

    * В имя файла должно быть включено расширение

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

    Метасимволы не используются в команде ERASE.

?
    ERASE ?  открывает диалог Open  File  (Открыть  файл),  с  помощью
которого вы можете выбрать удаляемый файл.

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

USE items
COPY STRUCTURE EXTENDED TO temp
USE temp
APPEND BLANK
REPLACE field_name WITH 'allcost'
REPLACE field_type WITH 'N'
REPLACE field_len WITH 10
REPLACE Field_dec WITH 2
CREATE backup FROM temp
USE backup
APPEND FROM items
REPLACE ALL allcost with quantity * price
ERASE temp.dbf

    В этом  примере структура базы данных ITEMS помещается в файл базы
данных с именем TEMP. Информация структуры меняется и из нее создается
новая  база данных ( BACKUP ).  Затем в базу данных BACKUP добавляются
все  записи  из  ITEMS  а  переменные  перемещаются  в  поле  ALLCOST.
Временная база данных ( TEMP ) затем уничтожается.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              ERROR              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает номер ошибки,  соответствующий  ошибке,  которая  захвачена
процедурой ON ERROR.
    Синтаксис
ERROR()
    Возвращаемое тип
Численный
    Смотри также
MESSAGE(), ON ERROR, RETRY, RETURN

    Описание
    Функция  ERROR()  возвращает  номер  ошибки,  вызвавшей появление
состояния ON ERROR. Для возврата значения отличного от 0  стандартная
программа ON ERROR должна быть активна для функции ERROR().
    Когда во   время   выполнения  программы  ошибка  захватывается  в
ловушку, тип ошибки может быть идентифицирован в стандартной программе
ON   ERROR   с  помощью  функции  ERROR().  Затем  перед  продолжением
выполнения программы  могут  быть  предприняты  меры  по  исправлению.
Соответствующее описание ошибки может быть возвращено с использованием
функции MESSAGE().
    Функция ERROR() сбрасывается по командам RETURN или RETRY.
    Для получения сведений о  номерах  ошибок,  которые  приводятся  в
специальном   списке,  и  соответствующих  им  сообщениях  об  ошибках
обратитесь к  Приложению,  даваемому  в   "Руководстве   разработчика"
(Developer's Guide) по системе FoxPro.

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

CLEAR
ON ERROR DO errhand WITH ERROR(), MESSAGE()
* Следующая строка генерирует ошибку,  так как команды BRWSE нет
BRWSE
ON ERROR RETURN

*** Errhand ***
PROCEDURE errhand
PARAMETER errnum,message
@ 23,0 SAY Message+' ERROR: '+STR(Errnum)
RETURN

    Этот пример  представляет  простую   стандартную   программу   для
обработки ошибок, и сообщение, выдаваемое при наличии ошибки.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            EVALUATE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Вычисляет выражение и возвращает результат.
    Синтаксис
EVALUATE()
    Возвращаемый тип
Символьный, численный, дата, логический или memo
    Замечания
Новая в FoxPro 2.0
    Смотри также
TYPE()

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

    Параметр

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Ниже приводятся некоторые примеры команд в командном окне и результаты
этих команд:

? EVALUATE('5 * 4')
20

USE customer
? EVALUATE('customer.contact')
N. Baker

? EVALUATE('DATE()')
10/31/91

STORE 'DATE() = {10/31/91}' TO halloween
? EVALUATE(halloween)
.T.

? TYPE(halloween)
L

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               EXIT              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Выход из циклов DO WHILE, FOR или SCAN
    Синтаксис
EXIT
    Смотри также
DO WHILE, FOR ... ENDFOR, SCAN

    Описание
    Команда EXIT передает управление из тела цикла DO WHILE...  ENDDO,
FOR  ...  ENDFOR  или  SCAN  ...  ENDSCAN  оператору,  непосредственно
следующему за ENDDO, ENDFOR или ENDSCAN.

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

SET TALK OFF
USE payments
julytot = 0

        DO WHILE .T.
                IF EOF()
                        EXIT
                ENDIF
                IF CMONTH(date) <> 'July'
                        SKIP
                        LOOP
                ENDIF
        julytot = julytot + amount
        SKIP
ENDDO
? 'Total of payments for July is '
?? julytot

    В этом примере в цикле DO WHILE до тех пор, пока не встретится EOF
(  конец файла ) считается зарплата.  Когда мы достигнем EOF результат
будет выведен на экран.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               EXP               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Функция EXP()  возвращает  значение  e  в  степени  x,  где x является
численным выражением.
    Синтаксис
EXP()
    Возвращаемый тип
Численный
    Смотри также
LOG(), SET DECIMALS

    Описание
    Математическая функция  EXP()  возвращает  значение e в степени x.
Значение e,  основания натурального  логарифма,  равно  приблизительно
2,71828.  Число  десятичных  разрядов,  возвращаемых  функцией  EXP(),
определяется командой SET DECIMALS.

    Параметр

    Численное выражение  представляет собой показатель степени x
в показательном уравнении e в степени x.

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

? EXP(0)
1.00
? EXP(1)
2.72

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             EXPORT              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Копирует данные из базы данных FoxPro в файл с другим форматом.
    Синтаксис
EXPORT TO 
        [FIELDS 
        [] [FOR ]
        [WHILE ]
        [NOOPTIMIZE]
        [TYPE] DIF | MOD | SYLK | WK1
        | WKS | WR1 | WRK | XLS
    Замечания
Новая в FoxPro 2.0
    Смотри также
APPEND FROM, COPY TO, IMPORT

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

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

     является   новым   файлом,   в   который    FoxPro    будет
экспортировать данные.  Если  вы  не  задали в имени файла расширение,
назначается стандартное расширение для файла данного типа.

FIELDS 
    Если вы включаете опцию FIELDS (Поля) и список полей, то вы должны
задать поля,  копируемые в новый файл. Если же опция FIELDS опущена, в
файл копируются все поля.  Поля memo не копируются в новый файл,  даже
если имя поля memo включается в список полей.


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

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

WHILE 
    Если включается  WHILE  ,  записи будут копироваться,  пока
логическое выражение  равно "истине" (.T.).

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

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

DIF
    Поля базы данных FoxPro становятся векторами (колонками), а записи
становятся кортежами  (строками)  в  DIF   (Формат   Обмена   Данными,
используемый в  VisiCalc)  файле.  Новый файл получит расширение .DIF,
если расширение не задано явно.

MOD
    Файлы MOD, используемые Microsoft's Multiplan версии 4.01.

SYLK
    Файл SYLK   является   форматом   обмена   Символических    Связей
(используемым в   Multiplan),   в  котором  поля  базы  данных  FoxPro
становятся крупноформатной таблицей,  а  записи  становятся  строками.
Файлы SYLK не имеют стандартного расширения.

WK1
    С помощью этой опции из базы  данных  FoxPro  может  быть  создана
крупноформатная   таблица   Lotus   1-2-3.   Крупноформатной   таблице
назначается расширение .WK1 (для использования  в  Lotus  1-2-3  2.x).
Поля базы данных становятся колонками в новой крупноформатной таблице;
записи в базе данных становятся строками таблицы.

WKS
    С помощью  этой  опции  из  базы  данных FoxPro может быть создана
крупноформатная   таблица   Lotus   1-2-3.   Крупноформатной   таблице
назначается  расширение  .WKS  (для  использования в Lotus 1-2-3 1-A).
Поля базы данных становятся колонками в новой крупноформатной таблице;
записи в базе данных становятся строками таблицы.

WR1
    С помощью этой опции из базы  данных  FoxPro  может  быть  создана
крупноформатная   таблица   Lotus  Symphony.  Крупноформатной  таблице
назначается расширение  .WK1  (для  использования  в  Symphony  версии
1.10).  Поля  базы данных становятся колонками в новой крупноформатной
таблице; записи в базе данных становятся строками таблицы.

WRK
    С помощью этой опции из базы  данных  FoxPro  может  быть  создана
крупноформатная   таблица   Lotus  Symphony.  Крупноформатной  таблице
назначается расширение  .WK1  (для  использования  в  Symphony  версии
1.01).  Поля  базы данных становятся колонками в новой крупноформатной
таблице; записи в базе данных становятся строками таблицы.

XLS
    С помощью включения  опции  XLS  база  данных  FoxPro  может  быть
скопирована  в крупноформатную таблицу Microsoft Excel версии 2.  Поля
базы данных становятся колонками в крупноформатной таблице;  записи  в
базе данных  становятся строками таблицы.  Расширение .XLS назначается
новой крупноформатной таблице, если вы явно не задали иное расширение.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            EXTERNAL             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Предупреждает менеджер проектов о неопределенной ссылке.
    Синтаксис
EXTERNAL ARRAY | LABEL | LIBRARY
        | MENU | PROCEDURE | REPORT
        | SCREEN
        
    Замечания
Новая в FoxPro 2.0
    Смотри также
BUILD APP, BUILD PROJECT

    Описание
    Команда EXTERNAL используется для  включения  файлов  и  обработки
неопределенных ссылок в проекте, созданном менеджером проектов FoxPro.
Команда EXTERNAL    используется    только   менеджером   проектов   и
игнорируется во время выполнения программы.  Если  вы  не  используете
менеджер  проектов  для  вашей  прикладной программы,  то вам не нужно
использовать команду EXTERNAL.
    Более подробную информацию о создании проектов с помощью менеджера
проектов можно   найти  в  главе  Проект  -  Основные  организационные
средства в "Руководстве разработчика" (Developer's Guide)  по  системе
FoxPro.
    Файлы, заданные с помощью команды EXTERNAL будут включены в проект
менеджером проектов.   Вы   должны  включать  ключевые  слова  (LABEL,
LIBRARY, MENU,  PROCEDURE, REPORT или SCREEN) перед именами файлов для
того, чтобы  указать  менеджеру  проектов  тип  файлов,  включаемых  в
проект.
    Менеджер проектов  должен  быть  также предупрежден о имени файла,
содержащем именованное    выражение    или    макроподстановку.    Это
обеспечивает то,  что все нужные файлы будут включены в проект при его
создании. Кроме того,  менеджер проектов должен  быть  предупрежден  о
массивах, созданных  в  другой процедуре,  или функциях,  определенных
пользователем.
    Более подробную    информацию    о    именованных   выражениях   и
макроподстановках можно найти в  первой  главе  и  параграфе  &  этого
руководства. Во   всех   возможных   случаях  используйте  именованные
выражения вместо макроподстановок для ускорения выполнения.
    Для идентификации  типов  файлов  или  массивов в команде EXTERNAL
возможны различные ключевые слова.  За ключевым словом  следуют  имена
файлов или  имена  массивов.  Вы можете включить несколько имен файлов
или массивов  после  ключевого  слова,  если  будете  разделять  имена
запятыми. Ниже    приводятся   ключевые   слова   и   обсуждается   их
использование и примеры:

    Дополнительные опции
ARRAY
    Когда массив  создается  в  программе,  а  затем  используется   в
программе более  низкого  уровня,  включите  EXTERNAL  ARRAY  с именем
массива в программе более низкого уровня.
    В следующем  примере  первая  программа  создает  массив  с именем
INVOICE. Массив инициализируется, и вызывается программа более низкого
уровня DISPINVO.  DISPINVO показывает содержание массива, созданного в
программе  более  высокого  уровня.  Команда  EXTERNAL  ARRAY  INVOICE
включается для предупреждения менеджера проектов.

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

DIMENSION invoice(4)
STORE 'Paid' TO invoice
DO dispinvo

*** Программа dispinvo ***

PROCEDURE
EXTERNAL ARRAY invoice
? invoice (1)
? invoice (2)
? invoice (3)
? invoice (4)
RETURN

*** Конец программы dispinvo ***

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

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

DIMENSION firstarray(2) && Создание массива
EXTERNAL ARRAY arraytwo && Имя массива, используемого в ФОП
SET TALK OFF
STORE 10 TO firstarray(1)
STORE  2 TO firstarray(2)
= ADDTWO(@firstarray)   && Передача массива по ссылке в ФОП

FUNCTION ADDTWO
PARAMETER arraytwo
CLEAR
arraytwo(1) = arraytwo(1) +2
arraytwo(2) = arraytwo(2) +2
? arraytwo(1)
? arraytwo(2)

LABEL
    LABEL указывает менеджеру проектов, что файл, который вы включаете
в  косвенную  ссылку  на  файл  или макроподстановку,  является файлом
определений этикеток. Более подробную информацию о создании этикеток в
FoxPro можно найти в описании команды CREATE LABEL.

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

EXTERNAL LABEL dunlabel  && Должна существовать форма метки dunlabel
STORE 'dunlabel' to labelfile
LABEL FORM (labelfile) PREVIEW

LIBRARY
    Включайте LIBRARY,  когда  имя  файла  библиотеки  используется  в
косвенной ссылке на файл или макроподстановке в команде SET LIBRARY.

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

EXTERNAL LIBRARY regress  && Должна существовать библиотека regless
STORE 'regless' TO statfunc
SET LIBRARY TO (statfunc)

MENU
    Если файл определений меню включается в косвенную ссылку  на  файл
или макроподстановку,  включайте ключевое слово MENU и имя файла меню.
Меню может быть создано с  помощью  компоновщика  меню  FoxPro.  Более
подробную информацию о компоновщике меню можно найти в "Руководстве по
интерфейсу" (Interface Guide) системы FoxPro.

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

EXTERNAL MENU pickfile  && Должно существовать меню pickfile
STORE 'pickfile' TO sysmenpad1
MODIFY MENU (sysmenpad1)

PROCEDURE
    PROCEDURE используется  для  идентификации  внешней  процедуры или
функции, определенной пользователем.

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

EXTERNAL PROCEDURE delblank  && Должна существовать процедура delblank
STORE 'delblank' TO trimblanks
DO (trimblanks) WITH 'A B C D E'

REPORT
    REPORT указывает менеджеру проектов,  что имя файла, включаемого в
косвенную ссылку на файл или макроподстановку,  является именем  файла
определений  отчета.  Более  подробную информацию о создании отчетов в
FoxPro можно найти в описании команды CREATE REPORT.

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

EXTERNAL REPORT overdue  && Должен существовать отчет overdue
STORE 'overdue' TO reportfile
REPORT FROM (reportfile) PREVIEW

SCREEN
    Если файл определений экрана включается в косвенную ссылку на файл
или макроподстановку,  включайте ключевое слово  SCREEN  и  имя  файла
экрана. Экраны   могут  создаваться  с  помощью  компоновщика  экранов
FoxPro. Более подробную информацию о компоновщике экранов можно  найти
в "Руководстве по интерфейсу" (Interface Guide) системы FoxPro.

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

EXTERNAL SCREEN dataentr  && Должен существовать экран dataentr
STORE 'dataentr' TO reportfile
MODIFY SCREEN (reportfile)

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            FCHSIZE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Изменяет размер  файла,  открытого  низкоуровневой  функцией  работы с
файлами.
    Синтаксис
FCHSIZE(, )
    Параметры
  Дескриптор файла.
  Желаемый размер файла.
    Возвращаемый тип
Численный
    Смотри также
FCLOSE(), FCREATE(),  FEOF(),  FFLUSH(),  FGETS(),  FOPEN(),  FPUTS(),
FREAD(), FSEEK(), FWRITE()

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

    Важно!!!
    Эта функция часто используется для усечения файла до длины 0.

    Параметры

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


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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FCLOSE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Подавляет и   закрывает   файл  или  коммуникационный  вход,  открытый
низкоуровневой функции работы с файлами.
    Синтаксис
FCLOSE()
    Возвращаемый тип
Логический
    Смотри также
CLOSE ALL,  FCHSIZE(),  FCREATE(), FEOF(), FFLUSH(), FGETS(), FOPEN(),
FPUTS(), FREAD(), FSEEK(), FWRITE()

    Описание
    Эта низкоуровневая  функция  работы  с  файлами  подавляет   файл,
открытый низкоуровневой функцией работы с файлами, из памяти на диск и
закрывает его.
    В том   случае,   если   файл  успешно  закрыт,  функция  FCLOSE()
возвращает значение "истинно" (.T.) и выключает указатель файла.  Если
файл  не  может  быть  закрыт,  функция  FCLOSE()  возвращает значение
"ложно" (.F.).
    CLOSE ALL  может  также использоваться для закрытия низкоуровневых
файлов.

    Параметр

    Численный дескриптор файла  присваивается  при  создании  файла  с
использованием   функции   FCREATE()   или   при   открытии   файла  с
использованием функции FOPEN().  Для закрытия  низкоуровнего  файла  с
помощью FCLOSE(),  задайте  дескриптор  файла  в  численном  выражении
.
    Если коммуникационный  порт  был  открыт  с помощью низкоуровневой
команды, он может быть закрыт с  помощью  задания  дескриптора  файла,
назначенного порту при открытии.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FCOUNT              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает число полей в открытой базе данных.
    Синтаксис
FCOUNT([ | ])
    Возвращаемый тип
Численный
    Смотри также
DBF(), FSIZE(), NDX(), SYS(7)

    Описание
    Функция FCOUNT() возвращает число полей в открытой базе данных.

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

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

CLOSE ALL
SELECT 0
USE salesrep
SELECT 0
USE customer
? FCOUNT('CUSTOMER')        && Число полей в Customer.dbf

10

? FCOUNT('SALESREP')        && Число полей в Salesrep.dbf

7

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FCREATE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Создает и открывает файл.
    Синтаксис
FCREATE(  [, ])
    Параметры
  Имя создаваемого файла
  Атрибуты DOS, назначаемые файлу.
        Возможные значения смотрите в таблице ниже.
    Возвращаемый тип
Численный
    Смотри также
CLOSE ALL,  FCHSIZE(),  FCLOSE(),  FEOF(), FFLUSH(), FGETS(), FOPEN(),
FPUTS(), FREAD(), FSEEK(), FWRITE()

    Описание
    Функция FCREATE() представляет собой низкоуровневую функцию работы
с   файлами,   которая   создает  новый  файл  и  открывает  файл  для
использования.  Если файл  с  заданным  именем  уже  существует,  файл
перезаписывается.
    Помимо этого,  функция  FCREATE()  присваивает   файлу   численный
дескриптор файла   для   идентификации  его  в  других  низкоуровневых
функциях работы  с  файлами  системы  FoxPro.  Когда  файл  создается,
FCREATE() возвращает число дескриптора файла. Если файл никак не может
быть создан, возвращается значение -1.
    С помощью FCREATE() вы не можете открыть коммуникационный порт, но
вы можете  это  сделать  низкоуровневой  функцией  работы  с   файлами
FOPEN().

    Параметры

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


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

                      I========================================I
                      I       Номера атрибутов файла           I
                      I========================================I
                      I    Атрибуты файла                I
                      I========================================I
                      I   0      Чтение/Запись (по умолчанию)  I
                      I----------------------------------------I
                      I   1      Только чтение                 I
                      I----------------------------------------I
                      I   2      Сокрытие                      I
                      I----------------------------------------I
                      I   3      Только чтение/Сокрытие        I
                      I----------------------------------------I
                      I   4      Система                       I
                      I----------------------------------------I
                      I   5      Только чтение/Система         I
                      I----------------------------------------I
                      I   6      Система/Сокрытие              I
                      I----------------------------------------I
                      I   7      Только чтение/Сокрытие/СистемаI
                      I========================================I

    Информация о  файлах,  создаваемых  и открываемых с использованием
функции FCREATE(), может быть представлена в виде списка для вывода на
экран  или  печатающее  устройство по команде DISPLAY STATUS.  Команда
DISPLAY STATUS предоставляет следующую информацию,  касающуюся файлов,
открытых или созданных низкоуровневыми функциями работы с файлами:
    - имя устройства, директории и файла для каждого открытого файла
    - номер указателя файла для каждого файла
    - позиция указателя файла в каждом файле
    - атрибуты чтения/записи каждого файла

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

IF FILE('errors.txt')              && Существует ли файл?
        errfile = FOPEN('errors.txt',12) && Если да, открыть
                                         && для чтения/записи
ELSE
        errfile = FCREATE('errors.txt')  && Если нет, создать его
ENDIF
IF errfile < 0                     && Проверить наличие ошибки
                                   && открытия файла
        WAIT 'Cannot open or create output file' WINDOW NOWAIT
ELSE                               && Если нет ошибки, записывать
                                   && в файл
        =FWRITE(errfile, 'Error information to be written here')
ENDIF

=FCLOSE(errfile)                   && Закрыть файл
MODIFY FILE errors.txt NOWAIT      && Открыть файл в окне
                                   && редактирования
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FEOF               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Определяет, расположен ли указатель файла на конце файла
    Синтаксис
FEOF()
    Возвращаемый тип
Логический
    Смотри также
FCHSIZE(), FCLOSE(),  FCREATE(),  FGETS(),  FOPEN(), FPUTS(), FREAD(),
FSEEK(), FWRITE()

    Описание
    Эта низкоуровневая  функция  работы  с файлами возвращает значение
"истинно" (.T.),  если указатель файла позиционирован  в  конце  файла
(EOF).В  том случае,  если указатель файла не находится в конце файла,
функция FEOF() возвращает значение "ложно (.F.).

    Параметр

    Включайте дескриптор файла  для  файла,  который  вы  хотите
проверить на  выполнение  условия  достижения  конца  файла.  Если  вы
зададите дескриптор  файла  для  коммуникационного  порта,   открытого
функцией FOPEN(),  FEOF()  всегда  будет возвращать значение "истинно"
(.T.). Низкоуровневые функции работы с  файлами  FOPEN()  и  FCREATE()
используются для  назначения  дескриптора  файла  переменной в памяти.
Обычно,  задается этой переменной в памяти.

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

*** Открыть файл test.txt ***

file_handle = FOPEN('test.txt')

*** Переместить указатель на BOF ***

m_position = FSEEK(file_handle, 0)

*** Если указатель файла находится на BOF и EOF, файл пуст ***
*** В противном случае, файл должен что-нибудь содержать ***

IF FEOF(file_handle)
        WAIT WINDOW 'This file is empty!' NOWAIT
ELSE
        WAIT WINDOW 'This file has something in it!' NOWAIT
ENDIF

= FCLOSE(file_handle)

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FERROR              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает ноль,  если  последняя  низкоуровневая  функция  работы   с
файлами не вызвала ошибки
    Синтаксис
FERROR()
    Возвращаемый тип
Численный
    Смотри также
FCHSIZE(), FCLOSE(),  FCREATE(),  FEOF(),  FFLUSH(), FGETS(), FOPEN(),
FPUTS(), FREAD(), FSEEK(), FWRITE()

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

I====================================================================I
I            Номера ошибок и причины их возникновения                I
I====================================================================I
I 2  Файл не найден                                                  I
I--------------------------------------------------------------------I
I 4  Открыто слишком много файлов (за пределами указателей)          I
I--------------------------------------------------------------------I
I 5  Доступ не допускается                                           I
I--------------------------------------------------------------------I
I 6  Задан неразрешенный указатель файла                             I
I--------------------------------------------------------------------I
I 8  Вне пределов памяти                                             I
I--------------------------------------------------------------------I
I 25 Ошибка поиска (поиск не может осуществляться до запуска файла)  I
I--------------------------------------------------------------------I
I 29 Диск полон                                                      I
I--------------------------------------------------------------------I
I 31 Ошибка, связанная с открытием файла или общий отказ (встретилосьI
I    условие EOF ("конец файла"))                                    I
I====================================================================I

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

    Следующий пример создает и открывает временный файл  для  элемента
данных. Если файл создается успешно, программа создает окно ввода, где
вы можете ввести первое имя,  последнее имя и позицию.  Эта информация
затем записывается  во  временный  файл.  FWRITE() не помещает возврат
каретки в конец строки.  FPUTS()  помещает  возврат  каретки  в  конец
строки.

SET TALK OFF
CLEAR
tmpfile = SYS(3)          && Создать имя временного файла
handle = FCREATE(tmpfile) && Открыть временный файл

IF handle < 0             && Ошибка, возникшая при создании файла
   DO CASE                && Определение вида ошибки
     CASE FERROR() = 4
       reason = 'Too many files open (out of handles)'
     CASE FERROR() = 5
       reason = 'Access denied'
     CASE FERROR() = 8
       reason = 'Out of memory'
     CASE FERROR() = 29
       reason = 'Disk full'
     CASE FERROR() = 31
       reason = 'General Failure'
   ENDCASE
  *** Показ ошибки ***
  WAIT WINDOW 'Can't create file: '+ reason NOWAIT
  RETURN
ELSE                      && Файл создан успешно
  DEFINE WINDOW wingets FROM 10,20 TO 18,60 ;
    CLOSE FLOAT SHADOW SYSTEM ;
    COLOR SCHEME 8 TITLE ' Name Entry '
  ACTIVATE WINDOW wingets
  @ 1,5 SAY "First Name:" GET fname DEFAULT SPACE (15)
  @ 3,5 SAY "Last Name :" GET lname DEFAULT SPACE (15)
  @ 5,5 SAY "Position  :" GET pos DEFAULT SPACE (15)
  READ
  =FWRITE(handle,'First name: ') && Вывод информации,
  =FPUTS(handle,fname)           && введенной пользователем
  =FWRITE(handle,'Last name: ')
  =FPUTS(handle,lname)
  =FWRITE(handle, 'Position: ')
  =FPUTS(handle,pos)
  =FCLOSE(handle)                && Закрытие файла
  DEACTIVATE WINDOW wingets
  WAIT 'Press a key to view the file' WINDOW
ENDIF
IF !WEXIST('wingets')
  DEFINE WINDOW wingets FROM 10,20 TO 18,60 ;
    CLOSE FLOAT SHADOW SYSTEM ; COLOR SCHEME 8 TITLE ' Name Entry '
ENDIF

MODIFY FILE (tmpfile) NOWAIT WINDOW wingets && Просмотр файла
CLEAR WINDOW  && Удаление окна

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FFLUSH              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Подавляет в памяти и сбрасывает на диск файл,  открытый низкоуровневой
функцией работы с файлами
    Синтаксис
FFLUSH()
    Возвращаемый тип
Логический
    Смотри также
FCHSIZE(), FCLOSE(),  FCREATE(),  FEOF(),  FGETS(),  FOPEN(), FPUTS(),
FREAD(), FSEEK(), FWRITE()

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

    Параметр

    Включайте дескриптор файла  для файла, подавляемого на диск.
Низкоуровневые  функции  работы  с   файлами   FOPEN()   и   FCREATE()
используются  для  назначения  дескриптора  файла переменной в памяти.
Обычно,  задается этой переменной в памяти.
    Команда FLUSH отличается от функции FFLUSH().  FLUSH не работает с
файлами,  открытыми при использовании низкоуровневых функций работы  с
файлами FOPEN() или FCREATE().

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

    Следующий пример   открывает  файл  INPUT.DAT  (создавая  его  при
необходимости), и осуществляет запись в него. После записи первых двух
строк программа  подавляет буферы для гарантии того,  что строки будут
записаны на диск.  Программа записывает следующие  две  строки,  снова
подавляет буферы и закрывает файл.

IF FILE('input.dat')
        test_file = FOPEN('input.dat',2)
ELSE
        test_file = FCREATE('input.dat')
ENDIF

io_bytes = FWRITE(test_file,'Test output')
io_bytes = FWRITE(test_file,' for low level file I/O')
flush_ok = FFLUSH(test_file)

io_bytes = FWRITE(test_file,'Test output2')
io_bytes = FWRITE(test_file,' for low level file I/O')
flush_ok = FFLUSH(test_file)

close_ok = FCLOSE(test_file)

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FGETS              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает серию  байтов  из  файла   или   коммуникационного   порта,
открытого низкоуровневой функцией работы с файлами
    Синтаксис
FGETS( [, ])
    Параметры
  Дескриптор файла
  Число возвращаемых байтов
    Возвращаемый тип
Символьный
    Смотри также
FCHSIZE(), FCLOSE(),  FCREATE(),  FEOF(),  FFLUSH(), FOPEN(), FPUTS(),
FREAD(), FSEEK(), FWRITE()

    Описание
    Функция FGETS()   возвращает   серию   байтов   из    файла    или
коммуникационного  порта,  пока не встретится символ возврата каретки.
Применяя серию вызовов функции FGETS()  ,  вы  можете  считывать  файл
последовательно по строкам.
    Функция FGETS()  возвращает  серию  байтов  из  файла  как  строку
символов.  Байты  возвращаются,  начиная с позиции указателя файла,  и
этот процесс продолжается до тех  пор,  пока  не  встречается  возврат
каретки.    Затем    указатель   файла   позиционируется   на   байте,
непосредственно следующим за возвратом  каретки.  Возврат  каретки  не
возвращается   как   часть   строки.  Функцией  FGETS()  подачи  строк
игнорируются.

    Параметры

    Включайте дескриптор файла  в FGETS() для получения  данных
их файла или коммуникационного порта.  Низкоуровневые функции работы с
файлами FOPEN() и FCREATE() используются  для  назначения  дескриптора
файла переменной в памяти.  Обычно,  задается этой переменной в
памяти.


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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FIELD              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает имя поля в базе данных
    Синтаксис
FIELD( [,  | ])
    Параметры
  Номер поля
  Номер рабочей области для базы данных
   Псевдоним базы данных
    Возвращаемый тип
Символьный
    Смотри также
FCOUNT()

    Описание
    Функция FIELD()  возвращает  имя  поля  в  базе  данных,   которое
соответствует номеру поля .

    Параметры

     задает номер поля.  Если  является 1,  возвращается
имя первого поля базы данных,  если 2,  то имя второго поля  и  т.  д.
Пустая  строка  будет  возвращаться в том случае,  если  больше
числа полей  в  базе  данных.  Имена  полей  возвращаются  в  символах
верхнего регистра.

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

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

CLOSE ALL
USE items
STORE FIELD(1) TO field
DISPLAY EVAL(field)

Record# ITEM
      1 10001D
? FIELD(6)

TAXABLE

? FIELD(7) && В базе данных ITEMS.DBF существуют 6 полей,
           && возвращена пустая строка

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FILE               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает значение "истинно", если файл может быть найден на диске
    Синтаксис
FILE()
    Возвращаемый тип
Логический
    Смотри также
FULLPATH(),LOCKFILE(), SYS(3)

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

    Параметр

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

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

? FILE('foxuser.dbf')

.T.

? FILE('c:\foxpro2\tutorial\customer.dbf')

.T.

? IIF(FILE('c:\foxpro2\nul'), 'Directory exists', 'No directory')

Внимание!!!
    Вы можете  проверять  существование  директории  с помощью функции
FILE(). Проводите проверку для имени файла NUL.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FILER              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Открывает "настольное" средство работы с файлами
    Синтаксис
FILER [LIKE ] [NOWAIT]
        [IN [WINDOW]  | SCREEN]
    Смотри также
COPY FILE, DELETE FILE, DIRECTORY, ERASE, RENAME

    Описание
    Вызов FILER открывает "настольное" средство работы с файлами.
    Сpедство Filer пpедоставляет эффективный механизм для содержания в
порядке своих твердых и гибких дисков.  С его помощью можно копировать
файлы, создавать директории,  выполнять пересылку и  удаление  файлов.
Можно  также  просматривать  и изменять атрибуты файлов,  осуществлять
поиск заданных файлов,  переименовывать  файлы  или  проверять  размер
одного или группы файлов.  Более подробную информацию о средстве Filer
можно найти  в  главе  Меню  Filer  в  "Руководстве   по   интерфейсу"
(Interface Guide) системы FoxPro.

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

NOWAIT
    Когда команда FILER  вызывается  из  программы,  открывается  окно
Filer,  и выполнение программы приостанавливается,  пока окно Filer не
будет закрыто.  При включении режима NOWAIT после открытия окна  Filer
выполнение программы продолжается.  Программа не ждет закрытия окна, а
продолжает свою работу со следующей программной  строки.

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

IN [WINDOW] SCREEN
    Вы можете задать открытие Filer на экране, включив опции IN WINDOW
SCREEN или IN SCREEN. Это стандартное размещение.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FILTER              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает выражение фильтра, заданное командой SET FILTER
    Синтаксис
FILTER([ | ])
    Параметры
  Номер рабочей области для базы данных
  Псевдоним базы данных
    Возвращаемый тип
Символьный
    Смотри также
SET FILTER

    Описание
    Функция FILTER() возвращает выражение фильтра,  заданное  командой
SET FILTER.  Пустая  строка  возвращается,  если фильтр не находится в
рабочем состоянии. Более подробную информацию о создании фильтра можно
найти в описании команды SET FILTER в этом руководстве.

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

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

CLOSE ALL
SELECT 0
USE customer

SET FILTER TO !EMPTY(comments)
?FILTER()
.NOT.EMPTY(COMMENTS)

STORE FILTER('customer') TO savefilt  && Сохранить выражение фильтра
SET FILTER TO state = 'OH'
?FILTER()
STATE="OH"

SET FILTER TO &savefilt  && Восстановить фильтр
?FILTER()
.NOT.EMPTY(COMMENTS)

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FIND               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Поиск записи в индексированном файле базы данных
    Синтаксис
FIND 
    Замечания
Включена для  совместимости  с  ранними версиями - Используйте команду
SEEK
    Смотри также
EOF(), FOUND(), INDEX, LOCATE, RECNO(), SEEK, SET EXACT, SET NEAR

    Описание
    Команда FIND  перемещает  указатель  на первую запись базы данных,
чей индексный ключ соответствует символьной  строке  .  Эта
команда   требует,   чтобы   текущая   выбранная   база   данных  была
индексирована и чтобы этот индекс был  разрешен.  Соответствие  должно
быть точным, несмотря на то, что команда SET EXACT установлена в OFF.

    Если команда  FIND  найдет соответствующую запись,  команда RECNOO
вернет номер этой записи,  FOUND() вернет значение "истинно" (.T.),  а
функция EOF() вернет значение "ложно" (.F.).

    Если команда   FIND  не  найдет  соответствующую  запись,  команда
RECNO() вернет число записей в базе данных плюс один,  FOUND()  вернет
значение  "ложно"  (.F.),  а  функция  EOF() вернет значение "истинно"
(.T.).

    Если команда SET NEAR установлена  в  ON  и  работа  функции  FIND
оказалась безуспешной,  то  указатель будет установлен после ближайшей
соответствующей записи.  Функция RECNO() с аргументом 0  вернет  номер
ближайшей соответствующей записи.  Если команда SET NEAR установлена в
OFF,  и поиск прошел безуспешно указатель будет  установлен  на  конец
файла, но функция RECNO (0) вернет номер ближайшей подходящей записи.

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

    Если вы хотите найти содержимое символьной переменной  памяти,  то
ей должна предшествовать макро-функция (&).

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

USE Customer ORDER company  && Открыть файл и установить порядок
SET EXACT OFF
STORE 'Jeannie' TO mval
FIND &mval                  && Поиск 'Jeannie'
IF FOUND ()
   DISPLAY
ENDIF

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             FKLABEL             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает имя  функциональной  клавиши,  соответствующей   численному
выражению
    Синтаксис
FKLABEL()
    Возвращаемый тип
Символьный
    Смотри также
FKMAX(), SET COMPATIBLE, SET FUNCTION

    Описание
    Функция FKLABEL() возвращает имя функциональной клавиши  (F1,  F2,
F3 ...)       по      соответствующему      номеру      функциональной
клавиши. Функциональные  клавиши  могут  быть  определены  с   помощью
команды SET   FUNCTION.  Значение,  возвращаемое  функцией  FKLABEL(),
зависит от состояния SET COMPATIBLE.  Когда COMPATIBLE  установлено  в
FOXPLUS (по  умолчанию),  возвращаются  функциональные клавиши.  Когда
COMPATIBLE установлена в DB4,  возвращаются функциональные  клавиши  и
комбинации функциональных клавиш (F1,  Ctrl+F1, Shift+F1, F2, Ctrl+F2,
Shift+F2 ...).

    Параметр

    Номер функциональной клавиши задается с помощью  .  Значение
  должно  лежать  в  диапазоне  между  0 и числом функциональных
клавиш минус один. В том случае, если , больше числа имеющихся в
распоряжении функциональных   клавиш,   функция  FKLABEL()  возвращает
пустую строку.  Максимальное число функциональных  клавиш  может  быть
определено с помощью функции FKMAX().

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

? FKLABEL(0)

F1

? FKLABEL(45)  && Больше, чем FKMAX(), возвращается пустая строка

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FKMAX              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает число программируемых функциональных клавиш или  комбинаций
функциональных клавиш
    Синтаксис
FKMAX()
    Возвращаемый тип
Численный
    Смотри также
FKLABEL(), SET COMPATIBLE, SET FUNCTION

    Описание
    Функция FKMAX()   возвращает    полное    число    программируемых
функциональных клавиш или комбинаций функциональных клавиш,  пригодных
для использования с вашей клавиатуры.
    Значение, возвращаемое функцией FKMAX(),  зависит от состояния SET
COMPATIBLE.  Когда COMPATIBLE установлено в  FOXPLUS  (по  умолчанию),
возвращается число функциональных клавиш. Когда COMPATIBLE установлена
в  DB4,  возвращается  число  функциональных   клавиш   и   комбинаций
функциональных клавиш (F1,  Ctrl+F1,  Shift+F1,  F2, Ctrl+F2, Shift+F2
...).

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

SET COMPATIBLE DB4
? FKMAX()

29


SET COMPATIBLE FOXPLUS
? FKMAX()

12

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FLOCK              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Делает попытку заблокировать файл  базы  данных  и  в  случае  удачной
попытки возвращает значение "истинно"
    Синтаксис
FLOCK([ | ])
    Возвращаемый тип
Логический
    Замечания
FoxPro/LAN
    Смотри также
LOCK(), RLOCK(),   SET  REPROCESS,  SET  RELATION,  UNLOCK,  USE,  SET
EXCLUSIVE

    Описание
    Функция FLOCK()  делает  попытку  заблокировать  файл базы данных.
Если попытка удачная,  функция возвращает  значение  "истинно"  (.T.).
Если запись   или   файл   базы   данных   уже   заблокированы  другим
пользователем, то при попытке заблокировать этот файл  функция  вернет
логическое значение  "ложно"  (.F.).  Вы  можете  использовать функцию
FLOCK() как в окне команд, так и в программе.
    Если попытка  заблокировать  файл базы данных завершилась успешно,
доступ к  файлу  открыт  на  чтение  и  запись  только   пользователю,
выполнившему блокировку. Остальным пользователям сети файл базы данных
доступен только на чтение.  Информацию о блокировке файла и запрещении
всех видов  доступа другим пользователям можно найти в описании команд
SET EXCLUSIVE и USE.
    База данных    остается    заблокированной,   пока   пользователь,
выполнивший блокировку,  ее не разблокирует.  База данных  может  быть
разблокирована при помощи команды UNLOCK, закрытия базы данных или при
выходе из системы FoxPro/LAN.  Базы  данных  могут  быть  закрыты  при
помощи команд USE, CLEAR ALL или CLOSE DATABASE.
    По умолчанию,  функция FLOCK() делает одну  попытку  заблокировать
файл. Если  вы  хотите автоматически повторить блокировку файла,  если
первоначальная попытка  была  неудачной,   используйте   команду   SET
REPROCESS.
    Если первоначальная  попытка  блокировки   была   неудачной,   SET
REPROCESS управляет  числом попыток или промежутком времени повторения
попыток. Информацию  о  том,  как  команда  SET  REPROCESS   управляет
процессом блокировки  можно  найти  в описании команды SET REPROCESS в
этом руководстве.
    С помощью  команды  SET  RELATION можно связать две или более базы
данных. Блокировка  одной  из  связанных  баз  данных   не   блокирует
связанные с  ней  базы.  Вы  должны  явно блокировать и разблокировать
каждый файл в связанных базах данных.

    Внимание!!!
    Если FLOCK() неудачно пыталась заблокировать файл,  она возвращает
значение "ложно";  при этом НЕ возникает ошибка. Поэтому, вы не можете
использовать FLOCK() как переключатель в процедуре ON ERROR.

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

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

CLOSE ALL
SET REPROCESS TO 3 SECONDS
USE salesrep

IF FLOCK()

        *** Инициализация полей ***

        REPLACE ALL ytdcomm  WITH 0.00
        REPLACE ALL ytdsales WITH 0.00
        WAIT 'Initialization Complete - Press any key' WINDOW NOWAIT

ELSE

        *** Файл заблокирован; предупреждение пользователя ***

        WAIT WINDOW 'Unable to open sales file, try again later!' NOWAIT
ENDIF

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FLOOR              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Возвращает ближайшее целочисленное значение,  которое меньше или равно
значению численного выражения
    Синтаксис
FLOOR()
    Возвращаемый тип
Численный
    Смотри также
CEILING(), ROUND(), INT()

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

    Параметр

    Функция FLOOR()  возвращает  ближайшее   целочисленное   значение,
которое  меньше  или  равно  выражению  .

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

STORE  10.09 TO num1
STORE -10.01 TO num2
STORE  10.00 TO num3
STORE -10.00 TO num4

? FLOOR(num1)
 10
? FLOOR(num2)
-11
? FLOOR(num3)
 10
? FLOOR(num4)
-10

WAIT WINDOW STR(FLOOR(num1+num3)) NOWAIT
@ 5,0 SAY FLOOR (18.1)

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FLUSH              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Сохраняет модификации базы данных и индекса на диске
    Синтаксис
FLUSH
    Смотри также
CLOSE, FFLUSH(), SET AUTOSAVE

    Описание
    Команда FLUSH гарантирует, что модификации, которые вы производите
в базах  данных  и  их  индексах,  сохраняются  на диске.  Сохраняются
модификации всех открытых баз данных и индексов.
    FoxPro автоматически сохраняет модификации на диск, когда:
    - Вы закрываете базу  данных,  используя  команду  CLOSE. На диске
      сохраняется информация только о закрываемом файле или файлах.
    - Вы  разблокируете  запись  или  файл.   На   диске   сохраняется
      информация только о разблокируемой записи или файле.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              FOPEN              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

    Назначение
Открывает файл   или   коммуникационный   порт   для   низкоуровневого
использования
    Синтаксис
FOPEN( [, ])
    Параметры
  Имя файла или коммуникационного порта
  Атрибуты чтения/записи файла или схема буферизации.  Возможные
        значения приводятся в таблице в этом параграфе.
    Возвращаемый тип
Численный
    Смотри также
CLOSE ALL,  FCHSIZE(), FCLOSE(), FCREATE(), FEOF(), FFLUSH(), FGETS(),
FPUTS(), FREAD(), FSEEK(), FWRITE()

    Описание
    Функция FOPEN()  открывает  файл  или  коммуникационный  порт  для
использования низкоуровневыми функциями работы с  файлами.  Если  файл
или коммуникационный  порт  успешно  открыт,  возвращается  дескриптор
файла или порта.  FOPEN() возвращает -1, если файл или порт невозможно
открыть.
    Команда CLOSE ALL может использоваться для закрытия всех  открытых
файлов низкого уровня.
    Информация о файлах,  открытых при использовании функции  FOPEN(),
может быть  представлена  на  экране  или  распечатана  на  печатающем
устройстве с помощью команд DISPLAY STATUS или  LIST  STATUS.  Команды
DISPLAY STATUS  и  LIST  STATUS  предоставляют  следующую  информацию,
касающуюся файлов низкого уровня:
    - имя устройства, директории и файла для каждого открытого файла
    - дескриптор файла для каждого файла
    - позиция указателя файла в каждом файле
    - атрибуты чтения/записи каждого файла

    Параметры

    Включите в  имя файла  или  коммуникационного  порта  (COM1,
COM2 ...)  для  открытия его.  Если  является именем файла,  оно
может включать в себя полное путевое имя,  если файл  не  находится  в
текущей директории.   Если  не  указано  полное  путевое  имя,  FoxPro
осуществляет поиск файла в следующем порядке:
    - текущая директория
    - маршрут, установленный для FoxPro
    Если   является  именем коммуникационного порта,  порт перед
этим должен быть инициализирован с помощью команды DOS MODE COM.


    Вы можете   задать   атрибуты   чтения/записи   файла   или  схему
буферизации с помощью . Следующая таблица перечисляет допустимые
значения .

    I=========================================================I
    I               Атрибуты и буферизация                    I
    I=========================================================I
    I I Атрибуты чтения/записи       I Буферизация      I
    I=========================================================I
    I 0     I Только чтение (по умолчанию) I Буферизованный   I
    I---------------------------------------------------------I
    I 1     I Только запись                I Буферизованный   I
    I---------------------------------------------------------I
    I 2     I Чтение и запись              I Буферизованный   I
    I---------------------------------------------------------I
    I 10    I Только чтение                I Небуферизованный I
    I---------------------------------------------------------I
    I 11    I Только запись                I Небуферизованный I
    I---------------------------------------------------------I
    I 12    I Чтение и запись              I Небуферизованный I
    I=========================================================I

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

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

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

IF FILE('errors.txt')              && Существует ли файл?
  errfile = FOPEN('errors.txt',12) && Если да, открыть файл
                                   && для чтения/записи
ELSE
  errfile = FCREATE('errors.txt')  && Если нет, создать его
ENDIF
IF errfile < 0                     && Проверить наличие ошибки
                                   && открытия файла
  WAIT 'Cannot open or create output file' WINDOW NOWAIT
ELSE                               && Если нет ошибок,
                                   && осуществить запись в файл
  =FWRITE(errfile, 'Error information to be written here')
ENDIF

=FCLOSE(errfile)                   && Закрыть файл
MODIFY FILE errors.txt NOWAIT      && Открыть файл
                                   && в окне редактирования


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