FoxPro/Visual FoxPro - Ayuda Urgente Porfavor

 
Vista:

Ayuda Urgente Porfavor

Publicado por Eduardo Prado (2 intervenciones) el 25/02/2008 15:16:54
en visual fox pro como realizo el siguiente ejercicio
Retornar en letras, un numero (0-99)
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

RE:Ayuda Urgente Porfavor

Publicado por Eduardo Ureña (2 intervenciones) el 04/03/2008 01:59:43
Normalmente ese tipo de funciones deben ser desarrolladas y llamadas desde un archivo de procedimientos o bien en una clase o en un archivo prg independiente.

Tengo una función simple que pasa valores numéricos a valores alfanuméricos para lo que son monedas. Te la doy para que la modifiques a tu gusto y le elimines todo lo que tenga que ver con monedas.

Saludos

Eduardo A. Ureña Solano
Costa Rica
****************************
FUNCTION MonLetra(Can)
* Can=la cantidad a transformar en letras
Armar=""
UNI1='UN'
UNI2='DOS'
UNI3='TRES'
UNI4='CUATRO'
UNI5='CINCO'
UNI6='SEIS'
UNI7='SIETE'
UNI8='OCHO'
UNI9='NUEVE'
DEC1='DIEZ'
DEC2='VEINTE'
DEC3='TREINTA'
DEC4='CUARENTA'
DEC5='CINCUENTA'
DEC6='SESENTA'
DEC7='SETENTA'
DEC8='OCHENTA'
DEC9='NOVENTA'
CEN1='CIENTO'
CEN2='DOSCIENTOS'
CEN3='TRESCIENTOS'
CEN4='CUATROCIENTOS'
CEN5='QUINIENTOS'
CEN6='SEISCIENTOS'
CEN7='SETECIENTOS'
CEN8='OCHOCIENTOS'
CEN9='NOVECIENTOS'
FRA11='ONCE'
FRA12='DOCE'
FRA13='TRECE'
FRA14='CATORCE'
FRA15='QUINCE'
FRA16='DIECISEIS'
FRA17='DIECISIETE'
FRA18='DIECIOCHO'
FRA19='DIECINUEVE'
CENT=(CAN-INT(CAN))*100
CEX1=LTRIM(STR(CENT))
IF VAL(CEX1)<10
CEX1='0'+CEX1
ENDIF
CEX1=LEFT(CEX1,2)
PASO1=1
CAN1=1000000
LEY1='MILLONES'
CAN2=1000
LEY2='MIL'
CAN3=1
LEY3=''
ARMAR=''
DO WHILE PASO1<=3
PASO=LTRIM(STR(PASO1))
CANTEM=INT(CAN/CAN&PASO)
IF CANTEM#0
ALFA=RIGHT('000'+LTRIM(STR(CANTEM)),3)
A=LEFT(ALFA,1)
B=RIGHT(ALFA,2)
IF VAL(A)#0
IF VAL(A)=1
IF VAL(B)#0
ARMAR=ARMAR+' '+'CIENTO'
ELSE
ARMAR=ARMAR+' '+'CIEN'
ENDIF
ELSE
ARMAR=ARMAR+' '+CEN&A
ENDIF
ENDIF
IF VAL(B)#0
DO CASE
CASE VAL(B)=10
ARMAR=ARMAR+' '+DEC1
CASE VAL(B)<10
C=RIGHT(B,1)
IF C='1'
LEY1='MILLON'
ENDIF
ARMAR=ARMAR+' '+UNI&C
CASE VAL(B)>10 .AND. VAL(B)<20
ARMAR=ARMAR+' '+FRA&B
CASE VAL(B)>=20
C=RIGHT(B,1)
B=LEFT(B,1)
ARMAR=ARMAR+' '+DEC&B
IF VAL(C)#0
ARMAR=ARMAR+' Y '+UNI&C
ENDIF
ENDCASE
ENDIF
ARMAR=ARMAR+' '+LEY&PASO
ENDIF
CAN=CAN-(CANTEM*CAN&PASO)
PASO1=PASO1+1
ENDDO
ARMAR=LTRIM(ARMAR+' COLONES CON '+CEX1+'/100')
RETURN Armar
**********
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