In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Calculo del IBAN

Foro de Xailer profesional en español
Responder
juanjo
Mensajes: 9
Registrado: Mié Dic 16, 2009 8:17 pm

Calculo del IBAN

Mensaje por juanjo »

Para el calculo del iban necesito hacer una división de 26 digitos (20
cuenta + 6 del pais ) entre 97 y obtener el resto correctamente.
Harbour o Xailer no calcula bien algunas veces este resto. Me imagino
que es por el número tan grande que tiene que dividir .
Hay alguna solución para esto?.Gracias
xevi[1]
Mensajes: 39
Registrado: Lun Jun 14, 2010 3:52 pm

Calculo del IBAN

Mensaje por xevi[1] »

Juan José,
estí  respondido en el Foro spanish...
FUNCTION xIBAN( cCCC )
Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) ) %
97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
Un Saludo,
Xevi.
""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
missatge:52a077ad$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
> Para el calculo del iban necesito hacer una división de 26 digitos (20
> cuenta + 6 del pais ) entre 97 y obtener el resto correctamente.
> Harbour o Xailer no calcula bien algunas veces este resto. Me imagino que
> es por el número tan grande que tiene que dividir .
> Hay alguna solución para esto?.Gracias
juanjo
Mensajes: 9
Registrado: Mié Dic 16, 2009 8:17 pm

Calculo del IBAN

Mensaje por juanjo »

El 05/12/2013 14:05, Xevi escribió:
> FUNCTION xIBAN( cCCC )
> Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) ) %
> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
Lo siento ya habia visto esto pero no funciona correctamente .
El calculo del iban debe hacerse sobre la totalidad de los 26 digitos y
no de forma particionada .
He probado con algunas cuentas personales y de la empresa y el calculo
devuelto no es correcto.
xevi[1]
Mensajes: 39
Registrado: Lun Jun 14, 2010 3:52 pm

Calculo del IBAN

Mensaje por xevi[1] »

JuanJo,
Lo he comprovado en más de 10 cuentas y funciona perfectamente.
Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
compruebo. Si falla en una puede fallar en alguna más. Me gustaria estar
completamente seguro de que funciona correctamente. Ya te digo, en más de 10
cuentas comprobadas... todas correctamente.
Un Saludo,
Xevi.
""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
> El 05/12/2013 14:05, Xevi escribió:
>> FUNCTION xIBAN( cCCC )
>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) ) %
>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
> Lo siento ya habia visto esto pero no funciona correctamente .
> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos y no
> de forma particionada .
> He probado con algunas cuentas personales y de la empresa y el calculo
> devuelto no es correcto.
juanjo
Mensajes: 9
Registrado: Mié Dic 16, 2009 8:17 pm

Calculo del IBAN

Mensaje por juanjo »

El 05/12/2013 17:31, Xevi escribió:
> JuanJo,
>
> Lo he comprovado en más de 10 cuentas y funciona perfectamente.
> Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
> compruebo. Si falla en una puede fallar en alguna más. Me gustaria estar
> completamente seguro de que funciona correctamente. Ya te digo, en más
> de 10 cuentas comprobadas... todas correctamente.
>
>
> Un Saludo,
> Xevi.
>
>
> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
> missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>> El 05/12/2013 14:05, Xevi escribió:
>>> FUNCTION xIBAN( cCCC )
>>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) ) %
>>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
>> Lo siento ya habia visto esto pero no funciona correctamente .
>> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos
>> y no de forma particionada .
>> He probado con algunas cuentas personales y de la empresa y el calculo
>> devuelto no es correcto.
>
TE envio por email privado una cuenta
juanjo
Mensajes: 9
Registrado: Mié Dic 16, 2009 8:17 pm

Calculo del IBAN

Mensaje por juanjo »

El 05/12/2013 17:31, Xevi escribió:
> JuanJo,
>
> Lo he comprovado en más de 10 cuentas y funciona perfectamente.
> Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
> compruebo. Si falla en una puede fallar en alguna más. Me gustaria estar
> completamente seguro de que funciona correctamente. Ya te digo, en más
> de 10 cuentas comprobadas... todas correctamente.
>
>
> Un Saludo,
> Xevi.
>
>
> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
> missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>> El 05/12/2013 14:05, Xevi escribió:
>>> FUNCTION xIBAN( cCCC )
>>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) ) %
>>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
>> Lo siento ya habia visto esto pero no funciona correctamente .
>> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos
>> y no de forma particionada .
>> He probado con algunas cuentas personales y de la empresa y el calculo
>> devuelto no es correcto.
>
Lo siento pero me rechaza tu correo electrónico
¿Es correcto ?
xevi[1]
Mensajes: 39
Registrado: Lun Jun 14, 2010 3:52 pm

Calculo del IBAN

Mensaje por xevi[1] »

Juanjo,
xevicomas@gmail.com
Un Saludo,
Xevi.
""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
missatge:52a0af43$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
> El 05/12/2013 17:31, Xevi escribió:
>> JuanJo,
>>
>> Lo he comprovado en más de 10 cuentas y funciona perfectamente.
>> Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
>> compruebo. Si falla en una puede fallar en alguna más. Me gustaria estar
>> completamente seguro de que funciona correctamente. Ya te digo, en más
>> de 10 cuentas comprobadas... todas correctamente.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
>> missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>>> El 05/12/2013 14:05, Xevi escribió:
>>>> FUNCTION xIBAN( cCCC )
>>>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) )
>>>> %
>>>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
>>> Lo siento ya habia visto esto pero no funciona correctamente .
>>> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos
>>> y no de forma particionada .
>>> He probado con algunas cuentas personales y de la empresa y el calculo
>>> devuelto no es correcto.
>>
> Lo siento pero me rechaza tu correo electrónico
> ¿Es correcto ?
xevi[1]
Mensajes: 39
Registrado: Lun Jun 14, 2010 3:52 pm

Calculo del IBAN

Mensaje por xevi[1] »

JuanJo
llevo 30 cuentas comprobadas... todas me da correctamente el IBAN.
Un Saludo,
Xevi.
"Xevi" <xevicomas_quitaeso@gmail.com> ha escrit al
missatge:52a0b82a$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Juanjo,
>
> xevicomas@gmail.com
>
> Un Saludo,
> Xevi.
>
>
> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
> missatge:52a0af43$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>> El 05/12/2013 17:31, Xevi escribió:
>>> JuanJo,
>>>
>>> Lo he comprovado en más de 10 cuentas y funciona perfectamente.
>>> Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
>>> compruebo. Si falla en una puede fallar en alguna más. Me gustaria estar
>>> completamente seguro de que funciona correctamente. Ya te digo, en más
>>> de 10 cuentas comprobadas... todas correctamente.
>>>
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
>>> missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>>>> El 05/12/2013 14:05, Xevi escribió:
>>>>> FUNCTION xIBAN( cCCC )
>>>>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val( Left(cCCC,15) )
>>>>> %
>>>>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
>>>> Lo siento ya habia visto esto pero no funciona correctamente .
>>>> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos
>>>> y no de forma particionada .
>>>> He probado con algunas cuentas personales y de la empresa y el calculo
>>>> devuelto no es correcto.
>>>
>> Lo siento pero me rechaza tu correo electrónico
>> ¿Es correcto ?
>
juanjo
Mensajes: 9
Registrado: Mié Dic 16, 2009 8:17 pm

Calculo del IBAN

Mensaje por juanjo »

El 05/12/2013 19:20, Xevi escribió:
> JuanJo
>
> llevo 30 cuentas comprobadas... todas me da correctamente el IBAN.
>
>
> Un Saludo,
> Xevi.
>
>
>
> "Xevi" <xevicomas_quitaeso@gmail.com> ha escrit al
> missatge:52a0b82a$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Juanjo,
>>
>> xevicomas@gmail.com
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
>> missatge:52a0af43$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>>> El 05/12/2013 17:31, Xevi escribió:
>>>> JuanJo,
>>>>
>>>> Lo he comprovado en más de 10 cuentas y funciona perfectamente.
>>>> Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
>>>> compruebo. Si falla en una puede fallar en alguna más. Me gustaria
>>>> estar
>>>> completamente seguro de que funciona correctamente. Ya te digo, en más
>>>> de 10 cuentas comprobadas... todas correctamente.
>>>>
>>>>
>>>> Un Saludo,
>>>> Xevi.
>>>>
>>>>
>>>> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
>>>> missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>>>>> El 05/12/2013 14:05, Xevi escribió:
>>>>>> FUNCTION xIBAN( cCCC )
>>>>>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val(
>>>>>> Left(cCCC,15) ) %
>>>>>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
>>>>> Lo siento ya habia visto esto pero no funciona correctamente .
>>>>> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos
>>>>> y no de forma particionada .
>>>>> He probado con algunas cuentas personales y de la empresa y el calculo
>>>>> devuelto no es correcto.
>>>>
>>> Lo siento pero me rechaza tu correo electrónico
>>> ¿Es correcto ?
>>
Perdona que no haya contestado antes pero he estado muy liado
Acabo de hacer la prueba con Bingen y lo siento pero tu algoritmo me
devuelve ES91 de la cuenta que te envié cuando deberí­a ser ES98
Este otro algoritmo si devuelve correctamente el codigo Iban . Está
copiado desde una Excel del banco Sabadell y reescrito por José López
cIBAN :=
"ES" +StrZero(98-Val(RESIDUO(RESIDUO(RESIDUO(RESIDUO(SubStr(cCCC, 1,8),97)+SubStr(cCCC,9,8),97)+SubStr(cCCC+ "142800",17,8),97)+SubStr(cCCC+"142800",25,2),97)),2)
FUNCTION RESIDUO(cDividen,nDivisor)
Local nResultado
Local nDividen := Val(cDividen) //, nDivisor := Val(cDivisor)
nResultado := nDividen % nDivisor
RETURN AllTrim(Str(nResultado,2,0))
Tiene la pinta de ser el tema de 32/64 bits
Un saludo
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Calculo del IBAN

Mensaje por jfgimenez »

Hola a todos,
esta rutina:
STATIC FUNCTION IBANDIG( xccc )
LOCAL xmod
xmod:=( VAL(LEFT(xccc,8)) % 97 )
xmod:=( VAL(STR(xmod,2)+SUBS(xccc,9,6)) % 97 )
xmod:=( VAL(STR(xmod,2)+SUBS(xccc,15,6)) % 97 )
xmod:=( VAL(STR(xmod,2)+"142800") % 97 )
RETURN RIGHT("00"+LTRIM(STR(98-xmod,2)),2)
la tengo yo desde hace casi casi 20 años. Sí­, he dicho bien, hace casi
20 años, y no es broma. La puse en un programa en Clipper MS-DOS que
tuve que hacer para una imprenta que imprimí­a los talonarios de cheques
para los bancos, y ahí­ ya aparecí­a el IBAN desde aquel entonces. Y en
todos estos años, imprimiendo cheques para varias entidades, nunca ha
habido el más mí­nimo error. Y que yo sepa, seguí­an usando este programa
hasta al menos hace un par de años.
Esta función devuelve los dí­gitos de control del IBAN, que van justo
detrás del "ES" del comienzo, y que sigue con el CCC tal cual. Y para
los que tengan curiosidad, esto consiste simplemente en aplicar el
"algoritmo" de la división, ese que aprendimos en su dí­a en el colegio
("esto entre eso a tanto y me sobra cuanto que lo pongo debajo"), pero
aplicado a numeros grandes en vez de a dí­gitos del 0 al 9 ;-)
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
xevi[1]
Mensajes: 39
Registrado: Lun Jun 14, 2010 3:52 pm

Calculo del IBAN

Mensaje por xevi[1] »

JuanJo,
Comprovado... mi función, en algunas PCs (Windows 2033server, Win2008server)
me dava IBANs erroneos.
No se debe al tema de 32 o 64bits, ya que en PCs con XP funciona
correctamente, y en Win8 32 o 64 tambiésn...
lo "extraño" es que en las PCs que falla son sobre WinServer ¿?¿?
Comprovado con la rutina que has subido y también con la de Jose... y estas
si dan el código correctamente en TODAS las PCs que he provado.
Un Saludo,
Xevi.
""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
missatge:52a84934$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
> El 05/12/2013 19:20, Xevi escribió:
>> JuanJo
>>
>> llevo 30 cuentas comprobadas... todas me da correctamente el IBAN.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>>
>> "Xevi" <xevicomas_quitaeso@gmail.com> ha escrit al
>> missatge:52a0b82a$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>> Juanjo,
>>>
>>> xevicomas@gmail.com
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
>>> missatge:52a0af43$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>>>> El 05/12/2013 17:31, Xevi escribió:
>>>>> JuanJo,
>>>>>
>>>>> Lo he comprovado en más de 10 cuentas y funciona perfectamente.
>>>>> Si quieres me envias una de esas cuentas que te da mal el IBAN y lo
>>>>> compruebo. Si falla en una puede fallar en alguna más. Me gustaria
>>>>> estar
>>>>> completamente seguro de que funciona correctamente. Ya te digo, en más
>>>>> de 10 cuentas comprobadas... todas correctamente.
>>>>>
>>>>>
>>>>> Un Saludo,
>>>>> Xevi.
>>>>>
>>>>>
>>>>> ""Juan José Garcí­a González (BiSoft)"" <juanjo@bisoft.es> ha escrit al
>>>>> missatge:52a081b5$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
>>>>>> El 05/12/2013 14:05, Xevi escribió:
>>>>>>> FUNCTION xIBAN( cCCC )
>>>>>>> Return "ES" + PadL( ToString( 98 - Val( ToString( Val(
>>>>>>> Left(cCCC,15) ) %
>>>>>>> 97 ) + SubStr( cCCC+"142800", 16, 15 ) ) % 97 ), 2, "0" )
>>>>>> Lo siento ya habia visto esto pero no funciona correctamente .
>>>>>> El calculo del iban debe hacerse sobre la totalidad de los 26 digitos
>>>>>> y no de forma particionada .
>>>>>> He probado con algunas cuentas personales y de la empresa y el
>>>>>> calculo
>>>>>> devuelto no es correcto.
>>>>>
>>>> Lo siento pero me rechaza tu correo electrónico
>>>> ¿Es correcto ?
>>>
> Perdona que no haya contestado antes pero he estado muy liado
>
> Acabo de hacer la prueba con Bingen y lo siento pero tu algoritmo me
> devuelve ES91 de la cuenta que te envié cuando deberí­a ser ES98
>
> Este otro algoritmo si devuelve correctamente el codigo Iban . Está
> copiado desde una Excel del banco Sabadell y reescrito por José López
>
> cIBAN :=
> "ES" +StrZero(98-Val(RESIDUO(RESIDUO(RESIDUO(RESIDUO(SubStr(cCCC, 1,8),97)+SubStr(cCCC,9,8),97)+SubStr(cCCC+ "142800",17,8),97)+SubStr(cCCC+"142800",25,2),97)),2)
>
> FUNCTION RESIDUO(cDividen,nDivisor)
> Local nResultado
> Local nDividen := Val(cDividen) //, nDivisor := Val(cDivisor)
> nResultado := nDividen % nDivisor
> RETURN AllTrim(Str(nResultado,2,0))
>
> Tiene la pinta de ser el tema de 32/64 bits
>
> Un saludo
>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Calculo del IBAN

Mensaje por jfgimenez »

Xevi,
> Comprovado... mi función, en algunas PCs (Windows 2033server,
> Win2008server) me dava IBANs erroneos.
> No se debe al tema de 32 o 64bits, ya que en PCs con XP funciona
> correctamente, y en Win8 32 o 64 tambiésn...
> lo "extraño" es que en las PCs que falla son sobre WinServer ¿?¿?
No me habí­a fijado antes en tu rutina, pero ahora que la he revisado veo
que estás cogiendo 15 dí­gitos en la primera división y el resto en la
segunda división. Esto puede provocar que en la segunda división, el
dividendo tenga 17 dí­gitos (en decimal) cuando el resto de la primera es
mayor de 9, lo que se produce la mayorí­a de las veces.
Por otro lado, [x]Harbour (y casi todos los lenguajes de programación)
utilizan números de punto flotante de doble precisión (64 bits) para
todo este tipo de cálculos, y mira por donde, este formato tiene una
precisión de 16 dí­gitos
(http://en.wikipedia.org/wiki/IEEE_floating_point). Con esto, yo estoy
seguro al 99.99% de que el problema es de desbordamiento. En cambio, con
las otras dos rutinas, el número se fragmenta en trozos más pequeños,
que nunca llegan a provocar un desbordamiento.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder