Amiguinho
Diferentemente de um Cobol(exemplifico a versão DOS pela proximidade da plataforma) que permite uma programação homogenea, segura e correta o xBase permite vicios que varias de programador para programador, como:
método de identação - forma de escrita visual e estrutural do codigo:
Código: Selecionar todos
...
do case
case nVariavel = 1
if nVariavel = A
elseif nVariavel = B
do while .t.
exit
enddo
endif
case nVariavel = 2
otherwise
endcase
Forma de sintaxe, onde visualmente diferenciemos comandos de parametros e dados:
Código: Selecionar todos
...
@ 10,10 GET nVariavel PICTURE "@ZE 99999.99" VALID lTeste = .t.
...
ou
Código: Selecionar todos
...
APPEND BLANK
REPLACE xCampo1 WITH xVariavel1
REPLACE xCampo2 WITH xVariavel2
REPLACE xCampo3 WITH xVariavel3
COMMIT
...
REGLOCK
REPLACE xCampo1 WITH xVariavel1
REPLACE xCampo2 WITH xVariavel2
REPLACE xCampo3 WITH xVariavel3
COMMIT
Muitos programadores para economizar escrita podem sacar de escrever os comandos e funções com no minimo 4 letras, exemplo:
Código: Selecionar todos
...
REPLA xCampo1 WITH xVariavel1
REPLA xCampo2 WITH xVariavel2
REPLA xCampo3 WITH xVariavel3
...
REGLO
REPLA xCampo1 WITH xVariavel1
REPLA xCampo2 WITH xVariavel2
REPLA xCampo3 WITH xVariavel3
Isto só economiza escrita pois os comandos serão pré-processados para se tornarem um codigo mais rapido e não existe vantagem nenhuma.
O Clipper permite algo perigoso como a declaração de variaveis a qualquer momento e de tipos diferentes.
Código: Selecionar todos
xVariavel = Date()
? xVariavel
...
xVariavel := 10 + 2
? xVariavel
Neste caso o melhor é que voce conheça os tipos de variaveis que podem ser criadas como PUBLIC, PRIVATE, LOCAL e STATIC e saber quando pode usa-las e em que pontos do programa.
Outra coisa ao se manusear tabelas de dados e variaveis é tomar o cuidado de não usar os mesmos nomes para as duas, exemplo:
Voce possui uma tabela, CLIENTES.DBF com os campos NOME, ENDERECO, CADASTRO e SALARIO.
Ao fazer uso, coloque algo que as diferenciem dos campos da tabela e de si mesmas, exemplo:
Código: Selecionar todos
...
cNOME := Space(45)
cENDERECO := Space(30)
dCADASTRO := Date()
nSALARIO := 0
...
REPLACE nome WITH cNome
REPLACE endereco WITH cEndereco
REPLACE cadastro WITH dCadastro
REPLACE salario WITH nSalario
...
Veja que as variaveis que usam conteudo tipo caracter eu coloquei "c" antes do nome, o mesmo para variavel com conteudo data onde usei "d" e respectivamente "n" para variavel numérica.
Neste exemplo voce ve outro método de uso de variavel mas sem especificação visual.
Código: Selecionar todos
...
M->NOME := Space(45)
M->ENDERECO := Space(30)
M->CADASTRO := Date()
M->SALARIO := 0
...
REPLACE nome WITH M->Nome
REPLACE endereco WITH M->Endereco
REPLACE cadastro WITH M->Cadastro
REPLACE salario WITH M->Salario
...
Caso encontre algo como:
Código: Selecionar todos
...
clientes->nome := M->Nome
clientes->endereco := M->Endereco
clientes->cadastro := M->Cadastro
clientes->salario := M->Salario
...
Não se preocupe, isto é normal, visivelmente mais direto e tem o mesmo funcionamento de REPLACE.
Em resumo tenha um bom dominio dos IF..END, DO..CASE, DO..WHILE etc.