FIND: Verifica dell'esistenza di un valore in una origine dati

Come:

Lingue disponibili: MODIFY, Maintain

La funzione FIND determina se si sta eseguendo la ricerca di un valore dati presente in un campo origine dati. La funzione imposta un campo temporaneo a 1 (un valore non-zero per MODIFY), se si trova il valore dati nel campo origine dati e a 0 se non si trova. FIND non modifica la posizione corrente del database del file ricercato. Un valore maggiore di zero conferma la presenza del valore dati, non il numero di istanze nel campo dell'origine dati.

È inoltre possibile usare FIND in un comando VALIDATE per determinare se un valore campo transazione esiste in un'altra origine dati FOCUS. Se il valore campo non si trova in quell'origine dati, la funzione restituisce un valore di 0, causando un errore nel test di verifica e il rifiuto della transazione da parte della richiesta.

È possibile usare qualsiasi numero di FIND in un comando COMPUTE o VALIDATE. Tuttavia, un aumento del tempo di elaborazione FIND richiede ulteriori spazio buffer in memoria.

Limite: FIND non funzione su file con parole d'ordine DBA diverse.

L'opposto di FIND è NOT FIND. La funzione NOT FIND imposta un campo temporaneo su 1 se il valore entrante non si trova nell'origine dati e su 0 se il valore entrante si trova nell'origine dati.


Inizio pagina

x
Sintassi: Come verificare l'esistenza di un valore in una origine dati
FIND(fieldname [AS dbfield] IN file);

dove:

fieldname

Nome del campo che contiene il valore dei dati in entrata.

AS dbfield

Nome del campo di origine dati i cui valori sono paragonati ai valori nel campo in entrata.

Per Maintain - il campo AS è richiesto e il nome deve essere qualificato.

file

Nome dell’origine dati FOCUS .

Per Maintain - il file AS non è necessario, poiché il nome campo AS è richiesto e deve essere qualificato.

Nota:



Esempio: Verifica dell'esistenza di un valore in un'altra origine dati (Maintain)

Nel seguente esempio, FIND determina se un valore dati si trova in un'altra origine dati.

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

L'emissione è:

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


Esempio: Verifica dell'esistenza di un valore nella stessa origine dati (Maintain)

Nel seguente esempio, FIND determina se un valore dati si trova nela stessa origine dati.

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

L'emissione è:

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

WebFOCUS