w=0
clea
set print on
set printer to c:\ito.txt

for w=999 to 999999999.99
*@1,1 say ' monto:' get w pict '999999999.99'
*read

*if lastkey()#27
?w,CADENA0(W)
*endif
next
set print off
set printer to
RETURN

***************
FUNCTION CADENA0
PARA PCADENA
WRET=''
WVALOR=PCADENA
IF VAL( left( trans( WVALOR,'999999999.99' ),3 ) ) >0
Wtexto='un'
IF VAL( left( trans(
WVALOR,'999999999.99' ),3 ) ) # 1
Wtexto=CADENA1( VAL(left( trans(
WVALOR,'999999999.99' ),3 )) )
IF VAL( SUBSTR( trans(
WVALOR,'999999999.99' ),3,1 ) )=1
Wtexto=LEFT(Wtexto,LEN(Wtexto)-1)
ENDIF
ENDIF
WRET=WRET+Wtexto+' millon'+iif(VAL( substr( trans
( WVALOR,'999999999.99' ) ,3,1) )=1,'','es')
ENDIF
IF VAL( SUBSTR( trans( WVALOR,'999999999.99' ),4,3 ) ) > 0
Wtexto=''
IF VAL( SUBSTR( trans(
WVALOR,'999999999.99' ),4,3 ) ) # 1
Wtexto=CADENA1( VAL( SUBSTR( trans(
WVALOR,'999999999.99' ),4,3 ) ) )
IF VAL( SUBSTR( trans(
WVALOR,'999999999.99' ),6,1 ) )=1
Wtexto=LEFT(Wtexto,LEN(Wtexto)-1)
ENDIF
ENDIF
WRET=WRET+Wtexto+' mil'
ENDIF
IF VAL( SUBSTR( trans( WVALOR,'999999999.99' ),7,3 ) ) > 0
WRET=WRET+CADENA1( VAL( SUBSTR( trans(
WVALOR,'999999999.99' ),7,3 ) ) )
ENDIF
WRET=WRET+' con '+padl(Allt(Str( ((WVALOR-int(WVALOR))
*100) )),2,'0')+'/100 '
RETURN WRET
****************
FUNCTION CADENA1
PARA PCADE_1
PCADE1=PCADE_1
WRET1=''
IF LEN(ALLT(STR(PCADE1)))=3 && centenas
DO CASE
CASE LEFT(ALLT(STR(PCADE1)),1)='9'
WRET1=WRET1+' novecientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='8'
WRET1=WRET1+' ochocientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='7'
WRET1=WRET1+' setecientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='6'
WRET1=WRET1+' seiscientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='5'
WRET1=WRET1+' quinientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='4'
WRET1=WRET1+' cuatrocientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='3'
WRET1=WRET1+' trescientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='2'
WRET1=WRET1+' doscientos'
CASE LEFT(ALLT(STR(PCADE1)),1)='1'
WRET1=WRET1+' cien'+iif(val(
substr(ALLT(STR(PCADE1)),2) ) = 0,'','to')
ENDCASE
ENDIF
if val( substr(trans( PCADE1,'999' ),2) ) >=1 and val(
substr(trans( PCADE1,'999' ),2) ) <=9
WRET1=WRET1+' '
endif
IF val( substr( trans( PCADE1,'999' ) ,2,1 ) ) > 0
&& decenas
DO CASE
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=9
WRET1=WRET1+' noventa'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=8
WRET1=WRET1+' ochenta'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=7
WRET1=WRET1+' setenta'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=6
WRET1=WRET1+' secenta'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=5
WRET1=WRET1+' cincuenta'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=4
WRET1=WRET1+' cuarenta'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=3
WRET1=WRET1+' treinta'+iif( val
(right(ALLT(STR(PCADE1)),1))>0 , ' y ', '' )
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=2
WRET1=WRET1+' '+iif( substr(ALLT
(STR(PCADE1)),2,2) = '20','Veinte','Venti')
CASE right(trans( PCADE1,'999' ),2)='11'
WRET1=WRET1+' once'
CASE right(trans( PCADE1,'999' ),2)='12'
WRET1=WRET1+' doce'
CASE right(trans( PCADE1,'999' ),2)='13'
WRET1=WRET1+' trece'
CASE right(trans( PCADE1,'999' ),2)='14'
WRET1=WRET1+' catorce'
CASE right(trans( PCADE1,'999' ),2)='15'
WRET1=WRET1+' quince'
CASE val( substr( trans(
PCADE1,'999' ) ,2,1 ) )=1
WRET1=WRET1+' die'+iif(val( substr
( trans( PCADE1,'999' ) ,3) ) = 0,'z','ci')
ENDCASE
ENDIF
IF val(right(trans( PCADE1,'999' ),1))>0
&& unidades
DO CASE
CASE right(ALLT(STR(PCADE1)),1)='9'
WRET1=WRET1+'nueve'
CASE right(ALLT(STR(PCADE1)),1)='8'
WRET1=WRET1+'ocho'
CASE right(ALLT(STR(PCADE1)),1)='7'
WRET1=WRET1+'siete'
CASE right(ALLT(STR(PCADE1)),1)='6'
WRET1=WRET1+'seis'
CASE right(ALLT(STR(PCADE1)),1)='5' and
right(ALLT(STR(PCADE1)),2)<>'15'
WRET1=WRET1+'cinco'
CASE right(ALLT(STR(PCADE1)),1)='4' and
right(ALLT(STR(PCADE1)),2)<>'14'
WRET1=WRET1+'cuatro'
CASE right(ALLT(STR(PCADE1)),1)='3' and
right(ALLT(STR(PCADE1)),2)<>'13'
WRET1=WRET1+'tres'
CASE right(ALLT(STR(PCADE1)),1)='2' and
right(ALLT(STR(PCADE1)),2)<>'12'
WRET1=WRET1+'dos'
CASE right(ALLT(STR(PCADE1)),1)='1' and
right(ALLT(STR(PCADE1)),2)<>'11'
WRET1=WRET1+'uno'
ENDCASE
ENDIF
RETURN WRET1