FIND: Como Verificar a Existência de um Valor em uma Fonte de Dados

Como:

Linguagens Disponíveis: MODIFY, Maintain

A função FIND determina se um valor de dados se encontra em um campo de fonte de dados sendo pesquisado. A função define um campo temporário como 1 (um valor diferente de zero para MODIFY) se o valor dos dados for encontrado no campo da fonte de dados, e 0 se não for. FIND não altera a posição do banco de dados atual do arquivo pesquisado. Um valor maior que zero confirma a presença do valor de dados, não o número de ocorrências no campo da fonte de dados.

Você também pode utilizar FIND em um comando VALIDATE para determinar se um campo de transação existe em outra fonte de dados FOCUS. Se o valor de campo não estiver na fonte de dados, a função exibe o valor 0, fazendo com que o teste de validação falhe e a solicitação rejeite a transação.

Você pode utilizar qualquer número de FINDs em um comando COMPUTE ou VALIDATE. No entanto, mais FINDs aumenta o tempo de processamento e exige mais espaço para buffer na memória.

Limite: FIND não funciona em arquivo com senhas DBA diferentes.

O oposto de FIND é NOT FIND. A função FIND define um campo temporário como 1 se o valor de entrada não estiver na fonte de dados, e como 0 se o valor de entrada estiver na fonte de dados.


Topo da página

x
Sintaxe: Como Verificar a Existência de um Valor em uma Fonte de Dados
FIND(fieldname [AS dbfield] IN file);

onde:

fieldname

É o nome do campo que contém os valores de dados recebidos.

AS dbfield

É o nome do campo da fonte de dados cujos valores são comparados aos valores do campo recebido.

Para o Maintain - o campo AS é obrigatório e o nome deve estar qualificado.

XML

É o nome da fonte de dados FOCUS .

Para o Maintain - o arquivo IN não é necessário já que o nome do campo AS é obrigatório e deve ser qualificado.

Comunicado:



Exemplo: Como Verificar a Existência de um Valor em Outra Fonte de Dados (Maitain)

No exemplo a seguir, FIND determina se um valor de dados foi encontrado em outra fonte de dados.

MAINTAIN FILE MOVIES AND VIDEOTRK
FOR ALL NEXT MOVIES.MOVIECODE INTO FILMSTK
TYPE "RC SHOULD BE 1 WHERE MOVIECODE EXISTS IN BOTH FILES";
TYPE " "
COMPUTE RC/I1;
COMPUTE I/I1=1;
REPEAT FILMSTK.FOCCOUNT
  COMPUTE RC= FIND(FILMSTK(I).MOVIECODE AS VIDEOTRK.MOVIECODE)
  TYPE "FOR MOVIECODE = <<FILMSTK(I).MOVIECODE , RC = <<RC"
  COMPUTE I=I+1;
ENDREPEAT
END

A saída é:

RC SHOULD BE 1 WHERE MOVIECODE EXISTS IN BOTH FILES
 FOR MOVIECODE = 001MCA, RC = 1
 .
 .
 .
 FOR MOVIECODE = 387PLA, RC = 0
 .
 .
 .
 FOR MOVIECODE = 963CBS, RC = 1
 TRANSACTIONS: COMMITS  =    1 ROLLBACKS =    0
 SEGMENTS    : INCLUDED =    0 UPDATED   =    0 DELETED   =    0


Exemplo: Como Verificar a Existência de um Valor na Mesma Fonte de Dados (Maitain)

No exemplo a seguir, FIND determina se um valor de dados foi encontrado na mesma fonte de dados.

MAINTAIN FILE CAR
COMPUTE RETAIL_COST=31500;
COMPUTE CHECK/I1;
COMPUTE CHECK= FIND (RETAIL_COST);
   IF CHECK = 1 THEN GOTO FOUND1
      ELSE GOTO NOT1;
CASE FOUND1
TYPE "THERE IS A CAR WITH A RETAIL_COST OF <<RETAIL_COST"
-* ....
ENDCASE
CASE NOT1
TYPE "THERE IS NO CAR WITH A RETAIL_COST OF <<RETAIL_COST"
-*....
ENDCASE
-*....
END

A saída é:

THERE IS A CAR WITH A RETAIL_COST OF    31,500
 TRANSACTIONS: COMMITS   =    1 ROLLBACKS =    0
 SEGMENTS    : INCLUDED  =    0 UPDATED   =    0 DELETED   =    0

Information Builders