Importa estas 3 funciones o ok... Saludos AlexM /******* funcion 1************/ $PBExportHeader$fx_ciento.srf $PBExportComments$Sub función de fx_MoneyToString global type fx_ciento from function_object end type forward prototypes global function string fx_ciento (integer num) end prototypes global function string fx_ciento (integer num);string cad, ls, ret cad = string(num, "000") choose case Left(cad, 1) case '2' ret = 'doscientos' case '3' ret = 'trescientos' case '4' ret = 'cuatrocientos' case '5' ret = 'quinientos' case '6' ret = 'seiscientos' case '7' ret = 'setecientos' case '8' ret = 'ochocientos' case '9' ret = 'novecientos' End choose If Left(cad, 1) = '1' then If Mid(cad, 2,2) = '00' then ret = 'cien' Else ret = 'ciento' End if End if If Mid(cad, 2,2) = '00' then return ret If ret <> "" then ret = ret + " " If Mid(cad, 2, 2) < '16' then ret = ret + fx_unidad(Mid(cad, 2, 2)) Elseif Mid(cad, 3, 1) = '0' then choose case Mid(cad, 2, 1) case '2' ls = 'veinte' case '3' ls = 'treinta' case '4' ls = 'cuarenta' case '5' ls = 'cincuenta' case '6' ls = 'sesenta' case '7' ls = 'setenta' case '8' ls = 'ochenta' case '9' ls = 'noventa' End choose Else choose case Mid(cad, 2, 1) case '1' ls = 'dieci' case '2' ls = 'veinti' case '3' ls = 'treinta y ' case '4' ls = 'cuarenta y ' case '5' ls = 'cincuenta y ' case '6' ls = 'sesenta y ' case '7' ls = 'setenta y ' case '8' ls = 'ochenta y ' case '9' ls = 'noventa y ' End choose ls = ls + fx_unidad(Mid(cad, 3, 1)) End if return ret + ls end function /******* funcion ************/ $PBExportHeader$fx_millon.srf $PBExportComments$Sub función de fx_MoneyToString global type fx_millon from function_object end type forward prototypes global function string fx_millon (long num) end prototypes global function string fx_millon (long num);string cad, ls, ret, ls2 cad = string(num, "000000") ls = Mid(cad,1,3) If ls <> "000" then ret = fx_ciento(integer(ls)) //If left(ls,1) = "1" then ret = Mid(ret,1, len(ret)-1) ret = ret + " mil" End if ls = Mid(cad,4,3) If ls <> "000" then ls = fx_ciento(integer(ls)) If ret <> "" then ret = ret + " " ret = ret + ls End if return ret end function /******* funcion ************/ $PBExportHeader$fx_moneytostring.srf $PBExportComments$Convierte dato numerico a letras. global type fx_moneytostring from function_object end type forward prototypes global function string fx_moneytostring (double num) end prototypes global function string fx_moneytostring (double num);string cad, ret, ls cad = string(num, "0000000000000.00") /*9,000,000,000,000.00*/ ls = Left(cad, 1) If ls <> "0" then If ls = '1' then ret = 'un' Else ret = fx_unidad(ls) End if ret += " billon" If integer(ls) > 1 then ret = ret + "es" End if ls = Mid(cad,2,6) If ls <> "000000" then If ret <> "" then ret = ret + " " If long(ls) = 1 then ret += "un millon" Else ret += fx_millon(long(ls)) + " millones" End if End if ls = Mid(cad, 8, 6) If ls <> "000000" then IF mid(ls,1,3) = "001" then ret ='un mil ' + fx_ciento(integer(mid(ls,4))) else If ret <> "" then ret = ret + " " ret += fx_millon(long(ls)) end if End if If ret = "" then ret = "cero" ls = Mid(cad, 15, 2) ret = ret + " con " + ls + "/100" return ret end function