Функция ASCAN()

Просматривает массив в поисках элемента, данные которого имеют то же значение и тот же тип, что и указанное выражение.

Синтаксис:

ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched]])

Параметры:
ArrayName
Задает имя массива, в котором будет идти поиск.
eExpression
Задает выражение общего типа, которое нужно найти.
nStartElement
Задает номер элемента, с которого начнется поиск. Указанный элемент также проверяется при поиске. Если номер nStartElement опущен, по умолчанию просматривается весь массив.
nElementsSearched
Задает количество просматриваемых элементов. Если аргументы nStartElement и nElementsSearched опущены, поиск начинается с первого элемента массива и завершается последним элементом.
Замечание Элемент двумерного массива переменных памяти можно указывать двумя способами: либо с помощью двух индексов, задающих позиции элемента в массиве по строкам и по столбцам, либо с помощью одиночного номера. Данная функция, как и ряд других функций, манипулирующих двумерными массивами, требует задания номеров элементов (nStartElement and nElementsSearched). Для получения номера элемента исходя из его строчного и столбцевого индексов используйте функцию AELEMENT().

Результат:
Числовой

Комментарии:
Если совпадающий элемент найден, функция ASCAN() возвращает его номер. Если такой элемент найти не удалось, ASCAN() возвращает 0.
Критерий сопоставления символьных данных определяется установкой SET EXACT. Если команда SET EXACT установила значение ON, элемент должен посимвольно совпадать с искомым выражением и иметь ту же длину. Если действует установка SET EXACT OFF, а элемент и искомое выражение совпали вплоть до конца выражения, считается, что элемент найден. Подробнее о критерии сопоставления символьных строк см. в таблице сравнения строк в описании команды SET EXACT.

Пример:

* В следующем примере создается и заполняется массив с именами
* компаний; затем используется ASCAN( ), чтобы найти имя определенной
* компании. Если имя компании найдено oно удаляется из массива.
CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer	&& Open customer table
SELECT company FROM customer ;
	WHERE country = 'UK' ;
	INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies*
gnPos = ASCAN(gaCompanies, gcName)	&& Search for company
IF gnPos != 0
	*** Company found, remove it from the array ***
	= ADEL(gaCompanies, gnPos)
	gnCount = gnCount - 1
ENDIF
DISPLAY MEMORY LIKE gaCompanies

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 21.11.2002