? NtoL(351.21)
func NtoL
para pnum, pmnd, plet
priv knum, kmnd, klet
decl uni(20), dec(10), cie(10), mil(1), mll(1), bll(1)
priv letra, centavos, kint, kcnt, kmn1, kmn2, ksex
knum=iif(empt(pnum),0,pnum)
kmnd=iif(empt(pmnd),"",allt(pmnd))
klet=iif(empt(plet),"a y ","i")
kmn1=iif(at("/",allt(kmnd))=0,kmnd,left(kmnd,at("/",allt(kmnd))-1))
kmn2=right(kmnd,len(kmnd)-at("/",allt(kmnd)))
ksex=iif(right(kmn1,2)="as" or right(kmn2,1)="a",.f.,.t.)
do case
case knum=0
letra=allt("cero"+" "+kmnd)
othe
l_uni1="uno dos tres cuatro cinco seis siete ocho nueve diez "
l_uni2="once doce trece catorce quince dieciseis diecisietedieciocho diecinueveveinte "
l_dec ="diez veint treint cuarent cincuent sesent setent ochent novent "
l_cie ="c dosc trec cuatroc quin seic setec ochoc novec "
for i=1 to 10
uni(i) =allt(subs(l_uni1,10*(i-1)+1,10))
uni(i+10)=allt(subs(l_uni2,10*(i-1)+1,10))
dec(i) =allt(subs(l_dec ,10*(i-1)+1,10))
cie(i) =allt(subs(l_cie ,10*(i-1)+1,10))+"ient"+iif(i=1,"o",iif(ksex,"os","as"))
endfor
mil(1) ="mil"
mll(1) ="millones"
bll(1) ="billones"
kint =int(knum)
kcnt =int((knum-int(knum))*100)
letra =allt(pntol(kint,iif(empt(pmnd),0,1))+" "+iif(kint=1,kmn2,kmn1))
centavos=iif(kcnt=0,"","con "+pntol(kcnt,1)+" centavo"+iif(kcnt=1,"","s"))
endcase
retu letra+" "+centavos
*******************************************************************
func pntol
para fnum,fm
local llet
fnum=int(fnum)
do case
case fnum=0
palabra=""
case fnum=1
palabra=iif(empt(fm),uni(1),"un"+iif(ksex,"","a"))
case betw(fnum,2,20)
palabra=uni(fnum)
case betw(fnum,21,99)
llet=iif(betw(fnum,21,29),"i",klet)
palabra=dec(fnum/10)
palabra=palabra+iif(fnum-int(fnum/10)*10=0,"a",llet+pntol(fnum-int(fnum/10)*10,fm))
case fnum=100
palabra=left(cie(1),4)
case betw(fnum,101,999)
palabra=cie(fnum/100)+" "+pntol(fnum-int(fnum/100)*100,fm)
case betw(fnum,1000,1999)
palabra=mil(1)+" "+pntol(fnum-1000,fm)
case betw(fnum,2000,999999)
palabra=pntol(fnum/1000,1)+" "+mil(1)+" "+pntol(fnum-int(fnum/1000)*1000,fm)
case betw(fnum,1000000,1999999)
palabra="un "+left(mll(1),6)+" "+pntol(fnum-1000000,fm)
case betw(fnum,2000000,999999999999)
palabra=pntol(fnum/1000000,1)+" "+mll(1)+" "+pntol(fnum-int(fnum/1000000)*1000000,fm)
case betw(fnum,1000000000000,1999999999999)
palabra="un "+left(bll(1),6)+" "+pntol(fnum-1000000000000,fm)
case betw(fnum,2000000000000,99999999999999999)
palabra=pntol(fnum/1000000000000,1)+" "+bll(1)+" "+pntol(fnum-int(fnum/1000000000000)*1000000000000)
endcase
retu allt(palabra)
Suerte