Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *--------------------------------------------------------------------------
- * FUNCTION Num2Let(tnNumero)
- *--------------------------------------------------------------------------
- * Devuelve un número en letras con centavos
- * USO: ? Num2Let(15.11) -> QUINCE CON ONCE CENTAVOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * FUNCTION Num2Let(tnNumero)
- *--------------------------------------------------------------------------
- * Devuelve un número en letras con centavos
- * USO: ? Num2Let(15.11) -> QUINCE CON ONCE CENTAVOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--------------------------------------------------------------------------
- * Devuelve un número en letras con centavos
- * USO: ? Num2Let(15.11) -> QUINCE CON ONCE CENTAVOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * Devuelve un número en letras con centavos
- * USO: ? Num2Let(15.11) -> QUINCE CON ONCE CENTAVOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * USO: ? Num2Let(15.11) -> QUINCE CON ONCE CENTAVOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--------------------------------------------------------------------------
- Function Num2Let(tnNumero)
- Local lnEntero, lnFraccion
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *-- Elegir si se REDONDEA o TRUNCA
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * tnNumero = ROUND(tnNumero, 2) && Redondeo a 2 decimales
- tnNumero = Int(tnNumero*100)/100 && Trunco a dos decimales
- lnEntero = Int(tnNumero)
- lnFraccion = Int((tnNumero - lnEntero) * 100)
- Return N2L(lnEntero, 0) + 'CON ' + ;
- N2L(lnFraccion, 1) + 'CENTAVOS.'
- Endfunc
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--------------------------------------------------------------------------
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * FUNCTION N2L(tnNro, tnFlag)
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--------------------------------------------------------------------------
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * Devuelve un número entero en letras
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * Usada por Let2Num (deben estar ambas)
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * USO: ? N2L(32) -> TREINTA Y DOS
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * RETORNA: Caracter
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- * AUTOR: LMG
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--------------------------------------------------------------------------
- Function N2L(tnNro, tnFlag)
- If Empty(tnFlag)
- tnFlag = 0
- Endif
- Local lnEntero, lcRetorno, lnTerna, lcMiles, ;
- lcCadena, lnUnidades, lnDecenas, lnCentenas
- lnEntero = Int(tnNro)
- lcRetorno = ''
- lnTerna = 1
- Do While lnEntero > 0
- lcCadena = ''
- lnUnidades = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnDecenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- lnCentenas = Mod(lnEntero, 10)
- lnEntero = Int(lnEntero / 10)
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--- Analizo la terna
- Do Case
- Case lnTerna = 1
- lcMiles = ''
- Case lnTerna = 2 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL '
- Case lnTerna = 3 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'MILLON ', 'MILLONES ')
- Case lnTerna = 4 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = 'MIL MILLONES '
- Case lnTerna = 5 And (lnUnidades + lnDecenas + lnCentenas # 0)
- lcMiles = Iif(lnUnidades = 1 And lnDecenas = 0 And ;
- lnCentenas = 0, 'BILLON ', 'BILLONES ')
- Case lnTerna > 5
- lcRetorno = ' ERROR: NUMERO DEMASIADO GRANDE '
- Exit
- Endcase
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--- Analizo las unidades
- Do Case
- Case lnUnidades = 1
- lcCadena = Iif(lnTerna = 1 And tnFlag = 0, 'UNO ', 'UN ')
- Case lnUnidades = 2
- lcCadena = 'DOS '
- Case lnUnidades = 3
- lcCadena = 'TRES '
- Case lnUnidades = 4
- lcCadena = 'CUATRO '
- Case lnUnidades = 5
- lcCadena = 'CINCO '
- Case lnUnidades = 6
- lcCadena = 'SEIS '
- Case lnUnidades = 7
- lcCadena = 'SIETE '
- Case lnUnidades = 8
- lcCadena = 'OCHO '
- Case lnUnidades = 9
- lcCadena = 'NUEVE '
- Endcase
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--- Analizo las decenas
- Do Case
- Case lnDecenas = 1
- Do Case
- Case lnUnidades = 0
- lcCadena = 'DIEZ '
- Case lnUnidades = 1
- lcCadena = 'ONCE '
- Case lnUnidades = 2
- lcCadena = 'DOCE '
- Case lnUnidades = 3
- lcCadena = 'TRECE '
- Case lnUnidades = 4
- lcCadena = 'CATORCE '
- Case lnUnidades = 5
- lcCadena = 'QUINCE '
- Other
- lcCadena = 'DIECI' + lcCadena
- Endcase
- Case lnDecenas = 2
- lcCadena = Iif(lnUnidades = 0, 'VEINTE ', 'VEINTI') + lcCadena
- Case lnDecenas = 3
- lcCadena = 'TREINTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 4
- lcCadena = 'CUARENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 5
- lcCadena = 'CINCUENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 6
- lcCadena = 'SESENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 7
- lcCadena = 'SETENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 8
- lcCadena = 'OCHENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Case lnDecenas = 9
- lcCadena = 'NOVENTA ' + Iif(lnUnidades = 0, '', 'Y ') + lcCadena
- Endcase
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--- Analizo las centenas
- Do Case
- Case lnCentenas = 1
- lcCadena = Iif(lnUnidades = 0 And lnDecenas = 0, ;
- 'CIEN ', 'CIENTO ') + lcCadena
- Case lnCentenas = 2
- lcCadena = 'DOSCIENTOS ' + lcCadena
- Case lnCentenas = 3
- lcCadena = 'TRESCIENTOS ' + lcCadena
- Case lnCentenas = 4
- lcCadena = 'CUATROCIENTOS ' + lcCadena
- Case lnCentenas = 5
- lcCadena = 'QUINIENTOS ' + lcCadena
- Case lnCentenas = 6
- lcCadena = 'SEISCIENTOS ' + lcCadena
- Case lnCentenas = 7
- lcCadena = 'SETECIENTOS ' + lcCadena
- Case lnCentenas = 8
- lcCadena = 'OCHOCIENTOS ' + lcCadena
- Case lnCentenas = 9
- lcCadena = 'NOVECIENTOS ' + lcCadena
- Endcase
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfu
- *--- Armo el retorno terna a terna
- lcRetorno = lcCadena + lcMiles + lcRetorno
- lnTerna = lnTerna + 1
- Enddo
- If lnTerna = 1
- lcRetorno = 'CERO '
- Endif
- Return lcRetorno
- Endfunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement