Information générale
Catégorie:
Codage, syntaxe et commandes
>Hi to all
>im looking for read and understand any code routine to traslade any numeric value in letters
>for example 21 =twenty one
>or
>4235= "four thousand two hundred thirty five"
>thanks in advance
>Best Regards
========================================
I have the next program. It´s Works only in Spanish
**********************
FUNCTION NUMEROS(_NUM)
**********************
* Programa: NUMEROS.PRG
* Autor: Carlos Fidel Restrepo Duperly
* Fecha: 21-SEP-95
* Realizado para DURESPO
* Función que convierte una variable numérica "_NUM" en su
* equivalente en letras.
* Por estupidez del VFP 5, Un arreglo no puede tener como suscrito una
* variable tipo "Y" (Moneda) sino numérica
_Num = mTon(_Num)
Private _Dec, Cents, _Num, Letras, De, N, D, C, Millon, Miles, Letra_Mil, Decena
_DEC = set('decimals')
set decimals to 6
* Separa los centavos del número entero
CENTS = ltrim(str(100*(_NUM - int(_NUM)))) + '/100 M.L.'
_NUM = int(_NUM)
LETRAS = iif(_NUM = 0,'CERO',"") && "CERO" es un caso especial
DE = ''
* Define los números principales
dimension N[29], D[9], C[9]
N[ 1] = 'UN'
N[ 2] = 'DOS'
N[ 3] = 'TRES'
N[ 4] = 'CUATRO'
N[ 5] = 'CINCO'
N[ 6] = 'SEIS'
N[ 7] = 'SIETE'
N[ 8] = 'OCHO'
N[ 9] = 'NUEVE'
N[10] = 'DIEZ'
N[11] = 'ONCE'
N[12] = 'DOCE'
N[13] = 'TRECE'
N[14] = 'CATORCE'
N[15] = 'QUINCE'
N[16] = 'DIECISEIS'
N[17] = 'DIECISIETE'
N[18] = 'DIECIOCHO'
N[19] = 'DIECINUEVE'
N[20] = 'VEINTE'
N[21] = 'VEINTIUN'
N[22] = 'VEINTIDOS'
N[23] = 'VEINTITRES'
N[24] = 'VEINTICUATRO'
N[25] = 'VEINTICINCO'
N[26] = 'VEINTISEIS'
N[27] = 'VEINTISIETE'
N[28] = 'VEINTIOCHO'
N[29] = 'VEINTINUEVE'
D[ 1] = ''
D[ 2] = ''
D[ 3] = 'TREINTA'
D[ 4] = 'CUARENTA'
D[ 5] = 'CINCUENTA'
D[ 6] = 'SESENTA'
D[ 7] = 'SETENTA'
D[ 8] = 'OCHENTA'
D[ 9] = 'NOVENTA'
C[ 1] = 'CIEN'
C[ 2] = 'DOSCIENTOS'
C[ 3] = 'TRESCIENTOS'
C[ 4] = 'CUATROCIENTOS'
C[ 5] = 'QUINIENTOS'
C[ 6] = 'SEISCIENTOS'
C[ 7] = 'SETECIENTOS'
C[ 8] = 'OCHOCIENTOS'
C[ 9] = 'NOVECIENTOS'
if _NUM >=10^12
RETURN '**** NUMERO MUY GRANDE ****'
endif
if _NUM >=10^6
MILLON = int(_NUM/10^6)
_NUM = _NUM%10^6
LETRAS = L1000(MILLON)
LETRAS = iif(MILLON=1,"UN MILLON ",LETRAS +' MILLONES ')
DE = iif(_NUM = 0, ' DE',"")
endif
set decimal to (_DEC)
RETURN trim(L1000(_NUM)) + DE + ' PESOS CON ' + CENTS
FUNCTION L1000
**************
* Programa: L1000.PRG
* Autor: Carlos Fidel Restrepo Duperly
* Fecha: 21-SEP-95
* Realizado para DURESPO
* Función que trabaja con la función NUMEROS
* y trabaja con MILES
parameter _NUM
MILES = int(_NUM/1000)
if MILES > 0
_NUM = _NUM%1000
LETRA_MIL = L100(MILES)
LETRAS = LETRAS +;
iif(MILES=1,"MIL",LETRA_MIL +' MIL')+;
iif(_NUM = 0,"",' ')
endif
RETURN ltrim(LETRAS) + L100(_NUM)
FUNCTION L100
*************
* Programa: L100.PRG
* Autor: Carlos Fidel Restrepo Duperly
* Fecha: 21-SEP-95
* Realizado para DURESPO
* Función que trabaja con la función NUMEROS
* y trabaja con CIENTOS
parameter CIENTOS
LETRA = iif(CIENTOS<100,"",C[int(CIENTOS/100)]) +;
iif(between(CIENTOS,101,199),'TO',"")
DECENA = CIENTOS%100
do case
case between(DECENA,1,29)
LETRA = LETRA +' '+ N[DECENA]
case between(DECENA,30,99)
LETRA = LETRA +' '+ D[DECENA/10]+;
iif(DECENA%10=0,"",' Y '+ N[DECENA%10])
endcase
RETURN ltrim(LETRA)
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement