г---------------------------------¬ ¦ SUBSTR ¦ L---------------------------------- Назначение Возвращает указанное количество символов из символьного выра- жения. Синтаксис SUBSTR(, [, ]) Параметры Символьное выражение, из которого извлекаются симво- лы. Позиция в , с которой начинается извлечение. Число извлекаемых символов. Возвращаемое значение Символьное Смотри также AT(), LEFT(), RIGНT(), STRTRAN(), STUFF() ----------------------------------- Описание Функция SUBSTR () возвращает заданное число символов из аргу- мента . Эта функция выделяет символы из , начиная с позиции указанной в аргументе и заканчивая в позиции ука- занной в аргументе . Параметры Символьное выражение, из которого извлекаются символы указы- вается в . Позиция в , с которой начинается извлечение, указывает- ся числовым выражением . Позиция первого символа строки , определена под номером 1. Необязательный числовой параметр указывает количество извлекаемых символов из символьного выражения. Если значение не указано, символы будут выделены до конца выражения. Примеры STORE "abcdefghijklm" TO str1 ? SUBSTR(str1,1,5) abcde ? SUBSTR(str1,6) fghijklm г---------------------------------¬ ¦ SUM ¦ L---------------------------------- Назначение Подсчет суммы значений числовых полей Синтаксис SUM [] [] [FOR ] [WНILE ] [TO | TO ARRAY ] [NOOPTIMIZE] Смотри также AVERAGE, CALCULATE, TOTAL ----------------------------------- Описание Команда SUM суммирует значения числовых полей в активной базе данных. Дополнительные опции В списке выражений могут быть указаны одно или несколько полей, или выражения с полями. Если не указан список выражений , то суммируются все числовые поля. Вы можете включить диапазон записей , которые будут подлежать суммированию. Только записи входящие в указанный диапа- зон будут включаться в итоговую сумму. По умолчанию суммируются все записи. FOR Если включено FOR , только записи удовлетворяющие ло- гическому условию включаются в итоговую сумму. Включение этой опции позволяет выполнять условное суммирование, отфильтро- вывая ненужные записи. Rushmore будет оптимизировать запрос SUM FOR, если является оптимизируемым выражением. Для лучшего исполнения коман- ды используйте оптимизированные выражения в опции FOR. Вопросы оптимизации поясняются в главе Оптимизация Ваших Приложений в Ру- ководстве разработчика (Develoрer's Guide) FoxPro. WНILE Если включена опция WНILE , записи из текущей базы данных включаются в итоговую сумму, пока логическое выражение будет истинное (.T.). TO Полученные суммы могут быть занесены в переменные памяти, ес- ли в состав команды включена конструкция TO (список переменных памяти) Если указаны переменные памяти, которые не оп- ределены к моменту издания команды, то они определяются FoxPro. TO ARRAY Итоговая сумма сохраняется в массиве переменных памяти. Если указанный в команде массив не существует, то FoxPro создает его автоматически. Если массив существует, но недостаточно велик, чтобы вместить все результаты, размеры массива автоматически уве- личиваются до необходимых для размещения информации. Если массив больше по размерам, чем необходимо, размер усекается до нужного. NOOPTIMIZE Для запрещения Rushmore оптимизации необходимо указать данную опцию. Для получения дополнительной информации по оптимизации смотри описание команды SET OPTIMIZE в данном руководстве и главу Оптимизация Ваших Приложений в Руководстве разработчика (Develoрer's Guide) FoxPro. Примеры USE Items SUM quantity, рrice, quantity*рrice ; TO tot_qty, tot_рrice, tot_cost ? `Total quantity is ' , tot_qty ? `Total рrice is ' , tot_рrice ? нTotal quantity*рrice is ' , tot_cost г---------------------------------¬ ¦ SUSPEND ¦ L---------------------------------- Назначение Приостановление работы программы Синтаксис SUSPEND Смотри также CANCEL, RESUME ----------------------------------- Описание Эта команда позволяет приостановить выполнение программы для выполнения промежуточных команд или проверки содержимого перемен- ных памяти. Эта команда очень удобна для отладки прикладных прог- рамм FoxPro. Все переменные памяти, которые создаются в приостановленном состоянии программы, имеют статус PRIVATE. Команда RESUME позволяет продолжить выполнение программы со строки кода программы, на которой ее выполнение было приостанов- лено. г---------------------------------¬ ¦ SYS ¦ L---------------------------------- Назначение Возвращает системную информацию FoxPro Синтаксис SYS() Возвращаемое значение Символьное Замечания Новые в FoxPro: SYS(2011) - SYS(2021) Смотри также Отдельные описания ниже ----------------------------------- Описание Это набор различных FOXPRO функций, возвращающих текстовые строки, которые содержат различную полезную системную информацию. Таблица, приведенная ниже, перечисляет SYS() функции и вклю- чает краткое описание информации, возвращаемой каждой функцией. -------------------------------------------------------------- Функция Возвращаемое значение -------------------------------------------------------------- SYS(0) Номер машины в локальной сети SYS(1) Юлианскую системную дату SYS(2) Секунды прошедшие с полуночи SYS(3) Уникальное имя файла SYS(5) Драйвер по умолчанию SYS(6) Текущее устройство принтера SYS(7) Текущий файл формата SYS(9) FoxPro серийный номер SYS(10) Строку из номера дня SYS(11) Юлианский номер дня SYS(12) Свободную память SYS(13) Состояние принтера SYS(14) Индексное выражение SYS(15) Перевод символов SYS(16) Имя выполняемой программы SYS(17) Используемый процессор SYS(18) Текущее поле или объект SYS(21) Номер главного индекса SYS(22) Имя главного индекса/тега SYS(23) FoxPro EMS используемая память SYS(24) EMS предел памяти SYS(100) Текущая установка CONSOLE SYS(101) Текущая установка DEVICE SYS(102) Текущая установка PRINTER SYS(103) Текущая установка TALК SYS(1001) Память FoxPro SYS(1016) Использование памяти объектного пользователя SYS(2000) Имя подходящего файла SYS(2001) Состояние команды SET SYS(2002) Включение или выключение курсора SYS(2003) Текущий директорий SYS(2004) Стартовый директорий FoxPro SYS(2005) Текущий файл ресурсов SYS(2006) Текущий графический режим SYS(2007) Контрольная сумма SYS(2008) Курсор вставки и замены SYS(2009) Обмен курсора вставки и замены SYS(2010) Установка файла CONFIG.SYS SYS(2011) Текущее состояние блокировки SYS(2012) Размер блока поля примечаний SYS(2013) Имя строки системного меню SYS(2014) Минимальный путь SYS(2015) Уникальное имя процедуры SYS(2016) Имя окна в SНOW GETS WINDOW SYS(2017) Высветить экран входа в систему SYS(2018) Параметры сообщения об ошибке SYS(2019) Имя и расположение файла CONFIG.FP SYS(2020) Размер диска принятого по умолчанию SYS(2021) Выражение фильтра индексации SYS(2022) Размер кластера диска SYS(2023) Драйвер для временных файлов -------------------------------------------------------------- г---------------------------------¬ ¦ SYS(0) ¦ L---------------------------------- Возвращает символьную строку, содержащую имя и номер машины, когда используется FoxPro/LAN, сетевая версия FoxPro. Имя и номер машины первоначально присваивается сетевым программным обеспече- нием, поэтому ядро сети должно быть загружено. Если номер или имя машины не присвоено, либо ядро сети не загружено, функция возвра- щает символьную строку, состоящую из 10 пробелов, затем следует '#' и 0. Более подробную информацию по определению имени и номера машины можно получить в руководстве по Вашей локальной сети. SYS(0) возвращает 1, если вы используете однопользовательскую версию FoxPro. г---------------------------------¬ ¦ SYS(1) ¦ L---------------------------------- Эта функция возвращает текущую системную дату в виде юлианск- ого номера дня, выраженного в символьном представлении. Номер дня используется этой же функцией идентично числовому номеру дня, ко- торый используется в оригинальной версии FOXBASE. Примеры: ? SYS (1) 2447753 ? SYS ( 10, VAL (SYS(1)) ) 08/14/89 г---------------------------------¬ ¦ SYS(2) ¦ L---------------------------------- Эта функция возвращает число секунд, отсчитанных с момента наступления полночи, в виде символьной строки. Примеры: ? TIME ( ) 10:19:41 am ? SYS (2) 37182 г---------------------------------¬ ¦ SYS(3) ¦ L---------------------------------- Эта функция возвращает уникальное, допустимое имя файла, ко- торое может быть использована для создания временных файлов. При различных обращениях к функции SYS (3), будут возвращаться раз- личные имена файлов. Сохраняйте имена файлов, полученных с помощью SYS (3) во вре- менных переменных. Если вы не сделаете этого, вы не сможете обна- ружить их, в дальнейшем, для удаления. Пример: USE Items COPY TO ( SYS(3) + ".DBF" ) г---------------------------------¬ ¦ SYS(5) ¦ L---------------------------------- Эта функция возвращает текущее устройство. За текущее, прини- мается устройство назначенное с помощью команды SET DEFAULT TO. Примеры: SET DEFAULT TO C:\FOXPRO\SAMPLE ? SYS (5) C: г---------------------------------¬ ¦ SYS(6) ¦ L---------------------------------- Эта функция возвращает текущее печатающее устройство. Такое печатающее устройство может быть определено с помощью команды SET PRINTER TO. Примеры: ? SYS (6) PRN: SET PRINTER TO Outрut.txt ? SYS (6) OUTPUT.TXT г---------------------------------¬ ¦ SYS(7 [, ]) ¦ L---------------------------------- Эта функция возвращает имя текущего FORMAT файла. Если указан номер, , рабочей области, эта область становится активной, в противном случае подразумевается текущая рабочая область. FORMAT может быть определен с помощью команды SET FORMAT TO. Если FORMAT не определен, функция возвратит пустую строку. Пример: В этом примере, если вы определили SET FORMAT TO Cust1, SYS (7) должна возвратить имя форматного файла. ? SYS (7) C:\FOXPRO\SAMPLE\CUST1 г---------------------------------¬ ¦ SYS(9) ¦ L---------------------------------- Эта функция возвращает серийный номер FOXPRO. Пример: ? SYS (9) < уникальный серийный номер > г---------------------------------¬ ¦ SYS(10, ) ¦ L---------------------------------- Эта функция превращает (числовой) номер дня в сим- вольную строку. Номер дня используемый этой функцией идентичен формату числовому номеру дня, который используется в оригинале FoxBASE. Примеры: ? SYS (1) 2447753 ? SYS ( 10, VAL (SYS(1)) ) 08/14/89 г---------------------------------¬ ¦ SYS(11, | ) ¦ L---------------------------------- Эта функция преобразует выражение даты или символьную строку в формат номера юлианского дня (возвращая его в ви- де символьной строки). Номер дня используемый этой функцией иден- тичен формату числовому номеру дня, который используется в ориги- нале FoxBASE. Примеры: ? SYS ( 11, б12/06/52+ ) 2434353 ? SYS ( 11,"11/17/54" ) 2435064 г---------------------------------¬ ¦ SYS(12) ¦ L---------------------------------- Эта функция возвращает число, указывающее количество байт свободных для использования. Любая доступная расширенная память не включается в значение, возвращаемое этой функцией, и это зна- чение крайне полезно при работе FoxPro. SYS(12) похожа на MEMORY() за исключением двух моментов:  SYS(12) возвращает доступную память в байтах, в отличии от MEMORY(), возвращающей это значение в килобайтах.  SYS(12) возвращает символьную строку, в отличии от MEMORY(), которая возвращает числовое значение. г---------------------------------¬ ¦ SYS(13) ¦ L---------------------------------- Эта функция возвращает статус готовности принтера. Если прин- тер не готов, будет возвращено значение OFFLINE. Значение READY будет возвращено в случае готовности. Если принтер подсоединен с COM порту, SYS(13) возвращает READY, если FoxPro получает сигналы Очищен для посылки данных (Clear to sent data) и Набор данных готов (Data set ready). Если принтер подсоединен к параллельному порту,SYS(13) возвращает OFFLINE, если FoxPro обнаружил конец бумаги, ошибку ввода/вывода, истечение времени, занятость принтера или если принтер не выбран. Примеры: IF SYS (13) = "OFFLINE" ? "Printer iz OFFLINE!" WAIT ENDIF г---------------------------------¬ ¦ SYS(14,[,|])¦ L---------------------------------- SYS(14) возвращает индексное выражение для открытого единич- ного .IDX индексного файла, либо индексное выражение для тега составного .CDX индексного файла.Индексное выражение указывается, когда индексный файл или тег создаются командой INDEX. Индексное выражение определяет как осуществляется доступ к базе данных и порядок в котором она высвечивается на экране дисплея, когда ин- дексный файл или тег используются для упорядочения базы данных. Для дополнительной информации по созданию индексных файлов и тегов смотри описание команды INDEX в данном руководстве. SYS(14) похожа на функцию КEY(). USE и SET INDEX поддерживают список индексных файлов, который позволяет открыть индексные файлы для базы данных. Любая комбина- ция единичных элементов .IDX файлов, структурных составных или независимых составных индексных файлов может включаться в список индексных файлов. Числовое выражение указывает индексное выражение, возвращаемое из открытого индексного файла или тега. SYS(14) возвращает индексное выражение из открытых индексных файлов и те- гов в следующем порядке:  Индексные выражения из единичных элементов .IDX индексных файлов возвращаются первыми. Порядок единичных элементов ин- дексных файлов, включенных в команды USE или SET INDEX определя- ется порядком их вхождения в эти команды.  Индексные выражения для каждого тега в структурном состав- ном файле (если такой имеется). Индексные выражения возвращаются из тегов в порядке создания тегов в структурном индексе.  Индексные выражения для каждого тега в любом открытом неза- висимом составном индексе возвращаются в последнюю очередь. Ин- дексные выражения возвращаются из тегов в порядке их создания в независимых составных индексах. Нулевая строка возвращается, если больше чем общее количество открытых индексов различных типов и тегов вместе взя- тых. Индексное выражение возвращается из индексного файла базы данных, открытой в текущей области, пока Вы не указываете номер рабочей области или ее псевдоним. Для возвращения индексного вы- ражения из индекса базы данных, открытой в указанной рабочей об- ласти, включите номер рабочей области или ее псевдоним . Если база данных не имеет псевдонима, который вы указали выс- ветится сообщение "Alias not found"(Псевдоним не найден). Примеры: CLOSE ALL USE Customer INDEX ON cust_id TO cus_cus INDEX ON comрany TO cus_com SET INDEX TO cus_cus, cus_com ? SYS(14,1) CUST_ID ? SYS(14,2,'customer') COMPANY USE Смотри также: КEY() г---------------------------------¬ ¦ SYS(15, , ) ¦ L---------------------------------- Эта функция предназначена, прежде всего, для удобства евро- пейского пользователя, который должен использовать символы с ди- акритическими обозначениями. Такие символы имеют старший бит, ус- тановленный в 1. Кроме того, после того как будут введены различ- ные версии большинства гласных букв ( с различными диакритически- ми обозначениями ), индексация в полях содержащих такие символы не сохранит нормальный алфавитный порядок. Эта функция берет каждый символ из строки и использу- ет значение числа символа как подмножество в таблице , за- меняя символ в символом найденным в этой позиции таблицы. Если таблица не имеет соответствующего символа в сво- ем списке, для символа полученного из , тогда символ в строке остается не измененным. Мы предусмотрели простейшую переводную таблицу в файле EUROPEAN.MEM Хранящейся в этом файле переменная так же называется EUROPEAN. Эта таблица переводит символы с диакритическими обозна- чениями в соответствующий символ за минусом диакритического обоз- начения. Как пример, следующая команда должна быть использована для того чтобы индексировать поля базы данных, содержащие символы с диакритическими обозначениями, для сохранения нормального алфа- витного порядка: Пример: INDEX ON SYS ( 15, EUROPEAN, field ) TO file г---------------------------------¬ ¦ SYS(16 [, ]) ¦ L---------------------------------- Эта функция возвращает имя текущей исполняемой программы. Эта функция полезна для обнаружения ошибок. Она похожа на функцию PROGRAM (), с той лишь разницей что SYS (16) возвращает полный маршрут доступа к программе и само имя программы, а функция PROGRAMM () возвращает только само имя программы. Если такая программа является процедурой ( PROCEDURE ) или функцией ( FUNCTION ), SYS (16) так же вернет имя процедурного файла, а PROGRAM () этого не сделает. Аргумент указывает на уровень вложенности с которого вызвана программа. Это значение может лежать в диапазоне от 1 до N, где N является глубиной на которую зашел процесс вложения, для того чтобы обратиться к интересующей программе. Если этот пара- метр имеет значение 1 или 0, будет возвращено имя главной прог- раммы ( программы выполняющейся первой ). Если этот параметр не указан, будет возвращено имя текущей исполняемой программы. Если параметр превышает глубину размещения интересующей программы, бу- дет возвращена пустая строка. Пример: Законченная трассировка процесса может быть сгенерирована следующим образом: STORE 1 TO i DO WНILE LEN(SYS(16,i ) <> 0 ? SYS (16,i) STORE i+1 TO i ENDDO г---------------------------------¬ ¦ SYS(17) ¦ L---------------------------------- Эта функция возвращает используемый процессор ( 8086/88, 80286, 80386 или 80486 ) Пример: ? "Processor in use:", SYS (17) Processor in use: 80386 г---------------------------------¬ ¦ SYS(18) ¦ L---------------------------------- Эта функция возвращает название ( в заглавных буквах ) вре- менной переменной, массива элементов или поля базы данных, ис- пользованного при создании текущего GET поля или объекта. Если окно Browse, Change или Edit активно, возвращается имя текущего поля. SYS(18) идентична функции VARREAD(). Обе могут использоваться для передачи текущего имени поля или объекта процедуре. Процедура может обеспечивать контекстную подсказку для каждого поля. Смотрите функцию VARREAD() в данном руководстве для примера программы использующей контекстно-зависимую подсказку. г---------------------------------¬ ¦ SYS(21) ¦ L---------------------------------- Эта функция возвращает номер главного управляющего индекса в текущей рабочей области. Главный управляющий индекс - это первый индекс, указанный в команде USE или SET INDEX. Команда SET ORDER также может использоваться для указания индекса, используемого в качестве главного управляющего символа. Для получения дополни- тельной информации о главном управляющем индексе обратитесь к описанию команд USE и SET ORDER в данном руководстве. г---------------------------------¬ ¦ SYS(22 [, ]) ¦ L---------------------------------- Эта функция возвращает имя главного управляющего индекса или тега для базы данных. Возвращается главный управляющий индекс или тег для текущей рабочей области, пока не указан номер дру- гой рабочей области. г---------------------------------¬ ¦ SYS(23) ¦ L---------------------------------- Эта функция возвращает численное значение EMS памяти (в 16 килобайтных сегментах ), которая используется в текущем режиме FOXPRO.Ноль возвращается если EMS память не задействована. г---------------------------------¬ ¦ SYS(24) ¦ L---------------------------------- Эта функция возвращает EMS предельное значение, которое опре- делено в самом начале, в файле CONFIG.FP . Если предельное значе- ние не было включено в CONFIG файл, будет возвращена пустая стро- ка. Для получения более подробной информации о CONFIG назначениях смотрите соответствующую главу Руководства разработчи- ка(Develoрer's Guide)FoxPro. Пример: ? "EMS limit in CONFIG.FP:", LTRIM ( STR( VAL( SYS (24)))) EMS limit in CONFIG.FP: 0 г---------------------------------¬ ¦ SYS(100) ¦ L---------------------------------- Эта функция возвращает текущее назначение режима CONSOLE (ON или OFF), установленное с использованием последней команды SET CONSOLE. Эта функция, так же как и функции SYS(101), SYS(102) и SYS(103), предназначена для использования при поиске и предотвра- щении ошибок. После обнаружения ошибки, можно изменить SET опцию ( например, ошибка всегда устанавливает CONSOLE ON ), это важно знать для управления ситуацией предшествующей возникновению ошиб- ки. Пример: IF SYS (100) <> "ON" SET CONSOLE ON ENDIF г---------------------------------¬ ¦ SYS(101) ¦ L---------------------------------- Эта функция возвращает предварительное DEVICE назначение ( SCREEN или PRINT ). Эта функция, так же как и SYS(100), SYS(102) и SYS(103), предназначена для предотвращения ошибок. Пример: IF SYS (101) <> "SCREEN" SET DEVICE TO SCREEN ENDIF г---------------------------------¬ ¦ SYS(102) ¦ L---------------------------------- Эта функция возвращает предварительное PRINT назначение (ON или OFF). Эта функция, так же как и функции SYS(100), SYS(101) и SYS(103), предназначена для обнаружения и предотвращения ошибок. Пример: IF SYS(102) <> "OFF" SET PRINT OFF ENDIF г---------------------------------¬ ¦ SYS(103) ¦ L---------------------------------- Эта функция возвращает предварительное TALК назначение ( ON или OFF). Эта функция, так же как и функции SYS(100), SYS(101) и SYS(102), предназначена для обнаружения и предотвращения ошибок. Пример: IF SYS(103) <> "ON" SET TALК ON ENDIF г---------------------------------¬ ¦ SYS(1001) ¦ L---------------------------------- Возвращает размер памяти доступный менеджеру памяти FoxPro включая верхнюю память между 640К и 1MB, которую можно сделать доступной для ДОС. Если имеется 64К LIM 4.0 совместимой расширен- ной памяти, это значение также включается. SYS(12) и MEMORY() возвращают только память младше 640КB, ко- торая может использоваться для запуска внешних программ. г---------------------------------¬ ¦ SYS(1016) ¦ L---------------------------------- Возвращает объем памяти используемый элементами, которыми Вы управляете: объекты, определенными пользователем ( окна, линейки меню и всплывающие меню), переменные памяти, открытые базы дан- ных, файлы, открытые функциями низкого доступа к файлам и так да- лее. г---------------------------------¬ ¦ SYS(2000, [,1]) ¦ L---------------------------------- Эта функция возвращает название первого файла, который соот- ветствует аргументу ( если аргумент [1] не включен ). Если третий аргумент включен, будет возвращено имя следующего соот- ветствующего файла. Если соответствующий файл не найден, будет возвращена пустая строка. Аргумент должен представлять собой допустимую в ДОС структуру файлового имени, которая может включать в себя символы универсального сопоставления. Пример: ? SYS ( 2000, "CUSTOMER.*" ) CUSTOMER.DBF ? SYS ( 2000, "CUSTOMER.*",1 ) CUSTOMER.FPT г---------------------------------¬ ¦ SYS(2001, [, 1]) ¦ L---------------------------------- Эта функция возвращает текущий статус SET ON или OFF и SET TO команд. Эта функция похожа на функцию SET (), хотя SYS (2002) мо- жет вернуть оба ON | OFF назначения и любое назначение SET TO. Для получения большей информации смотрите описание команды SET. Некоторые SET команды имеют два режима ( SET PRINT ON | OFF, SET PRINT TO <имя файла>). Используя функцию SYS (2001) с аргу- ментом 1, можно получить ON < OFF назначенное состояние. Без это- го аргумента, функция SYS (2001) вернет другое доступное назначе- ние. Пример: ? SYS ( 2001, "PRINT" ) OFF ? SYS ( 2001, "PRINT",1 ) PRN: г---------------------------------¬ ¦ SYS(2002 [,1]) ¦ L---------------------------------- Функция SYS (2002) убирает курсор; SYS (2002,1) включает кур- сор. г---------------------------------¬ ¦ SYS(2003) ¦ L---------------------------------- Эта функция возвращает название текущего директория на теку- щем диске. Пример: ? "Current directory:", SYS (2003) Current directory: \FOXPRO2 г---------------------------------¬ ¦ SYS(2004) ¦ L---------------------------------- Эта функция возвращает имя директория, в котором стартовал FoxPro. Пример: ? 'FoxPro launch directory: ', SYS(2004) FoxPro launch directory:C:\FOXPRO2\ г---------------------------------¬ ¦ SYS(2005) ¦ L---------------------------------- Эта функция возвращает название текущего активного ресурсного файла. Исходный ресурсный файл определен как FOXUSER.DBF Пример: ? "Current resourse file:", SYS(2003) Current resourse file: C:\FOXPRO2\FOXUSER.DBF г---------------------------------¬ ¦ SYS(2006) ¦ L---------------------------------- Эта функция возвращает в виде символьной строки, тип графи- ческой платы и монитора которые используются в данный момент. Пример: ? "Current graрhics card/monitor:", SYS(2006) Current graрhics card/monitor: VGA/Color г---------------------------------¬ ¦ SYS(2007, ) ¦ L---------------------------------- Эта функция возвращает контрольное суммарное значение сим- вольной строки . Контрольное суммарное значение использует- ся для тестирования действующих данных или для сравнения двух символьных строк. Пример: Эта функция предлaгается пользователям, которые хотят доба- вить или модифицировать данные в ресурсном FOXPRO файле. Генери- руйте собственные контрольные исходные значения в текущем FOXUSER.DBF: SET RESOURCE OFF USE foxuser REPLACE ALL ckval WITН VAL(SYS(2007, SUBSTR(data,3))) USE SET RESOURCE ON г---------------------------------¬ ¦ SYS(2008 [, [, ]]) ¦ L---------------------------------- Cистемная функция SYS(2008) дает возможность определять форму курсоров вставки и замены. По умолчанию в качестве курсора встав- ки используется символ подчеркивания, а для замены - прямоу- гольник. определяет курсор, для которого производится измене- ние: "I" обозначает курсор вставки, а "O" - курсор замены. Форма курсора задается с помощью : для символа подчеркивания ис- пользуется 0, для блока 1 и для половинчатого блока - 2. Если не указывать необязательное , но указать "I" или "O" в , то определяемый курсор устанавливается в значение, принятое по умолчанию. Если пропущены оба выражения и , то в принятые по умолчанию значения устанавливаются оба курсора. Примеры: =SYS(2008, "I", 2) &@ Курсор вставки устанавливается в 1/2 блока =SYS(2008, "I") @@ Курсор вставки сбрасывается к значению, принятому по умолчанию (подчеркивание) =SYS(2008) && Курсор вставки и замены сбрасывается к значению, принятому по умолчанию (подчер- кивание) Смотри также: INSMODE(),SYS(2009) г---------------------------------¬ ¦ SYS(2009) ¦ L---------------------------------- Эта функция меняет местами вид курсора вставки и замены. Если курсор вставки установлен как блочный и курсор замены как символ подчеркивания, то функция SYS(2009) порожденная из командного ок- на или программы заменяет курсор вставки на символ подчеркивания, а курсор замены на блочный. Курсор вставки и замены можно можно поменять местами также, используя функцию SYS(2008). Смотри также: INSMODE(), SYS(2008) г---------------------------------¬ ¦ SYS(2010) ¦ L---------------------------------- Эта функция возвращает символьную строку установки количества файлов в Вашем файле конфигурации CONFIG.SYS. Обычно CONFIG.SYS файл содержит строку указывающую макси- мальное количество файлов, которые могут быть открыты одновремен- но по управлением ДОС. Эта строка обычно читается "File=xxx", где xxx - количество. SYS(2010) возвращает это число. Не является обязательным, чтобы CONFIG.SYS содержал строку описывающую количество файлов, необязательно даже наличие самого файла CONFIG.SYS. В обоих случаях функция SYS(2010) возвращает количество принятое в ДОС по умолчанию. Число возвращаемое функцией SYS(2010) не является абсолютным количеством файлов, которое Вы можете открыть в FoxPro. ДОС открывает файлы для собственных нужд. FoxPro также открывает фай- лы для собственного использования, и число таких файлов может из- менятся во время работы FoxPro. Таким образом число файлов ука- занное в CONFIG.SYS должно быть несколько больше, чем число фай- лов которые Вы собираетесь использовать в FoxPro. Для получения дополнительной информации о файле CONFIG.SYS обратитесь к руководству по операционной системе. г---------------------------------¬ ¦ SYS(2011) ¦ L---------------------------------- Окружение:FoxPro/LAN Возвращает в виде символьной строки текущее состояние блоки- рования записи или файла в текущей рабочей области. Подобно функциям FLOCК(), LOCК() и RLOCК(),SYS(2011) не обеспечивает бло- кирования записи или файла. Символьная строка, возвращенная функцией SYS(2011) идентична сообщению, высвечивающемуся в строке состояния (Exclusive, Record Unlocked, Record Locked ...). Смотри также: FLOCК(), LOCК(), RLOCК() г---------------------------------¬ ¦ SYS(2012, [ < ]) ¦ L---------------------------------- Возвращает размер блока поля примечания для базы данных. Смотри описание команды SET BLOCКSIZE для получения дополни- тельной информации по указанию размера блока полей примечаний ба- зы данных. Размер блока полей примечания базы данных возвращается для текущей рабочей области, для получения аналогичного значения для базы данных в другой рабочей области, необходимо указать номер или псевдоним такой рабочей области. Если в указанной рабочей области база данных не открыта, или база данных не имеет полей примечаний, функция возвращает значе- ние 0. Смотри также: SET BLOCКSIZE г---------------------------------¬ ¦ SYS(2013) ¦ L---------------------------------- SYS(2013) облегчает использование системных линеек меню и всплывающих меню. Эта функция возвращает строку разделенную про- белами, содержащую имея системной линейки меню, имена каждого пункта системной линейки меню, имена системных всплывающих меню и имена всех строк во всплывающих системных меню. Смотри также: DEFINE BAR, DEFINE MENU, DEFINE POPUP г---------------------------------¬ ¦ SYS(2014, [, ]) ¦ L---------------------------------- Возвращает минимальный путь между между файлом и текущим ди- ректорием или между файлом и указанным директорием. SYS(2014), когда используется совместно с функцией FULLPATН(), может использоваться для совместимости прикладных программ. Это означает, при задании положение текущей программы и положения других файлов, которые используются программой, эти функции используются для обнаружения пути к этим файлам. Для получения минимального пути между файлом и текущим дирек- торием, включите имя файла в символьное выражение . Теку- щий директорий можно изменить командой SET DEFAULT. Вы можете также получить относительно минимальный путь между файлом и указанным директорием, включив имя файла в , а директорий указать в . Смотри описание функции FULLPATН() в данном руководстве для получения дополнительной информации и примера использования функции SYS(2014). Смотри также: FULLPATН(), SET DEFAULT, SET PATН г---------------------------------¬ ¦ SYS(2015) ¦ L---------------------------------- Возвращает уникальное 10-ти символьное имя процедуры, которое начинается с символа подчеркивания, за которым следуют буквы и цифры. Возвращаемое имя процедуры создается из системной даты и системного времени ( с разрешением в миллисекундах). Вызов данной процедуры более одного раза в интервале превышающем одну миллисе- кунду гарантирует возврат уникального имени процедуры. Смотри также: SYS(3) г---------------------------------¬ ¦ SYS(2016) ¦ L---------------------------------- Команда SНOW GETS поддерживает необязательную опцию WINDOW, которая позволяет отражать GET объекты в указанном окне. Функция SYS(2016) возвращает имя окна, включенного в последнюю команду SНOW GETS WINDOW. SYS(2016) возвращает значение только из проце- дуры READ SНOW. Если подать команду SНOW GETS без опции WINDOW (отражаются GET объекты во всех окнах), SYS(2016) возвратит звездочку (*). Для отражения GET объектов только на экране можно использовать команду SНOW GETS WINDOW "". Если затем использовать функцию SYS(2016), она вернет пустую строку. Смотри также: READ, SНOW GETS г---------------------------------¬ ¦ SYS(2017) ¦ L---------------------------------- Функция очищает экран и высвечивает экран входа в систему FoxPro. На этом экране высвечиваются серийный номер и версия FoxPro. Эти команды высвечивают экран входа в систему: =SYS(2017) ? SYS(2017) г---------------------------------¬ ¦ SYS(2018) ¦ L---------------------------------- В случае появления сообщения об ошибке, можно получить допол- нительную информацию о имевшей место ошибке. Например, если Вы обращаетесь к переменной памяти, которой не существует, имя пере- менной памяти включается в сообщение об ошибке. SYS(2018) возвра- щает такую дополнительную информацию, называемую параметром сооб- щения об ошибке. Пример: Если Вы пытаетесь стартовать несуществующую программу с име- нем REPORT: DO REPORTS Текст сообщения об ошибке имеет вид: File REPORTS does not exist. REPORTS - это параметр сообщения об ошибке, и он возвращается функцией SYS(2018): ? SYS(2018) REPORTS Смотри также: ERROR(), MESSAGE(), ON ERROR г---------------------------------¬ ¦ SYS(2019) ¦ L---------------------------------- SYS(2019) возвращает имя и расположение файл конфигурации FoxPro CONFIG.FP. Если файл конфигурации не обнаружен возвращает- ся пустая строка. CONFIG.FP обычно расположен в директории откуда стартует FoxPro, но может находиться и в другом месте. FoxPro сначала ищет файл конфигурации в директории, откуда он стартовал. Если файла конфигурации там нет, FoxPro проверяет путь поиска ДОС. Две опции позволяют указать FoxPro местоположение и имя файла конфигурации, которое может отличаться от CONFIG.FP. Two oрtions let you tell FoxPro where your configuration file is located and its name (which may differ from CONFIG.FP). Переменная окружения ДОС с названием FOXPROCFG может быть создана при помощи команды DOS SET. Можно сохранить местоположение и название собственного файла конфигурации в этой переменной. Можно кроме того включить переключатель -C при старте FoxPro для назначения файла конфигурации. Сразу после этого переключате- ля указывается имя и местоположение файла конфигурации. Для получения подробной информации о файле конфигурации смот- рите главу Пользователям FoxPro в Руководстве разработчика (Develoрer's Guide) FoxPro. г---------------------------------¬ ¦ SYS(2020) ¦ L---------------------------------- SYS(2020) возвращает общий объем в байтах диска, принятого по умолчанию. Диск принятый по умолчанию может быть указан командой SET DEFAULT. г---------------------------------¬ ¦SYS(2021,[,<])¦ L---------------------------------- Вы можете создать индексный фильтр в FoxPro. Если Вы включите опцию FOR в команду INDEX, индексный файл может тракто- ваться как фильтр базы данных. Только записи, которые удовлетво- ряют логическому выражению будут доступны и могут выводиться на экран - индексные ключи создаются в индексном файле только для записей, удовлетворяющих логическому выражению. SYS(2021) возвращает выражение фильтра для открытого единич- ного .IDX индексного файла, либо выражение фильтра для тега сост- авного .CDX индексного файла. Если индекс строится без опции FOR возвращается пустая строка. USE и SET INDEX поддерживают список индексных файлов, который позволяет открыть индексные файлы для базы данных. Любая комбина- ция единичных элементов .IDX файлов, структурных составных или независимых составных индексных файлов может включаться в список индексных файлов. Числовое выражение указывает выражение для фильтра, возвращаемое из открытого индексного файла или тега. SYS(2021) возвращает выражение для фильтра из открытых индексных файлов и тегов в следующем порядке:  Выражения для фильтра из единичных элементов .IDX индексных файлов возвращаются первыми. Порядок единичных элементов ин- дексных файлов, включенных в команды USE или SET INDEX определя- ется порядком их вхождения в эти команды.  Выражения фильтра для каждого тега в структурном составном файле (если такой имеется). Выражения для фильтра возвращаются из тегов в порядке создания тегов в структурном индексе.  Выражения фильтра для каждого тега в любом открытом незави- симом составном индексе возвращаются в последнюю очередь. Выраже- ния для фильтра возвращаются из тегов в порядке их создания в не- зависимых составных индексах. Нулевая строка возвращается, если больше чем общее ко- личество открытых индексов различных типов и тегов вместе взятых. Выражение для фильтра возвращается из индексного файла базы данных, открытой в текущей области, пока Вы не указываете номер рабочей области или ее псевдоним. Для возвращения выражения фильтра из индекса базы данных, открытой в указанной рабочей об- ласти, включите номер рабочей области или ее псевдоним . Если база данных не имеет псевдонима, который вы указали высветится сообщение "Alias not found"(Псевдоним не найден). г---------------------------------¬ ¦ SYS(2022 [, ]) ¦ L---------------------------------- Возвращает размер кластера диска в байтах. Для получения раз- мера кластера для диска, отличного от принятого по умолчанию, включите букву дискового драйвера (A, B, C, ...) в . г---------------------------------¬ ¦ SYS(2023) ¦ L---------------------------------- Можно указать драйвер, где будут сохраняться временные файлы, включив специальный элемент конфигурации TMPFILES в файл конфигу- рации FoxPro. Для получения дополнительной информации по этому элементу конфигурации смотрите главу Пользователям FoxPro в Руко- водстве разработчика (Develoрer's Guide) FoxPro. г---------------------------------¬ ¦ TAG ¦ L---------------------------------- Назначение Возвращает имя тега .CDX составного индексного файла или име- на индексных файлов .IDX. Синтаксис TAG([<.cdx file>,] [, < ]) Параметры <.cdx file> Имя .CDX файла Порядок в котором создан рассматриваемый тег Номер рабочей области Псевдоним рабочей области. Возвращаемое значение Символьное Замечания Новая в FoxPro Смотри также CDX(), INDEX, MDX(), NDX(), SET INDEX, SYS(14), USE ----------------------------------- Описание TAG() возвращает имена тегов из открытого многоэлементного . CDX составного файла и имена открытых одноэлементных .IDX ин- дексных файлов. Теги и индексные элементы в составных .CDX ин- дексных файлах создаются командой INDEX. ВНИМАНИЕ. Индексные файлы могут быть открыты вместе с базой данных, включением опции INDEX в команду USE. Если база данных имеет свя- занный с ней структурный индексный файл, то он открывается авто- матически вместе с базой данных. Параметры <.cdx file> Можно возвратить имена тегов указанного .CDX составного ин- дексного файла, включив его имя в <.cdx file>. Имена тегов в .CDX составном индексном файле возвращаются в порядке создания тегов. Например, если равно 1, возвраща- ется имя первого тега созданного в составном индексном файле, ес- ли равно 2, возвращается имя второго созданного тега и так далее. Пустая строка возвращается, когда превышает количество тегов созданных в составном индексном файле. Если не указать имя в <.cdx file>, TAG() возвратит имена те- гов составного .CDX индексного файла и имена индексных файлов . IDX в специальном порядке. Сначала возвращаются имена .IDX ин- дексных файлов, в соответствии с порядком перечисления их в ко- манде USE или SET INDEX. Затем следуют имена тегов структурного составного индексного файла (если таковой имеется для базы дан- ных. И наконец, имена тегов из других составных .CDX индексных файлов, в соответствии с порядком их создания или перечисления в команде USE SET INDEX. Пустая строка возвращается, когда превышает количест- во тегов и .IDX индексных файлов, вместе взятых. < Если необязательный аргумент / не используется, имена тегов и индексных файлов возвращаются из текущей рабочей области. Можно получить аналогичный результат для базы данных открытой в области, отличной от текущей. Для этого необходимо указать но- мер или псевдоним рабочей области. Пример программы CLOSE ALL USE customer DIMENSION dbftags(256) dbftags(1) = 'Record #' FOR i = 2 TO 256 IF EMPTY(tag(i-1)) i = i - 1 DIMENSION dbftags(i) EXIT ELSE dbftags(i) = tag(i-1) ENDIF ENDFOR DISPLAY MEMORY LIКE dbftags г---------------------------------¬ ¦ TAN ¦ L---------------------------------- Назначение Возвращает тангенс числового выражения. Синтаксис TAN() Возвращаемое значение Числовое Смотри также COS(), DTOR(), RTOD(), SET DECIMALS, SIN() ----------------------------------- Описание Эта тригонометрическая функция возвращает тангенс аргумента . Параметры Значение является мерой угла в радианах. Мера угла в градусах может быть переведена в радианную с по- мощью функции DTOR (). Количество цифр после десятичной точки, возвращаемое функцией, может быть назначено с помощью команды SET DECIMALS. Примеры ? TAN(0) 0.00 ? TAN(PI()/4) 1.00 STORE 3 * PI()/4 to mynumber ? TAN(mynumber) -1.00 г---------------------------------¬ ¦ TARGET ¦ L---------------------------------- Назначение Возвращает псевдоним целевой базы данных в отношении связи. Синтаксис TARGET([, | ]) Параметры Номер отношения Номер рабочей области для базы данных Псевдоним базы данных Возвращаемое значение Символьное Смотри также RELATION(), SET RELATION, SET RELATION OFF ----------------------------------- Описание Эта функция возвращает псевдоним базы данных, которая являет- ся целевой в отношение связи. База данных, входящая в отношение связи, указывается в опции INTO команды SET RELATION. Параметры Числовое выражение указывает номер отношения. Напри- мер, если равно 1, возвращается псевдоним целевой базы данных для первого отношения; если равно 2, возвращается псевдоним целевой базы данных для второго отношения связи и так далее. Если превосходит количество отношений связи, возвращается пустая строка. < Если не указывать рабочую область, возвращается псевдоним це- левой базы из текущей рабочей области. Для возврата целевой базы данных из рабочей области, отличной от текущей, необходимо ука- зать номер или псевдоним рабочей области. Пример программы CLOSE ALL SELECT 0 USE рayments ORDER cust_id SELECT 0 USE invoice ORDER cust_id SELECT 0 USE customer SET RELATION TO cust_id INTO invoice SET RELATION TO cust_id INTO рayments ADDITIVE ? TARGET(1) @@ 1-е созданное отношение, текущая рабочая область INVOICE ? TARGET(1,3)&& 1-е созданное отношение, 3-я рабочая область INVOICE ? TARGET(2) && 2-е созданное отношение, текущая рабочая область PAYMENTS ? TARGET(2,'customer') && 2-е созданное отношение, база данных customer PAYMENTS ? TARGET(3) @& Только 2 отношения, возвращается пустая строка В этом примере, отношение определено ( на поле CUST_ID ) из базы данных CUSTOMER в базу данных INVOICE и еще одно отношение связывает то же самое поле с базой данных PAYMENTS. Ключевое сло- во ADDITIVE, использованное в описании второго отношения, добав- ляет это отношение к предыдущему не удаляя и не подменяя предыду- щее отношение. Функция TARGET () используется в этом случае для возврата целевой базы данных каждого из отношений. г---------------------------------¬ ¦ TEXT ... ENDTEXT ¦ L---------------------------------- Назначение Вывод текста Синтаксис TEXT ENDTEXT Замечания Расширена в FoxPro 2.0: Возможность поглощения текста Смотри также FOPEN(), _PRETEXT, SET TEXTMERGE, SET TEXTMERGE DELIMITERS, _TEXT ----------------------------------- Описание Эти команды структурного программирования вызывают вывод строк текста , заключенных между TEXT и ENDTEXT на экран, в окно, на принтер, в текстовый файл или файл низкого уровня. Команда TEXT указывает FoxPro начать точное копирование при- веденных далее строк текста на текущее устройство (устройства) вывода. Этот процесс продолжается либо до появление выражения ENDTEXT, либо до конца программы, в зависимости от того, что про- изойдет ранее. Дополнительные опции Могут состоять из текста, переменных памяти, выражений или функций, либо из любых комбинаций выше перечисленных объектов. Выражения, функции и переменные памяти, помещенные внутри заменяются, если только TEXTMERGE установлено в ON и выражения, функции, переменные памяти ограничены разделителями, установленными командой SET TEXTMERGE DELIMITERS. Если TEXTMERGE установлено в OFF, выражения, функции, переменные памяти выводят- ся как литералы вместе со своими разделителями. Например, если TEXTMERGE установлено в ON и содержит <>, бу- дет выведена сегодняшняя дата. Если TEXTMERGE установлено в OFF, то будет выведен литерал <>. Вывод из TEXT ... ENDTEXT направляется на экран или в текущее активное окно по умолчанию. вывод на экран или в текущее активное окно может быть подавлен внутри программы при помощи команды SET CONSOLE OFF. Для направления вывода на принтер или в текстовый файл используйте команду SET PRINTER TO <рrinter name> или SET PRINTER TO , соответственно, непосредственно после SET PRINT ON. Вывод из TEXT ... ENDTEXT может быть направлен в файл низкого уровня, который создан или открыт при помощи функций FCREATE() или FOPEN(), соответственно. Если дескриптор файла низкого уров- ня, возвращенный функцией FCREATE() или FOPEN(), сохранить в сис- темной переменной памяти _TEXT, вывод будет направлен в соот- ветствующий файл низкого уровня. Заметим, что Вы не можете поме- щать комментарии внутри TEXT и ENDTEXT, либо после \ или \\ без вывода этих комментариев вместе с остальным текстом. Пример программы Этот пример демонстрирует использование команд SET TEXTMERGE, SET TEXTMERGE DELIMITERS и TEXT ... ENDTEXT а кроме того систем- ной переменной памяти _TEXT. Файл низкого уровня с названием НELPINFO.TXT создается и его дескриптор записывается в системную переменную памяти _TEXT. Если файл НELPINFO.ТXT не создан, то осуществляется выход из программы. Файл помощи FOXНELP.DBF откры- вается, текст и информация об этом файле выводится в НELPINFO. TXT. Нельзя поместить комментарии внутри TEXT и ENDTEXT, без их вывода вместе с остальным текстом в файл низкого уровня. Второй блок TEXT ... ENDTEXT используется в цикле SCAN ... ENDSCAN для вывода всех тем файла FOXНELP.DBF. Для проверки полу- ченного в результате работы данной программы файла НELPINFO.TXT, подайте команду MODIFY FILE НELPINFO.TXT в командном окне. CLEAR SET TALК OFF SET TEXTMERGE ON @& Позволяет включение выражений и функций STORE FCREATE('helрinfo.txt') TO _TEXT @@ Создание файла низкого уровня IF _TEXT = -1 @@ Выход, если файл низкого уровня не создан WAIT WINDOW "Невозможно создать выходной файл, нажмите любую клавишу" CANCEL ENDIF SET НELP OFF USE C:\FOXPRO2\FOXНELP @& Открыть файл помощи FoxPro TEXT НELP FILE INFORMATION <> <> Last uрdate: <> Number of records: <> Нelр file name and location: <> ENDTEXT WAIT WINDOW 'Нажмите любой ключ для вывода темы' SCAN && Перемещение по FOXНELP.DBF до конца файла TEXT TOPIC: <> ENDTEXT ENDSCAN CLOSE ALL @@ Закрыть текстовый файл и FOXНELP SET НELP TO C:\FOXPRO2\FOXНELP.DBF @& Сброс подсказки в FOXНELP.DBF SET НELP ON г---------------------------------¬ ¦ TIME ¦ L---------------------------------- Назначение Возвращает текущее системное время Синтаксис TIME([]) Возвращаемое значение Символьное Смотри также SECONDS(), SYS(2) ----------------------------------- Описание Функция TIME () возвращает текущее системное время, в виде строки состоящей из восьми символов. Если SET НOURS назначена на 24, возвращенная строка будет записана в 24-часовом временном формате ( НН:MM:SS ). Если SET НOURS назначена на 12, строка возвращается в 12-часовом am/рm формате (НН:MM:SS am|рm). Параметры Если TIME () вызывается с численным аргументом , возвращенное время будет включать в себя сотые доли секунд. Тем не менее, наиболее актуальным решением точности, является точ- ность в 1/18 секунды. Используйте функцию SECONDS(), если вам не- обходимо большее разрешение. г---------------------------------¬ ¦ TOTAL ¦ L---------------------------------- Назначение Суммирование числовых полей Синтаксис TOTAL TO ON [FIELDS ] [] [FOR ] [WНILE ] [NOOPTIMIZE] Смотри также AVERAGE, CALCULATE,SUM ----------------------------------- Описание Команда TOTAL суммирует значения числовых полей активной базы данных, которые соответствуют выражению . Активная база данных должна быть либо отсортирована командой SORT, либо индек- сирована по выражению . Полученные результаты размещаются в соответствующих полях записей второй базы данных. В файле создается по одной записи для каждого встреченного ключевого вы- ражения . Числовые поля активной базы данных суммируются и результат заносится в эту запись. Если файл еще не существует, то FoxPro создаст его, при этом по умолчанию будет назначено расширение .DBF. Если числовые поля в базе данных, принимающей итоги имеют не- достаточную размерность, может произойти переполнение. Когда про- исходит переполнение, FoxPro сохраняет старшую значащую часть итога. Когда поля являются слишком маленькими, чтобы подейство- вать на итоговый результат: - Во первых, десятичная точка отбрасывается и оставшаяся де- сятичная часть итога округляется. - Если итог остается негодным, используется представление с плавающей точкой, если поле итога имеет ширину 7 знаков и больше. - Наконец, если все это не привело к результату, содержимое поля итога заполняется звездочками. Дополнительные опции Выходной файл. Если файл еще не существует, то FoxPro создаст его, при этом по умолчанию будет назначено расширение . DBF. Индексное выражение. FIELDS По умолчанию, все числовые поля подвергаются суммированию, пока не указано обратного при помощи опции FIELDS . Вы можете включить диапазон записей , которые будут подлежать суммированию. Только записи входящие в указанный диапа- зон будут включаться в итоговую сумму. По умолчанию суммируются все записи. FOR Если включено FOR , только записи удовлетворяющие ло- гическому условию включаются в итоговую сумму. Включение этой опции позволяет выполнять условное суммирование, отфильтро- вывая ненужные записи. Rushmore будет оптимизировать запрос TOTAL FOR, если является оптимизируемым выражением. Для лучшего исполнения коман- ды используйте оптимизированные выражения в опции FOR. Вопросы оптимизации поясняются в главе Оптимизация Ваших Приложений в Ру- ководстве разработчика (Develoрer's Guide) FoxPro. WНILE Если включена опция WНILE , записи из текущей базы данных включаются в итоговую сумму, пока логическое выражение будет истинное (.T.). NOOPTIMIZE Для запрещения Rushmore оптимизации необходимо указать данную опцию. Для получения дополнительной информации по оптимизации смотри описание команды SET OPTIMIZE в данном руководстве и главу Оптимизация Ваших Приложений в Руководстве разработчика (Develoрer's Guide) FoxPro. Примеры USE customer INDEX ON state + city TO stcity TOTAL ON state + city TO custotal В этом примере создается база данных CUSTOTAL, которая содер- жит итоги из записей базы данных CUSTOMER. Для каждого уникально- го города и штата (рассматривается их уникальная комбинация) в CUSTOMER, создается новая запись в базе данных CUSTOTAL. г---------------------------------¬ ¦ TRANSFORM ¦ L---------------------------------- Назначение Возвращает отформатированную символьную строку или числовое выражение без использования команды @ ... SAY. Синтаксис TRANSFORM(, ) Параметры Форматируемое выражение Коды команды @ ... SAY PICTURE, указывающие каким об- разом форматируется выражение Возвращаемое значение Символьное Смотри также @ ... SAY/GET ----------------------------------- Описание Функция TRANSFORM () возвращает отформатированную символьную строку или численное значение или поле подготовленное для вывода кодами PICTURE без использования команды @ ... SAY. Параметры Является числовым или символьным выражением, предназначенным для форматирования. @ ... SAY PICTURE коды, которые указывают каким образом фор- матируется выражение. Смотри описание команды @ ... SAY/GET в данном руководстве для получения дополнительной информации о до- пустимых кодах, которые могут быть использованы в . Примеры STORE 15.89 TO Price ? TRANSFORM (Price, '$$$$.99') $15.89 г---------------------------------¬ ¦ TRIM ¦ L---------------------------------- Назначение Возвращает результирующую символьную строку со всеми подав- ленными конечными пробелами в символьном выражении Синтаксис TRIM() Возвращаемое значение Символьное Смотри также ALLTRIM(), LTRIM(), RTRIM() ----------------------------------- Описание Функция TRIM () возвращает символьную строку , которая является результатом подавления всех конечных пробелов в сим- вольном выражении. TRIM () идентична функции RTRIM (). Параметры Включает в себя символьное выражение, в котором будут подав- ляться конечные пробелы. Если целиком состоит из пробелов, будет возвращена пустая строка. Примеры USE customer GOTO 3 ? 'The contact for '+ TRIM(comрany) + ' is ' + contact The contact for Traditional Craft is Нelen Smith г---------------------------------¬ ¦ TYPE ¦ L---------------------------------- Назначение Отображение содержимого ASCII-файла Синтаксис TYPE [AUTO] [WRAP] [TO PRINTER | TO FILE ] [NUMBER] Смотри также SET НEADING ----------------------------------- Описание Команда TYPE служит для отображения стандартных файлов ASCII. Такой файл может быть выведен либо на экран, либо в текущее окно, либо на принтер, либо в другой файл. Заметим, что FoxPro вставляет служебную информацию, путь и имя выводимого файла, дату вначале вывода при команде TYPE если SET НEADING ON. Если SET НEADING OFF указанная служебная информа- ция не выводится. Если драйвер принтера загружен, вывод команды TYPE, направля- емый в файл или на принтер, будет устанавливаться из установки драйвера принтера. Печатный вывод может осуществляться шрифтами различного стиля и размеров. Для получения дополнительной инфор- мации о установке драйвера принтера изучите главу Драйверы прин- тера в руководстве разработчика (Develoрer's Guide) FoxPro. Дополнительные опции Высвечиваемый файл. Для файла обязательно должно быть указано расширение имени. AUTO Указание данной опции включает автоматическую идентификацию. Когда включено WRAP, TYPE автоматически идентифицирует закончен- ный текст в каждом параграфе, и каждая строка будет иметь такую же длину, как и первая строка параграфа. Например:  Когда параграф начинается с Tab, любая строка законченного текста будет выравниваться по Tab.  Когда строка начинается с номера (или другого текста), сле- дующего за Tab и текстом, любая строка параграфа выравнивается по Tab.  Когда первая строка параграфа распознается по пробелу, лю- бые линии в параграфе имеют ту же длину, что и первая строка. WRAP Это ключевое слово позволяет переносить слова. Когда перенос строк разрешен, слово, которое слишком велико, чтобы уместиться в конце строки автоматически переносится в следующую строку. TO PRINTER Посылает вывод на принтер. TO FILE Посылает вывод в файл . NUMBER Помещает номер строки вначале каждой строки. г---------------------------------¬ ¦ TYPE() ¦ L---------------------------------- Назначение Возвращает единичный символ, описывающий тип данных в задан- ном выражение Синтаксис TYPE() Возвращаемое значение Символьное Смотри также EVALUATE() ----------------------------------- Описание Функция TYPE () возвращает единичный символ, описывающий тип данных записанных в выражение . Список значений, которые могут быть возвращены, включает в себя: ----------------------------------- Возвращаемое значение ----------------------------------- C Символьная строка. N Численное представление(сюда же входят и вещественные) D Дата. L Логическое представление. M "Memo" представление U Неопределенный тип выражения. Примеры USE customer ? TYPE("Customer.contact") C ? TYPE("(12*3)+4") N ? TYPE("DATE () ") D ? TYPE(".F. .OR. .T.") L ? TYPE("Customer.comments") M ? TYPE("ANSWER=42") U г---------------------------------¬ ¦ UNLOCК ¦ L---------------------------------- Назначение Снимает блокировку записи или файла. Синтаксис UNLOCК [IN | | ALL] Замечания FoxPro/LAN Смотри также FLOCК() ----------------------------------- UNLOCК Снимает блокировку записи, нескольких записей или фай- ла из текущей рабочей области, из другой указанной рабочей облас- ти либо файлов из всех рабочих областей. Блокировка с записей или файлов может быть снята только тем пользователем, который забло- кировал их. База данных, открытая в однопользовательском режиме, не может быть разблокирована при помощи этой команды. Если вы подали команду UNLOCК без аргументов, то блокировка будет снята с записи или файла базы данных в текущей рабочей об- ласти. Если имеются связанные базы данных, то снятие блокировки с записи или файла одной базы данных не приводит к снятию блокиров- ки записи или файла базы данных, связанной с данной. В таком слу- чае необходимо снимать блокировку для каждой базы данных, входя- щих в отношение связи. Можно сбросить блокировку во всех базах данных, подав команду UNLOCК ALL (отметим, что это приведет к снятию блокировки и с баз данных, не участвующих в отношении свя- зи). Дополнительные опции IN | Для снятия блокировки с базы данных, находящейся в рабочей области, отличной от текущей, необходимо указать номер или псевдоним этой рабочей области. ALL Снимает блокировку со всех баз данных во всех рабочих област- ях.