cambio de numero a texto en foxpro 2.6
Publicado por OMAR (3 intervenciones) el 20/06/2012 22:30:38
compañeros necesito saber como cambio un numero a texto 125 a ciento veinticinco
se los agradeceria
se los agradeceria
Valora esta pregunta


0
Publ suma3
@10,2 say "Digite cantidad "
@ 10,30 say get Suma3 Pict 9999999
Read
STRING =Monto2letra(suma3)
FUNCTION Monto2Letra
LPARAMETERS tyMonto, tlDolares
LOCAL lyEntero, lyCentavos, lnNumeroBloques, lnPrimerDigito, lnSegundoDigito, lnTercerDigito, ;
lcBloque, lnBloqueCero &&,lcLetra
PUBLIC lcLetra
DIMENSION laUnidades(29), laDecenas(9), laCentenas(9)
tyMonto = ROUND(tyMonto, 2) && Devuelve una expresión numérica redondeada a un número especificado de cifras decimales
lyEntero = INT(tyMonto) && Evalúa una expresión numérica y devuelve la parte entera de dicha expresión
lcLetra = IIF(lyEntero = 0, "CERO", "")
lyCentavos = (tyMonto - lyEntero) * 100
laUnidades(1) = "UN"
laUnidades(2) = "DOS"
laUnidades(3) = "TRES"
laUnidades(4) = "CUATRO"
laUnidades(5) = "CINCO"
laUnidades(6) = "SEIS"
laUnidades(7) = "SIETE"
laUnidades(8) = "OCHO"
laUnidades(9) = "NUEVE"
laUnidades(10) = "DIEZ"
laUnidades(11) = "ONCE"
laUnidades(12) = "DOCE"
laUnidades(13) = "TRECE"
laUnidades(14) = "CATORCE"
laUnidades(15) = "QUINCE"
laUnidades(16) = "DIECISEIS"
laUnidades(17) = "DIECISIETE"
laUnidades(18) = "DIECIOCHO"
laUnidades(19) = "DIECINUEVE"
laUnidades(20) = "VEINTE"
laUnidades(21) = "VENTIUN"
laUnidades(22) = "VEINTIDOS"
laUnidades(23) = "VEINTITRES"
laUnidades(24) = "VEINTICUATRO"
laUnidades(25) = "VEINTICINCO"
laUnidades(26) = "VEINTISEIS"
laUnidades(27) = "VEINTISIETE"
laUnidades(28) = "VEINTIOCHO"
laUnidades(29) = "VEINTINUEVE"
laDecenas(1) = "DIEZ"
laDecenas(2) = "VEINTE"
laDecenas(3) = "TREINTA"
laDecenas(4) = "CUARENTA"
laDecenas(5) = "CINCUENTA"
laDecenas(6) = "SESENTA"
laDecenas(7) = "SETENTA"
laDecenas(8) = "OCHENTA"
laDecenas(9) = "NOVENTA"
laCentenas(1) = "CIENTO"
laCentenas(2) = "DOSCIENTOS"
laCentenas(3) = "TRESCIENTOS"
laCentenas(4) = "CUATROCIENTOS"
laCentenas(5) = "QUINIENTOS"
laCentenas(6) = "SEISCIENTOS"
laCentenas(7) = "SETECIENTOS"
laCentenas(8) = "OCHOCIENTOS"
laCentenas(9) = "NOVECIENTOS"
lnNumeroBloques = 1
DO WHILE lyEntero > 0
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0
FOR i = 1 TO 3
lnDigito = MOD(lyEntero, 10) &&Divide una expresión numérica por otra expresión numérica y devuelve el resto
*messageb("lyEntero="+STR(lyEntero)+" MOD(lnDigito)= "+ STR(lnDigito))
IF lnDigito <> 0 THEN
DO CASE
CASE i = 1
lcBloque = " " + laUnidades(lnDigito)
lnPrimerDigito = lnDigito
CASE i = 2
IF lnDigito <= 2 THEN
lcBloque = " " + laUnidades((lnDigito * 10) + lnPrimerDigito)
ELSE
lcBloque = " " + laDecenas(lnDigito) + IIF(lnPrimerDigito <> 0, " Y", "") + lcBloque
ENDIF
lnSegundoDigito = lnDigito
CASE i = 3
lcBloque = " " + IIF(lnDigito = 1 AND lnPrimerDigito = 0 AND lnSegundoDigito = 0, "CIEN", ;
laCentenas(lnDigito)) + lcBloque
lnTercerDigito = lnDigito
ENDCASE
ELSE
lnBloqueCero = lnBloqueCero + 1
ENDIF
lyEntero = INT(lyEntero / 10)
IF lyentero = 0 THEN
EXIT FOR
ENDIF
ENDFOR
DO CASE
CASE lnNumeroBloques = 1
lcLetra = lcBloque
CASE lnNumeroBloques = 2
lcLetra = lcBloque + IIF(lnBloqueCero <> 3, " MIL", "") + lcLetra
CASE lnNumeroBloques = 3
lcLetra = lcBloque + IIF(lnPrimerDigito = 1 AND lnSegundoDigito = 0 AND lnTercerDigito = 0, ;
" MILLON", " MILLONES") + lcLetra
ENDCASE
lnNumeroBloques = lnNumeroBloques + 1
ENDDO
*IF tlDolares THEN
*lcLetra = "(" + ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " DÓLAR ", " DOLARES ") + ;
REPLICATE("", 2 - LEN(ALLTRIM(STR(lyCentavos)))) + ALLTRIM(STR(lyCentavos)) + "/100 USD)"
*ELSE
lcLetra = "" + ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " PESO ", " PESOS")
* + ;
*REPLICATE("", 2 - LEN(ALLTRIM(STR(lyCentavos)))) + ALLTRIM(STR(lyCentavos)) +""
*ENDIF
@ 11,2 say lcLetra
ENDFUNC
return
clear