Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Numbers in letter
Message
De
02/12/1999 14:47:10
 
 
À
02/12/1999 10:06:07
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00297880
Message ID:
00298090
Vues:
19
>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
Fil
Voir

Click here to load this message in the networking platform