|
Часть 4
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ALEN є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает число элементов, строк или столбцов в массиве.
Синтаксис
ALEN( [, ])
Параметры
одно- или двумерный массив
Если 0, то ALEN возвращает число элементов
Если 1, то ALEN возвращает число строк
Если 2, то ALEN возвращает число столбцов
Тип возвращаемого значения
Числовой
Замечания
Новая для FoxPro 2.0
Смотри также
ADEL(), ADIR(), AFIELDS(), ASCAN(), AELEMENT(), AINS(),
ASORT(), ASUBSCRIPT(), DIMENSION, STORE
Описание
Эта функция возвращает число элементов, строк или столбцов в массиве.
Параметры
задает имя массива, информацию о котором возвращает функ-
ция ALEN().
Вы можете включать в эту функцию необязательный аргумент ,
равный 0, 1 или 2. Если вы не задали этот аргумент, то по умолчанию
его значение принимается равным 0. Явно задавая 0, вы опять получите
число элементов в массиве .
Если вы задали 1, то ALEN() возвратит число строк в массиве
. Если массив был создан с одним индексом (одномерный), то
ALEN() возвратит этот индекс. Если массив был создан с двумя индексами
(двумерный), то ALEN() возвратит первый индекс.
Если вы задали 2, то ALEN() возвратит число столбцов в массиве
. Если массив был создан с одним индексом (одномерный), то
ALEN() возвратит 0, т.е. нет столбцов. Если массив был создан с двумя
индексами (двумерный), то ALEN() возвратит второй индекс.
Примеры
DIMENSION x(5)
DIMENSION y(3,7)
? ALEN(x)
5
? ALEN(x,0)
5
? ALEN(x,1)
5
? ALEN(x,2)
0
? ALEN(y)
21
? ALEN(y,1)
3
? ALEN(y,2)
7
SELECT DISTINCT state FROM customers INTO ARRAY states
? ALEN(states)
6
В следующем примере из базы данных CUSTOMER в массив переменных
памяти COMPANIES копируется поле COMPANY. Массив COMPANIES инициализи-
руется с одной строкой и одним столбцом. ALEN() возвращает число строк
базы данных, и поэтому COMPANIES может быть динамически перераспреде-
лен, если это необходимо, в соответствии с числом этих компаний. Затем
командой COPY TO ARRAY поле COMPANY копируется в массив COMPANIES.
IF USED('customer')
SELECT customer
ELSE
USE LOCFILE('customer.dbf','DBF','Where is CUSTOMER.DBF?')
ENDIF
DIMENSION companies(1,1)
COUNT TO m.count
IF m.count > ALEN(companies)
*** Массив слишком мал, надо увеличить ***
DIMENSION companies(m.count,1)
ENDIF
COPY TO ARRAY companies FIELD Company
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ALIAS є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает псевдоним заданной рабочей области
Синтаксис
ALIAS([])
Тип возвращаемого значения
Символьный
Смотри также
DBF(), SELECT()
Описание
Функция ALIAS() возвращает псевдоним для базы данных в заданной
рабочей области.
Параметр
Функция ALIAS() возвращает псевдоним для базы данных в рабочей об-
ласти, указываемой числовым выражением .
Если опущено, функция ALIAS() возвращает псевдоним текущей
выбранной рабочей области. Если в указанной рабочей области никакая
база данных не открыта, возвращается нулевая строка.
Примеры
CLOSE ALL
SELECT A
USE states
SELECT B
USE customer ALIAS cust
? ALIAS()
CUST
? ALIAS('states')
STATES
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ALLTRIM є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает строку символов с удаленными ведущими и завершающими пробе-
лами.
Синтаксис
ALLTRIM()
Тип возвращаемого значения
Символьный
Смотри также
LTRIM(), RTRIM(), TRIM()
Описание
Функция ALLTRIM() возвращает данное знаковое выражение ,
причем все ведущие и завершающие пробелы удаляются. Эта функция может
быть особенно полезна в том случае, когда прежде, чем вы используете
введенные данные в последующей команде, вам необходимо убедиться в
том, что данные, введенные пользователем, не имеют пробелов перед ними
и после них.
Параметр
Этот параметр задает строку, из которой будут удаляться пробелы.
Пример
USE customer
@ 5,0 SAY 'Name of Contact person: ' GET person DEFAULT SPACE(20)
LOCATE FOR contact = ALLTRIM(person)
READ
? RECNO()
24
DISPLAY contact, company
Record# CONTACT COMPANY
24 Mike Tine DataTach, Inc.
В этом примере в случае, если пользователь должен включать пробелы
перед именем лица, вступающего в контакт (здесь это имя Mike Tine) или
после него, функция ALLTRIM, будет удалять их, гарантируя, что команда
LOCATE соответствующим образом сочетается с именем.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є APPEND є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Добавляет записи к выбранной базе данных
Синтаксис
APPEND [BLANK]
Смотри также
APPEND FROM ARRAY, BROWSE, CHANGE, EDIT, REPLACE, SET CARRY
Описание
Существует две формы команды APPEND. Обе эти формы выполняют до-
бавление новых записей в конец выбранной на текущий момент базы дан-
ных. Если вы выдали команду APPEND или APPEND BLANK, а файл базы дан-
ных к этому моменту открыт не был, то появляееся диалоговое поле Open
File (открыть файл). Выберите базу данных, к которой вы желаете доба-
вить записи.
Команда APPEND открывает окно редактирования, так что вы можете
вводить в новые записи данные. Любые индексы, открытые во время выпол-
нения команды APPEND, по мере добавления новых записей обновляются.
Опция BLANK
Команда APPEND BLANK добавляет в конец выбранной базы данных одну
пустую запись. Окно редактирования при этом не открывается. Вы можете
отредактировать новую запись при помощи команд BROWSE, CHANGE или
EDIT. Любые индексы, открытые в момент выполнения APPEND BLANK, при
добавлении новых записей обновляются.
При добавлении пустой записи выполняется инициализация каждого по-
ля этой записи пробелами.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є APPEND FROM є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Добавление записей в конец базы данных из другого файла
Синтаксис
APPEND FROM | ?
[FIELDS ]
[FOR ]
[TYPE] [DELIMITED [WITH TAB | WITH | WITH BLANK]
| DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK
| WK1 | WK3 | WKS | WR1 | WRK | XLS ]
Замечания
Расширена в FoxPro 2.0 : Поддерживаются дополнительные типы файлов,
базы данных могут быть открыты в других рабочих областях, поддержива-
ется дополнительные форматы данных из ASCII файлов.
Смотри также
COPY FILE, COPY TO, IMPORT, EXPORT
Описание
Данная форма команды APPEND добавляет в конец выбранной базы дан-
ных записи из .
Предполагается, что является файлом базы данных FoxPro с
расширением .DBF. Если , из которого должны добавляться записи,
не имеет расширения .DBF, то вы должны явно задать его расширение.
Если этот файл не является файлом базы данных FoxPro, то вы должны за-
дать тип TYPE файла, из которого производится добавление.
Если вы добавляете из файла базы данных FoxPro, то база данных из
которой производится добавление может быть открыта в другой рабочей
области. Можно производить добавление и без открытия базы данных, но
при этом файл должен быть доступен на диске.
Если вы используете предложение ?, вместо того, чтобы задать
в явном виде, то появится диалоговое поле Open File, и вы полу-
чите возможность выбрать файл .
Опции
FIELDS
Команда APPEND FROM поддерживает необязательно задаваемый список
полей . Такая форма команды позволяет добавлять к базе
данных только поля с указанными в нем именами.
FOR
Если в команду включено предложение FOR , то новые записи
добавляются только из тех записей файла, указанного в предложении FROM
, для которых принимает значение логической "истины". До-
бавление продолжается то тех пор, пока не встретится конец FROM-файла.
Если предложение FOR опущено, то будут добавлены все записи, пока
FROM-файл не кончится.
TYPE
Это предложение должно использоваться, если FROM-файл не является
базой данных FoxPro. Предложение TYPE служит для задания других типов
файлов. Вы можете использовать команду APPEND FROM с широким набором
различных типов файлов, включая разделенные специальными символами
текстовые файлы ASCII.
При добавлении из файлов, не имеющих обычное расширение по умолча-
нию, вы должны задавать расширение файла явно. Например, для электрон-
ных таблиц Lotus 1-2-3 версий 2.х обычно используется файл с расшире-
нием .WK1. При добавлении из файла электронной таблицы с расширением,
отличным от .WK1, вы должны явно указывать это расширение.
Важно !!!
При добавлении из электронных таблиц, ее данные должны хранится в
порядке старшинства строк, а не в порядке старшинства столбцов. Это
обеспечивает соответствие добавляемых данных электронной таблицы
структуре файла базы данных.
DELIMITED [WITH TAB | WITH | WITH BLANK]
Файл типа DELIMITED представляет собой текстовый ASCII-файл,
каждая запись которого заканчивается возвратом каретки и переводом
строки. Поля обычно разделяются запятыми, а символьные поля допол-
нительно берутся в двойные кавычки. Например,
"555", 9999999, "TELEPHONE"
Однако, для задания файлов, которые должны содержать поля, разде-
ляемые не запятыми, а одним пробелом или символом табуляции, можно
использовать опции DELIMITED WITH BLANK или DELIMITED WITH TAB соот-
ветсвенно, а для указания на то, что символьные поля разделяются не
двойными кавычками, а какими-либо другими символами, может использо-
ваться опция DELIMITED WITH (<разделитель>). Для всех фай-
лов DELIMITED предполагается использование расширения .TXT.
Вы можете импортировать даты из разделенных файлов, если только
они в нем находятся в нужном формате. По умолчанию они имеют формат
'mm/dd/yy'. Позиция столетия не является обязательной - FoxPro при им-
порте автоматически включает номер столетия. Если столетие в дате не
задано (например '12/25/91'), то предполагается двадцатое столетие.
Разделителями в дате могут быть любые нечисловые символы, за исключе-
нием разделителя, разделяющего поля в разделенном файле.
Даты других форматов могут импортироваться без всяких ограничений,
если их формат соответствует доступному формату даты в SET DATE. Для
импорта дат не в формате по умолчанию, перед использованием APPEND
FROM задайте нужный формат командой SET DATE. Для проверки успешности
импортирования дат, используйте функцию CTOD(). Если даты обрабатыва-
ются этой функцией, то они будет импортированы так как нужно.
DIF
В случае DIF файла (Data Interchange Format (Формат Обмена Данны-
ми) используемый VisiCalc) вектора (столбцы) становятся полями, а кор-
тежи (строки) становятся записями. Предполагается, что DIF файлы имеют
расширение .DIF.
FW2
FW2 файлы, создаваемые Framework II. Предполагается, что FW2 файлы
имеют расширение .FW2.
MOD
MOD файлы, создаваемые Multiplan версии 4.01 фирмы Microsoft.
Предполагается, что MOD файлы имеют расширение .MOD.
PDOX
Файлы базы данных Paradox версии 3.5 фирмы Borland могут добав-
лятся в файлы базы данных FoxPro при включении этой опции. Предполага-
ется, что файлы Paradox имеют расширение .DB.
RPD
RPD файлы создаются RapidFile версии 1.2. Предполагается, что RPD
файлы имеют расширение .RPD.
SDF
Файл SDF (System Data Format (Системный Формат Данных)) представ-
ляет собой текстовый ASCII-файл, в котором все записи имеют фиксиро-
ванную длину и заканчиваются возвратом каретки и переводом строки. По-
ля не разделяются. Для файлов формата SDF предполагается расширение
.TXT.
SYLK
SYLK файлы имеют формат обмена Symbolic Link (используются в
MultiPlan фирмы Microsoft). При импорте из них столбцы становятся по-
лями, а строки записями. SYLK файлы не имеют расширения по умолчанию.
WK1
Эта опция используется при импорте из электронных таблиц Lotus
1-2-3. В базе данных FoxPro столбцы электронной таблицы становятся по-
лями, а ее строки становятся записями. Для электронных таблиц, создан-
ных Lotus 1-2-3 версии 2.х предполагается расширение .WK1.
WK3
Эта опция используется при импорте из электронных таблиц Lotus
1-2-3. В базе данных FoxPro столбцы электронной таблицы становятся по-
лями, а ее строки становятся записями. Для электронных таблиц, создан-
ных Lotus 1-2-3 версии 3.х предполагается расширение .WK3.
WKS
Эта опция используется при импорте из электронных таблиц Lotus
1-2-3. В базе данных FoxPro столбцы электронной таблицы становятся по-
лями, а ее строки становятся записями. Для электронных таблиц, создан-
ных Lotus 1-2-3 версии 1-A предполагается расширение .WKS.
WR1
Эта опция используется при импорте из электронных таблиц Lotus
Symphony . В базе данных FoxPro столбцы электронной таблицы становятся
полями, а ее строки становятся записями. Для электронных таблиц, соз-
данных Lotus Symphony версии 1.1 или 1.2 предполагается расширение
.WR1.
WRK
Эта опция используется при импорте из электронных таблиц Lotus
Symphony . В базе данных FoxPro столбцы электронной таблицы становятся
полями, а ее строки становятся записями. Для электронных таблиц, соз-
данных Lotus Symphony версии 1.0 предполагается расширение .WRК.
XLS
Эта опция используется при импорте из электронных таблиц Microsoft
Excel версии 2.0 . В базе данных FoxPro столбцы электронной таблицы
становятся полями, а ее строки становятся записями. Для электронных
таблиц, созданных Excel предполагается расширение .XLS.
Пример
USE customer
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR state = 'OH'
COPY TO temp TYPE DELIMITED
APPEND FROM temp TYPE DELIMITED
В данном примере открывается база данных CUSTOMER, ее структура
копируется в файл BACKUP, и BACKUP открывается для ввода записей. За-
тем FoxPro добавляет в него все записи из базы данных CUSTOMER с STATE
равным 'OH'. Затем эти записи копируются в новый файл типа DELIMITED с
именем TEMP.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є APPEND FROM ARRAY є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Добавление к базе данных записей из массива
Синтаксис
APPEND FROM ARRAY
[FOR ]
[FIELDS ]
Смотри также
APPEND BLANK, COPY TO ARRAY, DIMENSION, GATHER, SCATTER,
Описание
Команда APPEND FROM ARRAY добавляет к выбранной на текущий момент
базе данных запись из массива переменных памяти. Поля памяти memo иг-
норируются командой APPEND FROM ARRAY. В сетевой версии FoxPro/LAN ко-
манда APPEND FROM ARRAY блокирует заголовок базы данных до осуществле-
ния добавления записей.
Опции
- это имя массива, содержащего копируемые в новую запись
данные.
FOR
Если вы включили в команду предложение FOR , то вы можете
выполнять условное добавление записей из массива. Выражение
должно содержать в своем условном выражении имя поля базы данных, в
которую добавляется запись.
Прежде чем произойдет добавление строки массива в базу данных,
элемент массива, соответствующий полю базы данных, в которое он должен
быть помещен и которое описано в , проверяется на выполнение
условия, заданного в . Если элемент массива удовлетворяет усло-
вию, то происходит добавление записи. Если же условие не удовлетворя-
ется, то добавление записи не происходит, и выполняется проверка сле-
дующей строки массива.
Новые записи добавляются столько раз, сколько строк в массиве.
FIELDS (<список полей>)
Если список полей включается, то только заданные в
нем поля базы данных будут обновлены данными из массива. Первое поле
списка обновляется содержимым первого элемента массива, второе поле
списка содержимым второго элемента массива и т.д.
Одномерные массивы
В случае одномерного массива содержимое его первого элемента ста-
нет первым полем новой добавляемой записи, содержимое второго элемента
станет вторым полем, и так далее.
В том случае, если одномерный массив имеет больше элементов, чем
база данных полей, то все лишние элементы игнорируются. Если же база
даннын имеет больше полей, чем массив элементов, то все лишние поля
инициализируются значениями по умолчанию. В таблице приводятся значе-
ния по умолчанию для различных типов полей:
Тип поля Значение по умолчанию
Символьный Пробелы
Числовой 0
Даты Пустая дата
Логический ложь (.F.)
Двумерные массивы
При добавлении данных из двумерного массива новая запись добавля-
ется для каждой его строки. Например, если массив имеет четыре строки,
то в базу данных будут добавлены четыре новые записи.
Содержимое первого столбца массива становится первым полем новой
добавляемой записи, содержимое второго столбца становится вторым по-
лем, и т.д. Например, если массив имеет четыре строки и три столбца,
то элементы первого столбца массива будут первым полем четырех добав-
ленных записей.
Если двумерный массив имеет больше элементов, чем база данных по-
лей, то оставшиеся столбцы массива игнорируются. Если же база данных
имеет больше полей, чем массив столбцов, то оставшиеся поля инициали-
зируются так же, как это было описано выше для одномерных массивов.
Соответствие типов данных
FoxPro способен заполнять поля базы данных даже при несоответствии
типа данных элемента массива и поля базы данных. В некоторых случаях
поле заменяется элементом массива, в других, оно инициализируется зна-
чением по умолчанию. Смотри таблицу значений по умолчанию для поля
каждого типа.
Следующая таблица иллюстрирует в каких случаях происходит замена
при несоответствии типов данных. "Да" указывает на производимую заме-
ну, "Нет" указывает, что поле инициализируется значением по умолчанию.
Тип элемента Тип поля
Символьный Числовой Даты Логический
Символьный Да Нет Нет Нет
Числовой Да Да Нет Да
Даты Да Да Да Нет
Логический Да Нет Нет Да
Например, если элемент массива содержит значение логической истины
(.Т.) или лжи (.F.), и соответствующее ему поле в только что добавлен-
ной записи имеет символьный тип, FoxPro заменит это поле на Т или F
соответственно.
Пример
CLOSE ALL
SET TALK OFF
CLEAR
SELECT 0
USE customer
SCATTER TO custarray BLANK && Создать пустой массив
FOR count = 1 TO ALEN(custarray) && Число строк в массиве
@ count, 2 SAY FIELD(count) ;
GET custarray(count) && Высветить поля и ввести инфор-
&& мацию
ENDFOR
READ
IF READKEY() != 12 && Если Escape не нажата
APPEND FROM ARRAY custarray && Добавить запись из массива
ENDIF
USE
CLEAR
Данный пример иллюстрирует добавление записи в базу данных. Откры-
вается база данных CUSTOMER и команда SCATTER создает массив CUSTARRAY
с пустыми элементами для каждого поля в базе данных. Цикл FOR ... LOOP
выводит каждое поле. Команда READ активизирует поля GET.
Если для выхода из редактирования клавиша Escape не нажата, то
команда APPEND FROM ARRAY добавляет новую запись. После этого происхо-
дит обновление каждого поля этой записи информацией из массива пере-
менных памяти CUSARRAY.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є APPEND MEMO є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Заполнение поля типа MEMO из файла
Синтаксис
APPEND MEMO FROM [OVERWRITE]
Смотри также
COPY MEMO
Описание
Команда APPEND MEMO позволяет выполнять импорт данных из файла в
поле памяти типа MEMO.
При считывании данных из файла все содержимое файла дописывается к
концу поля памяти типа memo текущей записи. Если же memo поле не су-
ществует или не является полем типа memo, то выдается сообщение об
ошибке. Ошибка также возникает, если не найден указанный .
Опции
Заполняемое memo поле.
Файл, из которого будет заполнятся memo поле. Для требуется
указывать все имя полностью, включая расширение.
OVERWRITE
Если в команду включено необязательное ключевое слово OVERWRITE,
то содержимое поля памяти будет затерто (замещено) содержимым .
Пример
USE Customer
COPY MEMO comments TO test.txt
APPEND MEMO comments FROM test.txt
APPEND MEMO comments FROM test.txt OVERWRITE
В данном примере содержимое поля памяти COMMENTS копируется в файл
TEST.TXT. Затем содержимое TEST.TXT добавляется к полю памяти. И нако-
нец, содержимое TEST.TXT используется для замещения текущего содержи-
мого поля памяти.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ASC є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает код ASCII, эквивалентный первому символу в символьном
выражении
Синтаксис
ASC()
Тип возвращаемого значения
Числовой
Смотри также
CHR()
Описание
Функция ASC() возвращает код ASCII, эквивалентный первому символу
в символьном выражении. Каждый символ имеет эквивалентный ему код
ASCII, лежащий в пределах от 0 до 256. Список ASCII кодов и соот-
ветствующих им символов приведен в "Руководстве Разработчика"
("Developer's Guide") и доступен в пункте ASCII Chart.
Параметр
Символьное выражение задает строку, для первого символа ко-
торой возвращается значение ASCII. Все символы, следующие за первым,
игнорируются.
Примеры
USE Salesrep
? soldby
APS
? ASC(soldby)
65
? ASC("A")
65
? ASC("a")
97
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ASCAN є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Осуществление поиска выражения в массиве переменных памяти
Синтаксис
ASCAN(, [, [, ]])
Параметры
массив переменных памяти в котором проводится поиск
искомое выражение
элемент, с которого начинается поиск
число просматриваемых элементов
Тип возвращаемого значения
Числовой
Замечания
Новая для FoxPro 2.0
Смотри также
ACOPY(), ADEL(), ADIR(), AFIELDS(), AELEMENT(), AINS(), ASORT(),
ASUBSCRIPT(), DIMENSION, SET EXACT
Описание
Эта функция просмотр массива с целью нахождения элемента,
совпадающего с заданным выражением . Если такой элемент найден,
то возвращается его номер; если не найден, то возвращается 0. Массив
может быть одномерным и двумерным.
Параметры
,
Параметр определяет имя массива в котором будет осущест-
вляться поиск выражения .
По умолчанию просматривается весь массив. Включение параметра
задает номер элемента массива, с которого начинается поиск.
Элемент включается в поиск.
Параметр задает число просматриваемых элементов массива.
Поиск начинается с элемента и просматриваются следую-
щих за ним элементов.
Если необязательные числовые выражения и не зада-
ны, то поиск начинается с первого элемента массива и продолжается до
последнего элемента.
Важно !!!
Ссылки на элементы двумерных массивов осуществляются двумя спосо-
бами. В первом случае, используются два индекса, задающие строку и
столбец в которых находится элемент массива; во втором, задается
единственный номер элемента. Эти и другие функции, манипулирующие с
элементами массивов, требуют задание номера элемента (в нашем случае
это параметры и ). Используйте функцию AELEMENT() для
получения номера элемента двумерного массива по его индексам строки и
столбца.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Пример Программы є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
*** Выбор или открытие базы данных customer ***
IF USED('customer')
SELECT customer
ELSE
USE LOCFILE('customer.dbf','DBF','Where is CUSTOMER.DBF?')
ENDIF
COUNT TO m.count
*** Определение достаточно большого массива для данных ***
DIMENSION companies[m.count,1]
COPY TO ARRAY companies FIELD company && Заполнение массива
m.name = 'DataTech Inc.'
m.pos = ASCAN(companies, m.name) && Поиск компании
IF m.pos != 0
*** Компания найдена и удаляется из массива ***
= ADEL(companies, m.pos)
m.count = m.count - 1
ENDIF
DISPLAY MEMORY LIKE companies
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ASIN є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает (в радианах) арксинус числового выражения
Синтаксис
ASIN()
Тип возвращаемого значения
Числовой
Смотри также
RTOD(), SET DECIMALS, SIN()
Описание
Эта тригонометрическая функция возвращает (в радианах) арксинус
числового выражения.
Параметр
Эта тригонометрическая функция возвращает значение arcsin ,
указываемое в радианах и лежащее в интервале от "-пи"/2 до "+пи"/2 (от
-1,57079 до 1,57079). Значение может изменяться от +1 до -1.
Вы можете преобразовать угол, возвращаемый функцией ASIN(), в гра-
дусы, используя функцию RTOD(). Число десятичных разрядов, указываемое
в результате, определяется командой SET DECIMALS.
Примеры
? RTOD(ASIN(0))
0.00
STORE 1 to arcangle
? RTOD(ASIN(arcangle))
90.00
? RTOD(ASIN(SQRT(2)/2))
45.00
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ASORT є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Сортирует массив переменных памяти в возрастающем и убывающем порядке
Синтаксис
ASORT( [, [, [, ]]])
Параметры
массив переменных памяти в котором проводится сортировка
используясь отдельно, задает номер элемента, с которого начи-
нается сортировка
используясь вместе с , задает номер строки, с которой
начинается сортировка
число элементов или строк для сортировки
порядок сортировки. 0 - возрастающий, 1 - убывающий.
Тип возвращаемого значения
Числовой
Замечания
Новая для FoxPro 2.0
Смотри также
ACOPY(), ADEL(), ADIR(), AFIELDS(), AELEMENT(), AINS(), ASCAN()
Описание
Эта функция сортирует элементы массива в возрастающем и убывающем
порядке. Все сортируемые элементы должны иметь один и тот же тип дан-
ных (символьный, числовой, даты или логический). Одномерные массивы
сортируются по их элементам; двумерные массивы сортируются по строкам.
При сортировке двумерных массивов порядок элементов в строках изменя-
ется так, что элементы в столбцах массива будут находится в возрастаю-
щем или убывающем порядке.
Параметры
Включает имя сортируемого массива.
По умолчанию, массивы сортируются, начиная с их первого элемента.
Включая необязательное числовое выражение , вы можете самостоя-
тельно задавать номер элемента, с которого начинать сортировку. Если
массив одномерный, то он начинает сортироваться, начиная с
элемента; элемент с номером включается в сортировку. Если
массив двумерный, то определяет столбец и строку, в которой
находится начальный элемент сортировки и порядок сортировки строк.
Важно !!!
Ссылки на элементы двумерных массивов осуществляются двумя спосо-
бами. В первом случае, используются два индекса, задающие строку и
столбец в которых находится элемент массива; во втором, задается
единственный номер элемента. Эти и другие функции, манипулирующие с
элементами массивов, требуют задание номера элемента (в нашем случае
это параметры и ). Используйте функцию AELEMENT() для
получения номера элемента двумерного массива по его индексам строки и
столбца.
Следующий пример помогает проиллюстрировать, как начальный элемент
определяет порядок сортировки строк в двумерном массиве. Соз-
дается маленький массив MARRAY, который сортируется дважды. Первая
сортировка начинается с первого элемента MARRAY - строки сортируются
на основе значений, содержащихся в первом столбце массива. Вторая сор-
тировка начинается с четвертого элемента MARRAY - строки сортируются
на основе значений, содержащихся во втором столбце массива. Первая
сортировка начинается с первой строки. Вторая, со второй строки. Для
вывода содержимого массива используйте команду DISPLAY MEMORY; ниже
приводятся таблицы, иллюстрирующие результаты сортировок.
DIMENSION marray(3,2)
marray(1) = 'G'
marray(2) = 'A'
marray(3) = 'C'
marray(4) = 'Z'
marray(5) = 'B'
marray(6) = 'N'
Массив выглядит следующим образом.
(Строка,Столбец) 1 2
1 G A
2 C Z
3 B N
Затем массив сортируется функцией ASORT() начиная с первого эле-
мента (1,1). Элементы первого столбца будут располагаться в порядке,
определяемом перестановкой строк массива.
Новый порядок будет следующим.
=ASORT(marray,1)
(Строка,Столбец) 1 2
1 B N
2 C Z
3 G A
Затем массив сортируется функцией ASORT() начиная со второго эле-
мента (2,2). Элементы второго столбца будут располагаться в порядке,
определяемом перестановкой строк массива. Новый порядок будет следую-
щим.
=ASORT(marray,4)
(Строка,Столбец) 1 2
1 B N
2 G A
3 C Z
Если вы задали начальный элемент , то вы можно задать и
число сортируемых элементов в одномерном массиве, или число сортируе-
мых строк в двумерном массиве. Это число задается параметром .
Например, если массив одномерный, равно двум (сортировка начи-
нается со второго элемента) и равно трем (используются три
элемента), то будут сортироваться второй, третий и четвертый элементы
массива. Если равно -1, или вообще опущено, то сортируются все
элементы массива, начиная с и до последнего.
В случае двумерного массива, задает число сортируемых
строк, начиная со строки, содержащей элемент с номером . Напри-
мер, если массив двумерный, равно двум и равно трем ,
то будут сортироваться строка, содержащая второй элемент массива, и
две следующие за ней. второй, третий и четвертый элементы массива.
Если равно -1, или вообще опущено, то сортируются все строки
массива, начиная со строки, содержащей элемент , и до последней
строки.
По умолчанию, массивы сортируются в возрастающем порядке. Для яв-
ного задания способа сортировки служит необязательный числовой пара-
метр . Вы можете задать два порядка сортировки: возрастающий и
убывающий. Если ноль, то массив сортируется в возрастающем по-
рядке. Если 1 или любое ненулевое значение, то массив сортиру-
ется в порядке убывания.
Пример
В этом примере из базы данных CUSTOMER в массив переменных памяти
COMPANIES копируются копируются поля CUST_ID и COMPANY. Затем этот
массив сортируется на основе значений во втором столбце, начиная с
четвертой строки (другими словами, сортируется начиная с 8 элемента).
Затем программа выводит список с элементами, полученными из второго
столбца (наименования компаний) массива COMPANIES.
*** Выбор или открытие базы данных customer ***
IF USED('customer')
SELECT customer
ELSE
USE LOCFILE('customer.dbf','DBF','Where is CUSTOMER.DBF?')
ENDIF
COUNT TO m.count
*** Определение достаточно большого массива для данных ***
DIMENSION companies[m.count,2]
COPY TO ARRAY companies FIELD cust_id,company && Заполнения массива
*** Заметим: первые три строки не сортируются ***
= ASORT(companies, AELEMENT(companies,4,2)) && Сортировка массива
@ 5,30 SAY 'List of Companies:'
@ 7,30 GET m.choice ;
FROM companies ;
RANGE 2 ;
SIZE 10,30 ;
DEFAULT 1
READ && Вывод и GET данных отсортированных компаний
CLEAR
USE
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ASUBSCRIPT є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Получает индекс строки или столбца элемента по его номеру
Синтаксис
ASUBSCRIPT(, , )
Параметры
одно- или двумерный массив
номер элемента
если 1, то ASUBSCRIPT() возвращает индекс строки
если 2, то ASUBSCRIPT() возвращает индекс столбца
Тип возвращаемого значения
Числовой
Замечания
Новая для FoxPro 2.0
Смотри также
ADEL(), ACOPY(), ADIR(), AFIELDS(), AINS(), ASCAN(),
ALEN(), ASORT(), DIMENSION, DISPLAY MEMORY
Описание
Ссылки на элементы двумерных массивов переменных памяти осущест-
вляются двумя способами. В первом случае, используются два индекса,
задающие строку и столбец в которых находится элемент массива; во вто-
ром, задается единственный номер элемента. Эта функция возвращает ин-
декс строки или столбца элемента по номеру элемента.
В следующем примере создается массив 2х3 (2 строки и 3 столбца).
Функция DISPLAY MEMORY выводит содержимое массива в порядке номеров
элементов.
Пример
DIMENSION x(2,3)
DISPLAY MEMORY LIKE x
X Pub A
( 1, 1) L .F. (элемент номер 1)
( 1, 2) L .F. (элемент номер 2)
( 1, 3) L .F. (элемент номер 3)
( 2, 1) L .F. (элемент номер 4)
( 2, 2) L .F. (элемент номер 5)
( 2, 3) L .F. (элемент номер 6)
Элементы могут адресоваться как по их индексам, так и по номеру
элемента - команды STORE 'INVOICE' TO X(2,1) и STORE 'INVOICE' TO X(4)
приведут к занесению строки символов 'INVOICE' в один и тот же элемент
массива.
В одномерных массивах номер элемента совпадает с его единственным
индексом. Поэтому функция ASUBSCRIPT() с одномерными массивами не
используется (хотя может).
Параметры , ,
Если является одномерным массивом, то в задается
номер элемента, а в 1. ASUBSCRIPT() возвращает число, равное
, если выражение меньше или равно числу элементов в
массиве.
Если является двумерным массивом, то обязательно должны
включать номер элемента в и устанавливать в 0 или 1.
Задание 1 в приведет к вычислению индекса строки элемента, а 2
к вычислению индекса столбца.
Важно !!!
Ссылки на элементы двумерных массивов осуществляются двумя спосо-
бами. В первом случае, используются два индекса, задающие строку и
столбец в которых находится элемент массива; во втором, задается
единственный номер элемента. Эти и другие функции, манипулирующие с
элементами массивов, требуют задание номера элемента (в нашем случае
это параметр ). Используйте функцию AELEMENT() для получения
номера элемента двумерного массива по его индексам строки и столбца.
Более подробная информация о строках и столбцах массивов приво-
дится при описании команды DIMENSION.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є AT є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает начальную позицию одного символьного в другом
Синтаксис
AT(, [, ])
Параметры
символьное выражение для поиска
символьное выражение в котором осуществляется поиск
задает какое по счету появление в фиксировать
(поиск до -го появления)
Смотри также
ATC(), LEFT(), RAT(), RIGHT(), SUBSTR()
Описание
Функция AT() выполняет поиск для . Затем она возв-
ращает, как целое число, ту позицию, на которой найдено . Если
не найдено в , возвращается нулевое значение.
Функция AT() осуществляет поиск с учетом регистра (заглавные и
строчные буквы различаются). Для проведения поиска без учета регистра
используйте функцию ATC().
Параметры
,
FoxPro осуществляет поиск символьного выражения в символь-
ном выражении . Если содержит в себе символьное выраже-
ние , то возвращается позиция начала этого появления. Если
не найдено, то возвращается 0. Символьные выражения и
могут быть полями памяти.
Если используется необязательное числовое выражение , то
функция AT() осуществляет поиск до -го появления в
. По умолчанию, AT() ищет первое появление (=1).
Добавление позволяет вам управлять этим процессом.
Примеры
STORE 'Now is the time for all good men ...' TO string
STORE 'is the' TO find_str
? AT(find_str,string)
5
STORE 'IS' TO find_str
? AT(find_str,string)
0
USE items
STORE 'file' to string
LIST ALL item,descript FOR AT(string,descript) > 0
STORE 'AB' TO find_str
STORE 'ABABAB' TO string
? AT(find_str,string,2)
3
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ATAN є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает (в радианах) арктангенс числового выражения
Синтаксис
ATAN()
Тип возвращаемого значения
Числовой
Смотри также
ATN2(), RTOD(), SET DECIMALS, TAN()
Описание
Эта функция возвращает арктангенс числового выражения.
Параметр
Эта тригонометрическая функция возвращает значение арктангенса
числового выражения , указываемое в радианах и лежащее в интер-
вале между "-пи"/2 и "+пи"/2 (от -1,57079 до 1,57079). может
представлять собой любое значение.
Численное значение, возвращаемое функцией ATAN() указывается в ра-
дианах; используя функцию RTOD(), вы можете преобразовать это значе-
ние, выразив его в градусах. Число десятичных разрядов, возвращаемое
функцией ATAN(), определяется командой SET DECIMALS.
Примеры
? ATAN(0)
0.00
STORE PI()/2 to angle
? ATAN(angle)
1.00
? ATAN(PI()/2)
1.00
? ATAN(DTOR(90))
1.00
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ATС є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает начальную позицию одного символьного в другом
Синтаксис
ATС(, [, ])
Параметры
символьное выражение для поиска
символьное выражение в котором осуществляется поиск
задает какое по счету появление в фиксировать
(поиск до -го появления)
Смотри также
AT(), ATCLINE(), LEFT(), RAT(), RIGHT(), SUBSTR()
Описание
Функция ATC() выполняет поиск для . Затем она возв-
ращает, как целое число, ту позицию, на которой найдено . Если
не найдено в , возвращается нулевое значение.
Функция ATC() осуществляет поиск без учета регистра (заглавные и
строчные буквы не различаются). Для проведения поиска с учетом регист-
ра используйте функцию AT().
Параметры
,
FoxPro осуществляет поиск символьного выражения в символь-
ном выражении . Если содержит в себе символьное выраже-
ние , то возвращается позиция начала этого появления. Если
не найдено, то возвращается 0. Символьные выражения и
могут быть полями памяти.
Если используется необязательное числовое выражение , то
функция ATС() осуществляет поиск до -го появления в
. По умолчанию, ATС() ищет первое появление (=1).
Добавление позволяет вам управлять этим процессом.
Примеры
STORE 'Now is the time for all good men ...' TO string
STORE 'IS THE' TO find_str
? ATC(find_str,string)
5
STORE 'IS' TO find_str
? ATC(find_str,string)
5
? ATC('now',string)
1
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ATCLINE є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает номер строки в которой найдено первое появление заданного
символьного выражения. Поиск осуществляется без учета регистра.
Синтаксис
ATCLINE(, )
Параметры
символьное выражение для поиска
символьное выражение в котором осуществляется поиск
Смотри также
AT(), ATC(), ATLINE(), MLINE(), SET MEMOWIDTH
Описание
Функция ATCLINE() осуществляет поиск для первого экземпля-
ра , а затем возвращает, как целое число, номер строки, на ко-
торой оно было найдено. Если не встречается в , возвра-
щается нулевое значение. В отличие от описываемой ниже функции
ATLINE() функция ATCLINE() не чувствительна к регистру символов. Для
проведения поиска с учетом регистра используйте функцию ATLINE().
Внимание !!!
Номер строки, возвращаемой функцией ATCLINE(), зависит от значения
, установленного командой SET MEMOWIDTH, даже если и не явля-
ется полем памяти. Для более подробной информации об этом мы отсылаем
вас к описанию команды SET MEMOWIDTH.
Параметры ,
ATCLINE() ищет в . ATCLINE() возвращает, как целое
число, номер строки, где была найдена.
Строка, содержащая соответствующее символьное выражение, может
быть возвращена как строка символов функцией MLINE(). Длина возвращае-
мой строки зависит от установки команды SET MEMOWIDTH.
Важно !!!
ATCLINE() предоставляет удобный способ поиска в полях памяти.
Примеры
CLOSE ALL
USE customer
GO TOP
CLEAR
STORE 'CALL' TO findstring
LOCATE FOR ATCLINE(findstring, comments) != 0
? company
? contact
? MLINE(comments, ATCLINE(findstring, comments))
В следующем примере показана зависимость возвращаемого функцией
ATCLINE() значения от ширины поля памяти.
STORE '1234567890ABCDEFGHIJ' TO string
SET MEMOWIDTH TO 20
? ATCLINE ('AB', string)
1
SET MEMOWIDTH TO 10
? ATCLINE('AB', string)
2
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ATLINE є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает номер строки в которой найдено первое появление заданного
символьного выражения.
Синтаксис
ATCLINE(, )
Параметры
символьное выражение для поиска
символьное выражение в котором осуществляется поиск
Смотри также
AT(), ATC(), ATСLINE(), MLINE(), SET MEMOWIDTH
Описание
Функция ATLINE() осуществляет поиск для первого экземпляра
, а затем возвращает, как целое число, номер строки, на которой
оно было найдено. Если не встречается в , возвращается
нулевое значение. В отличие от описываемой выше функции ATСLINE()
функция ATLINE() чувствительна к регистру символов. Для проведения по-
иска без учета регистра используйте функцию ATСLINE().
Внимание !!!
Номер строки, возвращаемой функцией ATLINE(), зависит от значения
, установленного командой SET MEMOWIDTH, даже если и не явля-
ется полем памяти. Для более подробной информации об этом мы отсылаем
вас к описанию команды SET MEMOWIDTH.
Параметры ,
ATLINE() ищет в . ATLINE() возвращает, как целое
число, номер строки, где была найдена.
Строка, содержащая соответствующее символьное выражение, может
быть возвращена как строка символов функцией MLINE(). Длина возвращае-
мой строки зависит от установки команды SET MEMOWIDTH.
Важно !!!
ATCLINE() предоставляет удобный способ поиска в полях памяти.
Примеры
CLOSE ALL
USE customer
GO TOP
CLEAR
STORE 'CALL' TO findstring
LOCATE FOR ATCLINE(findstring, comments) != 0
? company
? contact
? MLINE(comments, ATCLINE(findstring, comments))
В следующем примере показана зависимость возвращаемого функцией
ATCLINE() значения от ширины поля памяти.
STORE '1234567890ABCDEFGHIJ' TO string
SET MEMOWIDTH TO 20
? ATCLINE ('AB', string)
1
SET MEMOWIDTH TO 10
? ATCLINE('AB', string)
2
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ATN2 є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает (в радианах) размер угла по значению синуса и косинуса
Синтаксис
ATN2(, )
Параметры
координата х
координата у
Тип возвращаемого значения
Числовой
Смотри также
ATAN(), DTOR(), RTOD(), SET DECIMALS, TAN()
Описание
Эта тригонометрическая функция возвращает значение арктангенса уг-
ла (выраженное в радианах) для всех четырех квадрантов. При использо-
вании функции ATN2() вы указываете координаты х и у в отличие от ука-
зания значения тангенса, как это имеет место в случае применения функ-
ции ATAN(). Функция ATN2() устраняет ошибки, вызванные делением на
нуль.
Параметры ,
Координата х представляет собой , а координата у - .
Величина / должна лежать в интервале между "-пи" и "+пи"
(от -3,14159 до 3,14159).
Результат ATN2() может быть преобразован и выражен в градусах -
для этого используется функция RTOD(). Число десятичных разрядов в ре-
зультате может быть указано с помощью команды SET DECIMALS.
Примеры
? PI()
3.14
? ATN2(0,-1)
3.14
STORE COS(PI()) TO X
STORE SIN(PI()) TO Y
? ATN2(Y,X)
3.14
? ATN2(Y,X)/PI()
1.00
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є AVERAGE є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Вычисление среднеарифметических значений числовых выражений или
полей базы данных.
Синтаксис
AVERAGE []
[]
[FOR ]
[WHILE ]
[TO | TO ARRAY ]
[NOOPTIMIZE]
Замечания
Расширена в FoxPro 2.0: AVERAGE использует преимущества Rushmore тех-
нологии.
Смотри также
CALCULATE, DIMENSION, SET HEADING, SUM
Описание
Команда AVERAGE вычисляет среднеарифметическое значение численных
выражений. Вычисляется среднее значение для всех числовых полей в те-
кущей используемой базе, если только не задан список выражений |