Linguagem de programação COBOL - SEARCH |
|
|
|
| Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. |
O comando executa uma pesquisa em série do elemento da tabela. Se soubermos de antemão
que o elemento a ser pesquisado ocorre a partir de uma determinada ocorrência da tabela
podemos posicionar o indexador na mesma, através do comando SET, antes de executarmos
o comando SEARCH.
Este formato admite várias frases WHEN.
Quando da execução do comando SEARCH, tem início uma pesquisa serial, a partir da
ocorrência para a qual estiver setado o indexador (não necessariamente a primeira).
As condições associadas a WHEN são testadas na ordem em que foram escritas.
Se nenhuma das condições especificadas é satisfeita, o valor do indexador é incrementado
de 1 e novo teste é realizado.
Se a condição é satisfeita o comando imperativo é executado e o SEARCH termina, deixando
o indexador apontando para a ocorrência da tabela que satifez a condição.
Se nenhuma das condições é satisfeita ao se chegar ao final da tabela o comando imperativo
previsto para a cláusula AT END é executado e o SEARCH termina.
|
Um exemplo:
*-----------------------------------------------------------------
WORKING-STORAGE SECTION.
*-----------------------------------------------------------------
01 WS-TABELA-ESTADOS.
05 TAB-NOME-UF.
10 FILLER PIC X(021) VALUE "ACACRE ".
10 FILLER PIC X(021) VALUE "ALALAGOAS ".
10 FILLER PIC X(021) VALUE "AMAMAZONAS ".
10 FILLER PIC X(021) VALUE "APAMAPA ".
10 FILLER PIC X(021) VALUE "BABAHIA ".
10 FILLER PIC X(021) VALUE "CECEARA ".
10 FILLER PIC X(021) VALUE "DFDISTRITO FEDERAL ".
10 FILLER PIC X(021) VALUE "ESESPIRITO SANTO ".
10 FILLER PIC X(021) VALUE "GOGOIAS ".
10 FILLER PIC X(021) VALUE "MAMARANHAO ".
10 FILLER PIC X(021) VALUE "MGMINAS GERAIS ".
10 FILLER PIC X(021) VALUE "MSMATO GROSSO DO SUL ".
10 FILLER PIC X(021) VALUE "MTMATO GROSSO ".
10 FILLER PIC X(021) VALUE "PAPARA ".
10 FILLER PIC X(021) VALUE "PBPARAIBA ".
10 FILLER PIC X(021) VALUE "PEPERNAMBUCO ".
10 FILLER PIC X(021) VALUE "PIPIAUI ".
10 FILLER PIC X(021) VALUE "PRPARANA ".
10 FILLER PIC X(021) VALUE "RJRIO DE JANEIRO ".
10 FILLER PIC X(021) VALUE "RNRIO GRANDE DO NORTE".
10 FILLER PIC X(021) VALUE "RORONDONIA ".
10 FILLER PIC X(021) VALUE "RRRORAIAMA ".
10 FILLER PIC X(021) VALUE "RSRIO GRANDE DO SUL ".
10 FILLER PIC X(021) VALUE "SCSANTA CATARINA ".
10 FILLER PIC X(021) VALUE "SESERGIPE ".
10 FILLER PIC X(021) VALUE "SPSAO PAULO ".
10 FILLER PIC X(021) VALUE "TOTOCANTINS ".
05 TAB-NOME-UF-R REDEFINES TAB-NOME-UF.
07 WS-CAJUGUDU OCCURS 27 TIMES
DESCENDING KEY SIGLA-UF
INDEXED BY IX-TAB.
10 SIGLA-UF PIC X(002).
10 NOME-UF PIC X(019).
01 WS-AUXILIARES.
05 NAO-ACHOU-NADA PIC 9(003) VALUE ZEROES.
05 WS-SIGLA-UF PIC X(002) VALUE SPACES.
*-----------------------------------------------------------------
PROCEDURE DIVISION.
*-----------------------------------------------------------------
MOVE ZEROES TO NAO-ACHOU-NADA
MOVE 'SP' TO WS-SIGLA-UF
SET IX-TAB TO 1
SEARCH WS-CAJUGUDU
AT END
MOVE 1 TO NAO-ACHOU-NADA
WHEN SIGLA-UF (IX-TAB) EQUAL WS-SIGLA-UF
MOVE NOME-UF (IX-TAB) TO VARIAVEL
END-SEARCH
IF NAO-ACHOU-NADA EQUAL 1
codifique as instrições necessarias
END-IF.
|
|
|