FoxPro/Visual FoxPro - cambio de numero a texto en foxpro 2.6

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

cambio de numero a texto en foxpro 2.6

Publicado por Juan (537 intervenciones) el 20/06/2012 22:38:59
ejemplo de números a letras
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar