FIND transfere o controle para uma função caso seja encontrado um valor de item de dados na coluna de pesquisa de alguma tabela.
>>-FIND--item de dados--tabela----+--------------------+--------> '-.pesquisar coluna--' >-----+-verdadeiro-------+--;---------------------------------->< +-,falso-----------+ '-verdadeiro,falso-'
Atributo | Descrição |
---|---|
item de dados | Nome de um item de dados ou literal. O nome do item de dados pode ser subscrito, qualificado ou ambos. |
tabela | Nome de uma tabela a ser pesquisada. |
coluna de pesquisa | Nome de coluna na tabela a ser pesquisada. O padrão é a primeira coluna da tabela. |
verdadeiro | Nome da função principal ou EZECLOS, se especificado em fluxo de programa. O nome de um EZECLOS, EZEFLO ou EZERTN é especificado numa função. |
falso | Nome de uma função principal ou EZECLOS, se especificado em fluxo de programa. O nome de um EZECLOS, EZEFLO ou EZERTN é especificado numa função. |
Se o valor de item de dados for encontrado na coluna especificada em qualquer das linhas na tabela, o elemento verdadeiro é executado como uma instrução incondicional. Se o elemento verdadeiro não estiver especificado, a execução continua com a instrução após o FIND.
Se o valor de item de dados não for encontrado na coluna especificada em qualquer das linhas na tabela, o elemento falso é executado como uma instrução incondicional. Se o elemento falso não estiver especificado, a execução continua com a instrução após o FIND.
A palavra de função especial EZETST é carregada com um valor dependendo dos resultados de uma instrução FIND. EZETST contém os seguintes valores:
Quando EZETST contém um número de linha, ele pode ser usado como um subscrito para outras instruções que fazem referência a outras colunas nessa mesma linha da tabela.
Para obter um desempenho mais eficiente, use FIND em vez de IF...OR....OR.
Na área de instruções, se você especificar ambos, um nome falso e um verdadeiro, em uma instrução FIND, você pode separar os nomes com uma vírgula. Se você especificar somente um nome falso, você deve precedê-lo com uma vírgula. As vírgulas são inseridas automaticamente se você estiver usando o gabarito da instrução FIND.
Suportado em todos os ambientes sem considerações de compatibilidade.
No exemplo a seguir, uma tabela (INFO) possui 50 linhas e 3 colunas chamadas STATE (estado), POPULTN (população) e AREA (área). A primeira coluna possui uma entrada para cada um dos 50 estados, a segunda coluna contém a população de cada estado e a terceira coluna contém a área em milhas quadradas de cada estado.
INFO:
STATE | POPULATN | AREA |
Alabama | 4,041,000 | 51,600 |
Alaska | 550,000 | 586,000 |
. | . | . |
. | . | . |
Uma instrução FIND poderia ser usada para pegar o número da linha contendo um certo estado da tabela acima e desviar de acordo.
MOVE 'ALASKA' TO ITEM; FIND ITEM INFO.STATE MATCH,NOMATCH;
Quando o FIND é executado e uma correspondência é encontrada, o EZETST é definido para 2. Esse é o número da linha do estado correspondente. O controle é passado para MATCH. Se não for encontrada nenhuma correspondência, EZETST será definida para 0 e o controle será passado para NOMATCH.
A instrução a seguir passará o controle para MATCH somente se uma correspondência for encontrada.
FIND ITEM INFO.STATE MATCH;
Se nenhuma correspondência for encontrada, a instrução imediatamente após a instrução FIND é executada.
A instrução a seguir passará o controle para NOMATCH se uma correspondência não for encontrada.
FIND ITEM INFO.STATE ,NOMATCH;
Se uma correspondência foi encontrada, a instrução imediatamente após a instrução FIND é executada.