cVariable= (Asignar valor)
Messagebox("cVariable="+Qualifer(cVariable))
**********************************
PROCEDURE QUALIFER(xDato)
***********************************
* Calificador de datos
LOCAL kvt,vret,qdezim
*lparameters xdato
* n,i,c,d,l
kvt=vartype(xDato)
vret=""
do case
case kvt="C"
vret=["]+alltrim(strtran(xdato,xcSymbol))+["]
case kvt="N"
qDezim=TelDecim(xDato)
vret=ltrim(str(xDato,20,qDezim))
case kvt="I"
vret=ltrim(str(xdato))
case kvt="D"
vret=dtoc(xdato)
case kvt="T"
vret=ttoc(xdato)
case kvt="L"
vret=iif(xdato,".T.",".F.")
other
endcase
return vret
ENDPROC
*****************************************
PROCEDURE TelDecim(xcnNUmero,xnPrecision)
*****************************************
* Determina la cantidad de decimales de un número.
* xnPrecision podría ser Entre 10 y 16
* 16 daría una precisión mayor pero válida para
* números con alta cantidad de decimales.
*********************************************
local i_,minumero,pnumero,cRest,nDecimales
if vartype(xnprecision)#"N"
xnPrecision=10
endif
kevar=Vartype(xcnNumero)
do case
case kevar="C"
minumero=val(xcnNumero)
case kevar$'NI'
Minumero=xcnNumero
other
return 0
endcase
if minumero=0
return 0
endif
nDecimales=16
for i_=0 to 16
* pNumero=MiNumero*10**i_
pNumero=Round(MiNumero*10**i_,xnPrecision)
cRest=pNumero-Int(pNumero)
nDecimales=i_
if Round(cRest,xnPrecision)=0
exit
endif
next
return nDecimales
ENDPROC