programacion en fox
codigo que permite pasar un valor númerico a cadena de caracteres, por ejemplo cuando en una empresa se generan recibos o cheques con valores.
FUNCTION montoesc
PARAMETERS cifra
private all *
****************INICIALIZACION DE VARIABLES*************************
literal = ' '
STORE 0.01 TO minimo
STORE 999999999999.99 TO maximo
STORE ' ' TO val_literal
********ARREGLO QUE CONTIENE MILESMILLONES, MILLONES, MILES Y PESOS**
DIMENSION num_a_lite(4,2)
STORE '' TO num_a_lite
*
****PARA CONTENER EL VALOR DE LOS CENTAVOS****
STORE 'CON ' TO parte_con
STORE '/100 MCTE.' TO parte_100
*
*****CARGA UNAS TABLAS PARA UTILIZAR EN LA IMPRESION DEL MONTO
DIMENSION tabla_unid(9)
STORE 'UN ' TO tabla_unid(1)
STORE 'DOS ' TOtabla_unid(2)
STORE 'TRES ' TO tabla_unid(3)
STORE 'CUATRO ' TO tabla_unid(4)
STORE 'CINCO ' TO tabla_unid(5)
STORE 'SEIS ' TO tabla_unid(6)
STORE 'SIETE ' TO tabla_unid(7)
STORE 'OCHO ' TO tabla_unid(8)
STORE 'NUEVE ' TO tabla_unid(9)
*
***************
DIMENSION tabla_dece(9)
STORE 'DIEZ ' TO tabla_dece(1)
STORE 'VEINTE ' TOtabla_dece(2)
STORE 'TREINTA ' TO tabla_dece(3)
STORE 'CUARENTA ' TO tabla_dece(4)
STORE 'CINCUENTA ' TO tabla_dece(5)
STORE 'SESENTA ' TO tabla_dece(6)
STORE 'SETENTA ' TO tabla_dece(7)
STORE 'OCHENTA ' TO tabla_dece(8)
STORE 'NOVENTA ' TO tabla_dece(9)
*
***************
DIMENSION tab_11_15 (5)
STORE 'ONCE ' TO tab_11_15(1)
STORE 'DOCE ' TOtab_11_15(2)
STORE 'TRECE ' TO tab_11_15(3)
STORE 'CATORCE ' TO tab_11_15(4)
STORE 'QUINCE ' TO tab_11_15(5)
*****************************FIN INICIALIZACION***************
*
**********************************************
**********PROGRAMA PRINCIPAL******************
**********************************************
*
IF (cifra < minimo .OR. cifra > maximo)literal = iif(cifra=0,[CERO PESOS CON 00/100 MCTE.],[**])
ELSE
DO conv_a_l
ENDIF
RETURN(literal)
**********FIN PROGRAMA PRINCIPAL**************
**********************************************
PROCEDURE conv_a_l
*
cifra_alfa = trans(cifra,[@L 999999999999.99])
fraccion = RIGHT(cifra_alfa,2)
milmillon = SUBSTR(cifra_alfa,1,3)
millon =SUBSTR(cifra_alfa,4,6)
miles = SUBSTR(cifra_alfa,7,9)
pesos = SUBSTR(cifra_alfa,10,12)
centenas = 0
decenas = 0
unidades = 0
i = 0
IF milmillon > '000'
I = I + 1
STORE 'MIL ' TO num_a_lite(I,2)
if millon = [000]
num_a_lite(I,2)=num_a_lite(I,2)+[MILLONES ]
endif
if millon+miles+pesos = [000000000]
num_a_lite(I,2)=num_a_lite(I,2)+[DE ] endif
DO ce_de_un WITH milmillon
DO num_a_le
STORE val_literal TO num_a_lite(I,1)
ENDIF
IF millon > '000'
I = I + 1
*
** ALMACENA TITULO DE MILLON**
DO CASE
CASE millon+miles+pesos = '001000000'
STORE 'MILLON DE ' TO num_a_lite(I,2)
CASE millon=[001] .and. miles+pesos # [000000]
STORE 'MILLON ' TO num_a_lite(I,2)
case millon # [001] .and.miles+pesos=[000000]
STORE 'MILLONES DE ' TO num_a_lite(I,2)
case millon # [001] .and. miles+pesos#[000000]
STORE 'MILLONES ' TO num_a_lite(I,2)
endcase
******
DO ce_de_un WITH millon
DO num_a_le
STORE val_literal TO num_a_lite(I,1)
ENDIF
IF miles > '000'
I = I + 1
STORE 'MIL ' TO num_a_lite(I,2)
DO ce_de_un WITH miles
DO num_a_le
STORE val_literal TOnum_a_lite(I,1)
ENDIF
IF pesos > '000'
I = I + 1
DO ce_de_un WITH pesos
DO num_a_le
STORE val_literal TO num_a_lite(I,1)
ENDIF
nu_conv_a_l=[]
IF milmillon+millon+miles+pesos == [000000000000]
nu_conv_a_l= fraccion + parte_100
ELSE
*
***************FORMA EL MONTO ESCRITO*****************
*
** NU_CONV_A_L CONTIENE EL MONTO ESCRITO SIN TENER
** EN...
Regístrate para leer el documento completo.