RE:Cantidad en letras ...
Puedes emplear el siguiente prosedimiento
El prototipo del Source es: NumeroaLetras(REAL),STRING
Procedimiento:
NumeroaLetras PROCEDURE (Numero)
!Esto va en Local Data
Centavos REAL
Unidades REAL
Decenas REAL
Centenas REAL
Valor REAL
SinCientos REAL
Respuesta STRING(300)
Modulo STRING(34)
Parcial STRING(34)
D_Unidades_G STRING(210)
D_Unidades STRING(10),DIM(21),OVER(D_Unidades_G)
D_Decenas_G STRING(72)
D_Decenas STRING(9),DIM(8),OVER(D_Decenas_G)
D_Centenas_G STRING(117)
D_Centenas STRING(13),DIM(9),OVER(D_Centenas_G)
!Codigo
CODE
D_Unidades_G = 'CERO ' | !Carga de Unidades
& 'UNO ' |
& 'DOS ' |
& 'TRES ' |
& 'CUATRO ' |
& 'CINCO ' |
& 'SEIS ' |
& 'SIETE ' |
& 'OCHO ' |
& 'NUEVE ' |
& 'DIEZ ' |
& 'ONCE ' | ! Y de primera decena
& 'DOCE ' |
& 'TRECE ' |
& 'CATORCE ' |
& 'QUINCE ' |
& 'DIECISEIS ' |
& 'DIECISIETE' |
& 'DIECIOCHO ' |
& 'DIECINUEVE' |
& 'VEINTE '
D_Decenas_G = 'VEINTI ' | !Carga de Decenas
& 'TREINTA ' |
& 'CUARENTA ' |
& 'CINCUENTA' |
& 'SESENTA ' |
& 'SETENTA ' |
& 'OCHENTA ' |
& 'NOVENTA '
D_Centenas_G = 'CIENTO ' | !Carga de Centenas
& 'DOSCIENTOS ' |
& 'TRESCIENTOS ' |
& 'CUATROCIENTOS' |
& 'QUINIENTOS ' |
& 'SEISCIENTOS ' |
& 'SETECIENTOS ' |
& 'OCHOCIENTOS ' |
& 'NOVECIENTOS '
!--------------------------------------------------------------------------
Clear(Respuesta)
Valor = INT(Numero)
Centavos = (Numero - Valor) * 100 !Centavos
Valor = INT(Centavos + 0.01)
! Activar la l¡nea siguiente si no se quiere la parte de centavos en letras
! Respuesta = 'CON '&FORMAT(Valor,@n02)&'/100 CENTAVOS'
If Valor = 1 Then
Respuesta = 'CON UN CENTAVO'
ElsIf Valor <> 0 Then
Do Calc_Parcial
Respuesta = 'CON '&Clip(Parcial)&' CENTAVOS'
END
Valor = INT (Numero - (INT(Numero / 1000) *1000)) !Unidades
If Valor <> 0 Then
Do Calc_Modulo
Respuesta = Clip (Modulo) &' '&Clip (Respuesta)
END
Valor = INT (Numero / 1000) - (INT(Numero / 1000000) * 1000) !Miles
If Valor = 1 Then
Respuesta = 'UN MIL '&Clip (Respuesta)
ElsIf Valor <> 0 Then
Do Calc_Modulo
Respuesta = Clip (Modulo) &' MIL '&Clip (Respuesta)
END
Valor = INT (Numero / 1000000) !Millones
If Valor = 1 Then
Respuesta = 'UN MILLON '&Clip (Respuesta)
ElsIf Valor <> 0 Then
Do Calc_Modulo
Respuesta = Clip (Modulo) &' MILLONES '&Clip (Respuesta)
END
Return(Respuesta)
!---------------------------------------------------------------------------
Calc_Modulo ROUTINE
If valor = 100 Then
Modulo = 'CIEN'
Else
Do Calc_Parcial
IF Valor > 100 Then
Valor = int(Valor / 100)
If SinCientos = 0 Then
Modulo = Clip(D_Centenas[Valor])
Else
Modulo = Clip(D_Centenas[Valor]) &' '& Clip(Parcial)
END
Else
Modulo = Clip(Parcial)
END
END
!---------------------------------------------------------------------------
Calc_Parcial ROUTINE
Centenas = Int(Valor/100)
Decenas = INT(Valor/10) - Centenas*10
Unidades = Valor - (Decenas*10) - (Centenas*100) +1
SinCientos = (Decenas*10)+ Unidades - 1
Case SinCientos
Of 0 to 20
Parcial = Clip(D_Unidades[SinCientos+1])
Of 21 to 99
If Unidades = 1 Then
Parcial = Clip(D_Decenas[Decenas-1])
ElsIF Decenas > 2 Then
Parcial = Clip(D_Decenas[Decenas-1]) & ' Y '& Clip(D_Unidades[Unidades])
Else
Parcial = Clip(D_Decenas[Decenas-1]) & Clip(D_Unidades[Unidades])
END
END
!!!!! Espero se sirva (Saludos)