Saltar navegação

S03 - SEARCH VARYING

Conceitos

A instrução SEARCH é utilizada para pesquisas sequenciais em tabelas indexadas. Possui dois formatos.

Formato 1 - pesquisa seqüencial

SEARCH nome-da-variável-1

VARYING nome-da-variável-2

AT END declaração-imperativa-1

WHEN expressão-condicional declaração-imperativa-2.


Considerações

Neste formato, nome-da-variável-1 é o item que contem a cláusula INDEXED BY.

A cláusula VARYING é opcional e utiliza uma variavel numérica inteira que conterá o mesmo valor que o índice da tabela.

Sempre será usado o índice definido pela cláusula INDEXED BY para as pesquisas. Utilizando-se a cláusula VARYING, a variável nome-da-variável-2 terá o seu conteúdo atualizado à medida em que o índice for atualizado durante a pesquisa. Assim nome-da-variável-2 sempre terá o mesmo valor que o índice da tabela.

A clausula AT END especifica as instruções que serão executadas quando a pesquisa na tabela não teve sucesso, isto é, o fim da tabela foi alcançado sem que a expressão-condicional da cláusula WHEN fosse satisfeita.

A clausula WHEN define as condições da pesquisa, e as instruções a serem executadas quando a pesquisa tiver sucesso.

Havendo sucesso na pesquisa, o índice e nome-da-variável-2 da clausula VARYING estarão posicionados na ocorrência da tabela que satisfez a expressão condicional da clausula WHEN.

A instrução SEARCH inicia a pesquisa utilizando o valor existente no índice naquele momento, portanto é necessário inicializar o índice da tabela, através da instrução SET usando o valor 1 que representa o primeiro item da tabela.

Por exemplo, na tabela

01 VENDAS-MES OCCURS 12 TIMES INDEXED BY IND-VENDAS.
    03 MES-VENDA PIC 99.
    03 VALOR-VENDA PIC 9(6)V99.
01 VARIAVEL-AUXILIAR PIC 99 VALUE ZEROS.

o uso da instrução SEARCH no Formato 1 será:

SET IND-VENDAS TO 1.

SEARCH VENDAS-MES 

VARYING VARIAVEL-AUXILIAR
AT END DISPLAY “MES NAO LOCALIZADO”
WHEN MES-VENDA (IND-VENDAS) = MES-PESQUISADO 
MOVE VALOR-VENDA (IND-VENDAS) TO ......

 

Licença: licença proprietária