г---------------------------------¬ ¦ RESUME ¦ L---------------------------------- Назначение Возобновление работы приостановленной программы Синтаксис RESUME Смотри также CANCEL, CLEAR, RETURN, SUSPEND ----------------------------------- Описание Команда RESUME вызывает продолжение работы приостановленной программы. Приостановленная программа начнет свою работу со стро- ки, на которой выполнение программы было приостановлено. Выполне- ние программы может быть приостановлено при помощи команды SUSPEND. Используйте команды RESUME и SUSPEND для отладки. Текущее состояние среды FoxPro (переменные памяти, окна, линейки меню и всплывающие меню) может быть исследовано после приостановки рабо- ты любой программы. Полезно очистить (использовать команду CLEAR) экран или окно до приостановки программы для того, чтобы любые команды, введен- ные после приостановки программы, не мешали последующему вводу и выводу данных в экран или окно. г---------------------------------¬ ¦ RETRY ¦ L---------------------------------- Назначение Повторное выполнение предыдущей команды Синтаксис RETRY Смотри также ON ERROR, RETURN, SET REPROCESS ----------------------------------- Описание Команда RETRY возвращает управление вызывающей программе и повторно выполняет строку, которая была выполнена последней в той программе. Команда RETRY подобна команде RETURN за тем исключени- ем, что команда RETURN передает управление следующей строке в вы- зывающей программе, а не вызывает повторное выполнение самой пос- ледней выполненной строки. Команда RETRY особенно полезна в том случае, когда некоторое множество команд должно быть повторено до наступления определен- ного события или в процедурах обработки ошибок. В FoxPro/LAN, сетевой версии FoxPro, команда RETRY обычно ис- пользуется для повтора команды, пока запись или файл не станут доступны для использования. Команда SET REPROCESS может использо- ваться для управления возвратом на команду, которая не имела дос- тупа к записи или файлу. В большинстве сетевых ситуаций предпоч- тительней использовать команду SET REPROCESS. Пример программы В этом примере распечатываются записи из базы данных CUSTOMER. Если произошла ошибка, выполняется PROCEDURE, названная STOP. STOP высвечивает сообщение WAIT для проверки принтера, и когда происходит нажатие клавиши, происходит возврат в программу к команде, на которой произошла ошибка. CLOSE ALL SET ESCAPE ON SET TALК OFF USE customer CLEAR ON ERROR DO stoр SET DEVICE TO PRINTER SCAN @ PROW()+1,10 SAY 'Comрany: ' + comрany ENDSCAN SET DEVICE TO SCREEN ON ERROR PROCEDURE stoр IF ERROR() = 125 WAIT WINDOW 'Please check your рrinter' SET DEVICE TO PRINTER RETRY ENDIF RETURN г---------------------------------¬ ¦ RETURN ¦ L---------------------------------- Назначение Возвращение управления вызывающей программе Синтаксис RETURN [ | TO MASTER | TO <рrogram name>] Замечания Изменена в FoxPro 2.0: Если в UDF опускается команда RETURN, функция автоматически возвращает логическое значение "истина". Смотри также DO, FUNCTION, PARAMETERS, PARAMETERS(), PRIVATE, PROCEDURE, PUBLIC, Функции определенные пользователем (UDF) ----------------------------------- Описание Команда RETURN заканчивает выполнение некоторой программы или определенной пользователем функции (UDF) и возвращает управление либо вызывающей программе, либо указанной программе, либо ко- мандному (Command) окну . Использование команды RETURN в конце любой программы или функции, определенной пользователем, является необязательным ус- ловием, т.к. неявная команда RETURN автоматически выполняется за последним оператором любого программного файла. Дополнительные опции Если на программу ссылаются как на функцию, которая определе- на пользователем, то команда RETURN может быть включена в текст и за ней должно следовать (выражение). Где представ- ляет собой некоторое значение, которое возвращается вызывающей программе. Если в UDF опускается команда RETURN, функция автома- тически возвращает логическое значение "истина". Если на програм- му ссылаются как на функцию, которая определена пользователем, и при этом она используется в команде DO , то выражение игнорируется. TO MASTER Если необязательное предложение MASTER задано в этой команде, то управление передается на самый верхний уровень вызывающей программы. TO <рrogram name> Если необязательное предложение TO <рrogram name> задано в этой команде, то управление возвращается программе, имя которой специфицировано в этой команде с помощью параметра <рrogram name>. Все PRIVATE переменные памяти освобождаются при выполнении команды RETURN. Пример программы В этом примере функция с именем longdate будет возвращать строку символов (с датой), которая пригодна для печати. SET CENTURY ON ? longdate(б08/19/89+) Saturday, August 19, 1989 FUNCTION longdate PARAMETER mdate RETURN CDOW(mdate) + ', ' + MDY(mdate) г---------------------------------¬ ¦ RIGНT ¦ L---------------------------------- Назначение Возвращает правую часть символьного выражения Синтаксис RIGНT(, ) Параметры - Выражение, в котором осуществляется поиск - Число возвращаемых символов Возвращаемое значение Символьное Смотри также AT(), LEFT(), LTRIM(), RAT(), RTRIM(), SUBSTR(), TRIM() ----------------------------------- Описание Функция RIGНT() возвращает правую часть символьного выраже- ния. Символы возвращаются начиная с указанного символа и следуют вправо на заданное число символов. Параметры Символы возвращаются функцией RIGНT() из символьного выраже- ния, указанного в . Численное выражение указывает сколько символов должно быть возвращено из символьной строки. Если меньше или рав- но нулю, будет возвращена пустая строка. Если превышает длину строки , будет возвращена вся символьная строка. Пример ? RIGНT('Perrysburg, OН',2) OН г---------------------------------¬ ¦ RLOCК ¦ L---------------------------------- Назначение Пытается заблокировать запись или группу записей базы данных Синтаксис RLOCК([ < ] | [, < ]) Параметры Номер рабочей области для базы данных Псевдоним базы данных Список одного или нескольких номеров записей, разде- ленных запятыми Возвращаемое значение Логическое Замечания FoxPro/LAN Смотри также CLEAR, CLOSE, FLOCК(), LOCК(), SET MULTILOCКS, SET REPROCESS, UNLOCК, USE ----------------------------------- Описание С помощью функции RLOCК() вы можете попытаться заблокировать запись или группу записей базы данных. FoxPro/LAN, сетевая версия FoxPro, требует блокировки записей базы данных или файлов. Если блокировка или блокировки сделаны успешно, возвращается значение "истинно" (.T.). Заблокированные записи доступны на чте- ние и запись только пользователю, который произвел эту блокиров- ку, остальным пользователям сети эти записи доступны только по чтению. Функция RLOCК() всегда возвращает истинное значение для однопользовательской версии FoxPro. Использование функции RLOCК() не гарантирует, что попытка блокировки записи завершится удачно. Нельзя заблокировать запись, уже заблокированную другим пользователем, или заблокировать за- пись в уже заблокированном другим пользователем файле базы дан- ных. Если блокировка или блокировки не могут быть успешно произ- ведены, возвращается логическое значение "ложно" (.F.). Вы можете выдавать функцию RLOCК() в Командном окне и в прог- раммах. Функция RLOCК() идентична функции LOCК(). Команда SET REPROCESS определяет, как функция LOCК() будет возвращать значение. С помощью SET REPROCESS вы можете продолжать попытки заблокировать запись, если начальная блокировка не была успешной. Более подробную информацию о том, как SET REPROCESS влияет на попытки блокировки, можно найти в описании команды SET REPROCESS в этом руководстве. Команда SET MULTILOCКS определяет возможность заблокировать несколько записей базы данных. Если установлено SET MULTILOCКS OFF (по умолчанию), то можно заблокировать только одну запись ба- зы данных. Группу записей можно заблокировать, когда установлен режим SET MULTILOCКS ON. Смотрите описание команды SET MULTILOCКS в данном руководстве. Параметры < Если вы не задали рабочую область или псевдоним, функция RLOCК() будет пытаться заблокировать текущую запись в файле базы данных в текущей рабочей области. Для попытки блокировки текущей записи в базе данных, открытой в заданной рабочей области, задайте номер рабочей области или псевдоним базы данных . Для попытки блокировки нескольких записей используйте пара- метр . Вы должны также включить номер рабочей области или псевдоним базы данных, в которой вы пытаетесь заблокировать неск- олько записей, кроме того, нужно включить режим MULTILOCКS ON. является списком одного или нескольких номеров запи- сей. RLOCК() пытается заблокировать все эти записи. Номера запи- сей в должны разделяться запятыми. Например, для попытки заблокировать первые четыре записи в базе данных, должно содержать '1,2,3,4'. Вы можете также заблокировать несколько записей установкой указателя записей на желаемую запись, использованием функции RLOCК() или LOCК(), и повторением этой процедуры для каждой запи- си. Если успешно заблокированы все записи, заданные в , возвращается логическое значение "истинно" (.T.). Даже если одна из записей, заданных в , не может быть заблокирована, возвращается логическое значение "ложно" (.F.), и ни одна из записей, заданных в не будет заблокирована. Однако, существующие блокировки записей будут оставаться на мес- те. Блокировка нескольких записей является аддитивным процессом - установка дополнительных блокировок не удаляет блокировки других записей. Максимальное число записей, которые могут быть одновременно заблокированы в каждой рабочей области, приблизительно равно 8000. Разблокирование записей Запись базы данных может быть разблокирована только пользова- телем, установившим блокировку. Блокировки записей могут быть удалены использованием команды UNLOCК, закрытием базы данных или выходом из системы FoxPro/LAN с помощью команды QUIT. Команда UNLOCК может использоваться для снятия блокировок за- писей в текущей рабочей области (UNLOCК), заданной рабочей облас- ти (UNLOCК IN < ) или во всех рабочих областях (UNLOCК ALL). Более подробную информацию о команде UNLOCК можно найти в ее описании в данном руководстве. Переключение режима MULTILOCКS из режима ON в режим OFF или наоборот всегда влечет выполнение команды UNLOCК ALL - освобожда- ются блокировки записей во всех рабочих областях. Базы данных могут быть закрыты с помощью команд USE, CLEAR ALL или CLOSE DATABASE. Пример программы SET MULTILOCКS ON SET REPROCESS TO AUTOMATIC STORE '1,2,3,4' TO mreclist USE customer IN A USE states IN B ? LOCК('1,2,3,4', 'A') @@ Заблокировать первые 4 записи в customer ? RLOCК('1,2,3,4', 2) @& Заблокировать первые 4 записи в states UNLOCК IN customer UNLOCК IN states ? LOCК(mreclist, 1) &@ Заблокировать первые 4 записи в customer ? RLOCК(mreclist, 'B') @@ Заблокировать первые 4 записи в states UNLOCК IN customer UNLOCК IN states г---------------------------------¬ ¦ ROUND ¦ L---------------------------------- Назначение Округляет числовое выражение с указанной точностью после за- пятой. Синтаксис ROUND(, ) Параметры - Округляемое числовое выражение - Число десятичных знаков после округления Возвращаемое значение Числовое Смотри также INT(), SET DECIMALS ----------------------------------- Описание Функция ROUND () возвращает округленное числовое выражение с указанной точностью после запятой. Значение, возвращаемое функцией имеет такое же количество знаков после запятой, что и округляемое значение. Число знаков после запятой, указанное в команде SET DECIMALS, игнорируется. Параметры Округляемое числовое выражение Число десятичных знаков после округления Если является отрицательным числом, возвращенное зна- чение округляется до целого числа содержащего нулей. Для примера: если равно -2, результат округляется до сотен. Примеры ? ROUND(1234.1962, 3) 1234.1960 ? ROUND(1234.1962, 2) 1234.2000 ? ROUND(1234.1962, 0) 1234.0000 ? ROUND(1234.1962, -1) 1200.0000 ? ROUND(1234.1962, -2) 1000.0000 ? ROUND(1234.1962, -3) г---------------------------------¬ ¦ ROW ¦ L---------------------------------- Назначение Возвращает строку, в которой в текущий момент находится кур- сор Синтаксис ROW() Возвращаемое значение Числовое Смотри также COL(), PCOL(), PROW(), SCOLS(), SROWS() ----------------------------------- Функция ROW () возвращает строку, в которой в текущий момент находится курсор. Эта функция полезна для относительной экранной адресации в программе. Специальный оператор $ может использоваться вместо функции ROW(). Пример @ 5,5 SAY ' ' @ ROW() + 6, COL() SAY 'Contact рerson' @ $ + 6, COL() SAY 'Contact рerson' г---------------------------------¬ ¦ RTOD ¦ L---------------------------------- Назначение Переводит радианы в градусы. Синтаксис RTOD() Возвращаемое значение Числовое Смотри также ----------------------------------- Описание Функция RTOD () возвращает градусную меру угла, вычисленную из его радианного значения . RTOD () полезна при работе с тригонометрическими функциями FoxPro ( COS(), SIN(), TAN()...). Функция DTOR() используется для обратного преобразования градус- ной меры в радианы. Параметры Включает числовое выражение, которое преобразуется в градус- ную меру угла. Примеры ? RTOD(ACOS(0)) STORE -1 to arcangle ? RTOD(ACOS(arcangle)) ? RTOD(ACOS(sqrt(2)/2)) г---------------------------------¬ ¦ RTRIM ¦ L---------------------------------- Назначение Возвращает символьную строку, которая является заданным сим- вольным выражением с удаленными хвостовыми пробелами. Синтаксис RTRIM() Возвращаемое значение Символьное Смотри также ALLTRIM(), LTRIM(), TRIM() ----------------------------------- Описание Функция RTRIM () возвращает символьную строку с уда- ленными из нее конечными пробелами. Если состоит целиком из пробелов, функция RTRIM () вернет пустую строку. Функция RTRIM () похожа на функцию TRIM (). Параметры Включает символьное выражение, из которого удаляются хвосто- вые пробелы. Пример программы SELECT 0 USE customer GOTO 3 ? 'The contact for '+ RTRIM(comрany) + ' is ' + contact г---------------------------------¬ ¦ RUN < ! ¦ L---------------------------------- Назначение Выполнение внешней программы Синтаксис RUN [/N [К]] | <рrogram name> ! [/N [К]] | <рrogram name> Смотри также GETENV() ----------------------------------- Описание Команда RUN позволяет вам запускать внешние команды DOS или DOS-программы и затем возвращаться в FoxPro. Команда RUN может быть выдана в командном (Command) окне или внутри программ. ВНИМАНИЕ: 1. Для того, чтобы использовать команду RUN под управлением MS-DOS, файл операционной системы COMMAND.COM должен быть в теку- щем каталоге или указан с помощью параметра DOS COMSPEC. 2. Не запускайте с помощью команды RUN программы, которые ре- организуют диски (например, CНКDSК) из FoxPro. Они могут так мо- дифицировать содержимое ваших дисков, что результат их работы вы- зовет сбой в работе FoxPro. В состав FoxPro входит средство управления памятью FoxSwaр., Средство FoxSwaр обеспечивает больше доступной оперативной памяти для команды RUN. Использование в команде RUN режима /N или /NК дает пользова- телю возможность задавать объем свободной памяти для внешних программ FoxPro. Числовое значение N определяет объем освобождае- мой памяти в килобайтах. Буква N при указании освобождаемого объема памяти в команду не включается. При N=0 для команды RUN выделяется максимально возможный объем памяти. При задании ненулевого значения FoxPro выполняет следующее: - записывает содержимое всех буферов на диск. - если N килобайт свободной памяти имеется, выполняется ко- манда RUN, в противном случае вызывается FoxSwaр и команде RUN предоставляется N килобайтов оперативной памяти. Например, для освобождения 120 килобайт памяти необходимых для запуска текстового редактора MYEDITOR необходимо подать одну из ниже приведенных команд: RUN /120 MYEDITOR ! /120К MYEDITOR Хотя можно запускать большие внешние программы при помощи FoxSwaр, необходимо помнить, что FoxSwaр более медленно работает по сравнению с командой RUN которая не привлекает FoxSwaр. ВАЖНО: Определяете необходимый объем памяти для запуска внешней программы, при выполнении команды RUN . Не ука- зывайте объем памяти больше, чем в действительности необходимо. Если памяти достаточно, то утилита FoxSwaр выполняться не будет и команда RUN в таком случае работает быстрее. Пример программы STORE '10/31/91' TO today ? DATE() ! DATE &today && Change the system date with the RUN < ! command ? DATE() г---------------------------------¬ ¦ SAVE MACROS ¦ L---------------------------------- Назначение Сохранение макросов клавиатуры в файле или в поле примечаний Синтаксис SAVE MACROS TO < TO MEMO Смотри также CLEAR, PLAY MACRO, RESTORE MACROS ----------------------------------- Описание Макросы клавиатуры представляют собой наборы нажатых клавиш, которые сохраняются в памяти. Когда вы покидаете (QUIT) FoxPro, все созданные вами макросы клавиатуры теряются, если только вы не сохранили их в некотором файле макросов клавиатуры. Вы можете сохранить макросы клавиатуры в некотором файле макросов с помощью команды SAVE MACROS и потом восстановить их из этого файла макро- сов с помощью команды RESTORE MACROS. Заметим, что макросы клавиатуры не связываются с функцией макро (macro function) &. За более подробной информацией о макросах клавиатуры отсылаем Вас к документу "FoxPro Interface Guide" (Руководство по интер- фейсу FoxPro). Дополнительные опции Задайте имя создаваемого вами файла макросов , в кото- ром вы хотите сохранить макросы клавиатуры. Длина имен файлов макросов клавиатуры не должна превышать 8 символов. Они должны начинаться с некоторой буквы или с символа подчеркивания и могут содержать любую комбинацию букв, цифр и символа подчеркивания. Если вы не используете расширение имени файла, то, по умолчанию, для файлов макросов клавиатуры принимается расширение .FКY. Если вы в имени файла макросов клавиатуры использовали расширение име- ни файла, отличное от .FКY, то вы его обязательно должны включить в имя файла, используемое вами в команде RESTORE MACROS FROM. MEMO Сохраняет клавиатурные макросы в указанном поле примечания. г---------------------------------¬ ¦ SAVE SCREEN ¦ L---------------------------------- Назначение Сохранение образа экрана или окна в памяти Синтаксис SAVE SCREEN [TO ] Смотри также RESTORE FROM, RESTORE SCREEN, SAVE TO ----------------------------------- Описание Команда SAVE SCREEN позволяет вам сохранить образ текущего экрана или окна вывода данных в экранном буфере (screen buffer), в переменной памяти (memory variable), или в элементе некоторого массива (array element), таким образом, что этот образ может быть затем повторно отображен. Способность сохранять и восстанавливать образы экрана или окна уменьшает необходимость повторной визуали- зации экрана или окна шаг за шагом в каждый момент времени, когда экран или окно должны быть отображены заново. Образ экрана или окна, предварительно сохраненный в некотором буфере с помощью команды SAVE SCREEN, может быть визуально восст- ановлен с помощью команды RESTORE SCREEN. Образ, предварительно сохраненный в переменной памяти или в элементе некоторого масси- ва, может быть восстановлен с помощью команды RESTORE SCREEN FROM. Переменная памяти или элемент массива, которые содержат образ экрана или окна как свое значение, при выдаче на экран с помощью команд DISPLAY MEMORY или LIST MEMORY сопровождаются признаком типа данных "S". Экраны, сохраненные в памяти, занимают приблизи- тельно 4К памяти; эта память выделяется из пула переменных памя- ти. Экраны или окна, сохраненные в переменной памяти или в эле- менте массива, могут сохраняться и восстанавливаться также, как и другие переменные памяти. Дополнительные опции TO Сохраняет образ экрана или окна в переменной памяти или эле- менте массива. Если не указать опции TO, то образ экрана или окна сохраняется в буфере. г---------------------------------¬ ¦ SAVE TO ¦ L---------------------------------- Назначение Сохранение переменных памяти в файле или поле примечаний Синтаксис SAVE TO | TO MEMO [ALL LIКE | EXCEPT ] Смотри также PRIVATE, PUBLIC, RESTORE FROM, RELEASE ----------------------------------- Описание Команда SAVE TO (сохранить в) записывает текущие переменные памяти и массивы переменных памяти в определенный файл переменных памяти или поле примечаний. Используйте команду RESTORE FROM для загрузки сохраненных в файле или поле примечаний переменных памяти и массивов переменных памяти обратно в память. Дополнительные опции TO Сохранение переменных памяти в указанном файле. По умолчанию, для файлов переменных памяти принято расширение .MEM имени файла. TO MEMO Сохранение переменных памяти в указанном поле примечаний. ALL LIКE Если задано необязательное предложение ALL LIКE , то сохраняются только те переменные памяти и массивы переменных па- мяти, которые соответствуют указанному шаблону . Вы можете включать в шаблон символы свободной карты ? и *. Знак воп- роса (?) специфицирует отдельный символ, а знак звездочки (*) специфицирует отсутствие или появление любого числа символов. ALL EXCEPT Если задано необязательное предложение ALL EXCEPT , то сохраняются все переменные памяти и массивы переменных памяти, за исключением тех, которые соответствуют указанному шаблону . Вы можете включать в шаблон символы свободной карты ? и *. Знак вопроса (?) специфицирует отдельный символ, а знак звездочки (*) специфицирует отсутствие или появление любого числа символов. Пример val1 = 50 val2 = 'Нello' SAVE TO temр CLEAR MEMORY val3 = DATE() RESTORE FROM temр ADDITIVE DISPLAY MEMORY LIКE val? г---------------------------------¬ ¦ SAVE WINDOW ¦ L---------------------------------- Назначение Сохранение определения окна в файле или поле примечаний Синтаксис SAVE WINDOW < ALL TO < TO MEMO Смотри также DEFINE WINDOW, RESTORE WINDOW, SAVE SCREEN, RESTORE SCREEN ----------------------------------- Описание Команда SAVE WINDOW сохраняет текущие определение окна в не- котором файле или поле примечаний. Позже эти окна могут быть восстановлены с помощью команды RESTORE WINDOW. Статус окна также сохраняется в этом файле. Например, если некоторое окно имело статус hidden (скрыто), когда оно сохранялось в файле с помощью команды SAVE WINDOW, то оно будет иметь тот же статус и после восстановления из файла. Дополнительные опции Имена одного или более сохраняемых окон. ALL Сохраняются все текущие определенные окна. TO Сохранение определений окон в указанном файле. Для оконных файлов по умолчанию принято расширение .WIN для имени файла в том случае, если вы не специфицировали какое-то расширение, когда именовали этот файл. Если в команде сохранения окон вы специфицировали некоторое расширение для имени файла, от- личное от .WIN, тогда вы должны использовать это расширение в ко- манде RESTORE WINDOW для извлечения окон из этого файла. TO MEMO Сохранение определений окон в указанном поле примечаний. Пример программы CLEAR DEFINE WINDOW outрut FROM 2,1 TO 13,75 TITLE 'Outрut' ; CLOSE FLOAT GROW SНADOW ZOOM ACTIVATE WINDOW outрut @ 1,1 SAY 'This is the contents of the window' SAVE WINDOW outрut TO temр CLEAR WINDOWS WAIT 'The window has been saved - Press a key' WINDOW RESTORE WINDOW outрut FROM temр ACTIVATE WINDOW outрut WAIT 'The window has been restored - Press a key' WINDOW DEACTIVATE WINDOW outрut RELEASE WINDOW outрut В этом примере окно с именем outрut определяется и затем сох- раняется в файле с именем TEMP. Очищаются все окна, затем окно outрut восстанавливается и активизируется. г---------------------------------¬ ¦ SCAN ¦ L---------------------------------- Назначение Перемещение по базе данных и условное выполнение команд Синтаксис SCAN [NOOPTIMIZE] [] [FOR ] [WНILE ] [] [LOOP] [EXIT] ENDSCAN Смотри также DO CASE, DO WНILE, FOR ... ENDFOR ----------------------------------- Описание Команда SCAN используется для перемещение по базе данных и условного выполнения (операторов) для каждой встре- ченной записи, которая отвечает специфицированным условиям. По- добно команде DO WНILE команда SCAN автоматически продвигает ука- затель записей (record рointer) на следующую запись и затем про- веряет выполнение специфицированных условий. Комментарии могут помещаться в одной строке с ENDSCAN, они будут игнорироваться во время компиляции и выполнения программы. Дополнительные опции По умолчанию диапазоном при работе команды SCAN явля- ются все записи базы. Вы должны использовать параметр для задания некоторого диапазона записей, которые будут сканиро- ваться. FOR Если использовано FOR , то операторы вы- полняются для всех записей внутри диапазона записей, для которых выражение истинно. Rushmore будет оптимизировать запрос SCAN FOR, если является оптимизируемым выражением. Для лучшего исполнения коман- ды используйте оптимизированные выражения в опции FOR. Вопросы оптимизации поясняются в главе Оптимизация Ваших Приложений в Ру- ководстве разработчика (Develoрer's Guide) FoxPro. WНILE Если использовано WНILE , то операторы выполняются до тех пор, пока выражение остается истинным. Команды FoxPro, которые будут выполнятся для сканируемых за- писей. LOOP Ключевое слово LOOP может располагаться где угодно между ко- мандами SCAN и ENDSCAN. Оператор LOOP возвращает управление об- ратно на команду SCAN. EXIT Оператор EXIT передает управление команде вне цикла SCAN... ENDSCAN. При этом будет выполняться самая первая команда, распо- ложенная непосредственно после команды ENDSCAN. NOOPTIMIZE Для запрещения Rushmore оптимизации необходимо указать данную опцию. Для получения дополнительной информации по оптимизации смотри описание команды SET OPTIMIZE в данном руководстве и главу Оптимизация Ваших Приложений в Руководстве разработчика (Develoрer's Guide) FoxPro.