
Iniciar uma leitura seqüencial no arquivo selecionado.
LOCATE [LAST] | [START <exp>] [FOR<exp.L>] [SHARED|EXCLUSIVE]
[ALL]
[REVERSE]
[CONTINUE]
|
LAST |
determina que a leitura se dará do último registro para o primeiro. |
|
START <exp> |
determina que a leitura se inicie a partir do registro com o valor da chave igual ou maior que <exp>. |
|
FOR <exp.L> |
determina que só serão lidos os registros que satisfaçam a expressão lógica. |
|
SHARED |
determina o bloqueio para leitura compartilhada do registro |
|
EXCLUSIVE |
determina o bloqueio para uso exclusivo do registro. |
|
ALL |
faz com que todos os itens do registro sejam carregados para memória. |
|
REVERSE |
inverte o sentido da leitura. |
|
CONTINUE |
lê o próximo registro do arquivo, respeitando o sentido da leitura. |
Quando se pretende iniciar uma leitura seqüencial em um arquivo selecionado.
Quando utilizado sem opções, lê o primeiro registro do arquivo segundo a chave estabelecida ou pelo arquivo de dados caso este não tenha chave ou não se estabeleça uma chave de acesso.
A opção START é útil quando se sabe o início da leitura. É muito utilizada na pesquisa de intervalos pois limita o início da pesquisa lendo diretamente o registro.
A opção FOR é útil quando se pretende ler somente alguns registros .
A opção START só é aplicável em arquivos de banco de dados.
A opção LAST e o comando REVERSE são úteis quando se pretende paginar o arquivo e caminhar por entre seus registros para frente e para trás.
As opções LAST e o comando REVERSE não são aplicáveis em arquivo externo indexado.
A função EOF( ) retorna verdade (.T.), sempre que se chegar ao fim da pesquisa:
* Com a opção FOR quando mais nenhum registro atender a expressão.
* Com a opção LAST ou o comando REVERSE quando a leitura atingir o início ou o fim do arquivo.
* Com a opção START quando nenhum registro tiver valor igual ou maior que a expressão.
SHARED determina que o registro seja bloqueado, podendo compartilhar somente a leitura do registro. Utilizada em bloqueio de banco, funciona como EXCLUSIVE.
EXCLUSIVE determina que o registro lido seja acessado exclusivamente pelo usuário, sem permitir a leitura ou a gravação por outro usuário.
O comando LOCATE apenas inicia a leitura. Para prosseguir, utilizar o comando CONTINUE.
O exemplo a seguir lê um arquivo do primeiro registro ao último.
DATABASE bdemp1 33 a 2
USE tab_depe
LOCATE && Le o primeiro registro do arquivo.
DO WHILE FOUND( )
? "Numero do registro ",recno( )
? "Funcionário ", nom_func
? "Data de Nascimento do Dependente "
?? TRANSFORM("99/99/99",dat_depe)
?
CONTINUE && Le os próximos registros do arquivo
ENDDO
O exemplo a seguir lê um arquivo do último registro ao primeiro.
DATABASE bdemp1 33 a 2
USE tab_depe
LOCATE LAST && Le o ultimo registro do arquivo.
DO WHILE FOUND( )
? "Numero do registro ",recno( )
? "Funcionário ", nom_func
? "Data de Nascimento do Dependente "
?? TRANSFORM("99/99/99",dat_dep)
?
CONTINUE
ENDDO
O exemplo a seguir lê somente os registros dos funcionários do sexo feminino.
USE tab_func
LOCATE FOR sex_func = "fem"
DO WHILE .not. EOF( )
? "Nome da Funcionaria ", nom_func
CONTINUE
ENDDO
O exemplo a seguir lê somente funcionários do sexo feminino nascidos entre 1930 e 1960.
USE tab_depe
SET ORDER TO ano_func
LOCATE START 1930 FOR sex_func = "fem"
DO WHILE FOUND( ) .and. ano_func <= 1960
&& delimita o intervalo
? nom_func
CONTINUE
ENDDO
O exemplo a seguir mostra-nos como paginar um arquivo lendo seus registros seqüencialmente de trás para frente ou de frente para trás.
USE funcion
LOCATE
sentido = "inicio -> fim"
DO WHILE FOUND( ) && Para quando atingir o inicio ou o fim do arquivo
? nomefun
? sentido
WAIT " Inverte o sentido ? " TO resp
IF resp $ "Ss"
REVERSE && Inverte o sentido da leitura.
CONTINUE
sentido = "fim -> inicio"
ENDIF
CONTINUE
ENDDO
$DATE, $READALL, CONTINUE, FIND, RESTORE, REVERSE, SAVE, SET EXACT, SELECT, SORT, CTOD( ), DBERR( ), DTOC( ), DBMESS( ), EOF( ), FCONTINUE( ), FLOCATE( ), FRECNO( ), FSTART( ) e RECNO( ).
