Códico IBAN

Post Reply
User avatar
informaticaeloy
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España
Contact:

Códico IBAN

Post by informaticaeloy »

Hola. He creado una función para calcular el código CCC IBAN. La he depurado bastante. La pongo por si a alguien le sirve:

Code: Select all | Expand

FUNCTION IBAN()
         LOCAL ACTUALCCC,PRIMERAPAIS,SEGUNDAPAIS
         //// en CLI[35] está el código del país (ES para españa)        
         PRIMERAPAIS:=ASC(LEFT(CLI[35],1))-55   //A-65 B-66 C-67 ...
         SEGUNDAPAIS:=ASC(RIGHT(CLI[35],1))-55
         
         //// en CLI[10] está el código de banco (string de 4)
         //// en cli[11] está el código de oficina (string de 4)
         //// en CLI[12] está el dígito de control (string de 2)
         //// en CLI[13] está el número de cuenta (string de 10)
       
         ACTUALCCC=CLI[10]+CLI[11]+CLI[12]+CLI[13]+ALLTRIM(STR(PRIMERAPAIS))+ALLTRIM(STR(SEGUNDAPAIS))+"00"
         CLI[36]:=ALLTRIM(STR(ROUND(98-MOD(VAL(ACTUALCCC),97),0)))
         //// en cli[36] guardo el código calculado

RETURN NIL


Así en 4 líneas lo calcula. Un saludo.
Windows 10 + FWH 20.08 + BCC 7.4 + Harbour 3.2.0 + PSPad 5.0.3
User avatar
Antonio Linares
Site Admin
Posts: 42513
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: Códico IBAN

Post by Antonio Linares »

Eloy,

gracias!
regards, saludos

Antonio Linares
www.fivetechsoft.com
hmpaquito
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Códico IBAN

Post by hmpaquito »

Eloy,


En el github de quin ferrer hay ya una.
https://github.com/QuimFerrer/iban/blob ... t-iban.prg
Lo que no se es si las rutinas SEPA funcionan.

Por cierto el IBAN, segun parece puede alcanzar hasta 35 CARACTERES y las entidades europeas pueden tener digitos ALFANUMERICOS. Por tanto, no se si pedir el IBAN separado por bloques o en una cadena. ¿ ideas ?

Saludos
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Post by Manuel Valdenebro »

En principio esa fórmula parece correcta y es la que yo utilicé. Pero comparando el IBAN que a mi me salía de una cuenta, con el que me salía con una calculadora de una entidad bancaria, a veces, el dígito era un número menos o mas. Según descubrí en una circular de la AEB, lo que ocurría, es que si el guarismo es demasiado largo (un número entero de 32 bits representa un máximo de 9 dígitos), se producía el error y para solucionarlo ellos aconsejan "dividir el cálculo en cálculos restantes consecutivos sobre números enteros con una extensión máxima de 9 dígitos para 32 bits y 18 dígitos para 64 bits".

Yo lo hago así:

// cPais siempre 'ES'
FUNCTION fIban( cBanco, cSucursal, cDC, cCuenta )
local nIban, cIban, nMod, nContador, cPais := 'ES', cPais2:=''

// comprueba ccc es correcto
IF !CCC (cBanco, cSucursal, cDC, cCuenta)
// devuelve cadena vacia por error CCC
RETURN ' '
ENDIF

FOR ncontador = 1 TO 2
IF ASC(SUBSTR(cPais, ncontador, 1)) >= 65
cPais2 += STR( (ASC(UPPER(SUBSTR(cPais, ncontador, 1)))-55), 2, 0)
ELSE
cPais2 += SUBSTR(cPais, ncontador, 1)
ENDIF
NEXT

cIban := cBanco + cSucursal
nMod := INT ( VAL(cIban) % 97)
cIban := LTRIM(STR(nMod,3,0))+cDC+SUBS(cCuenta,1,2)
nMod := INT ( VAL(cIban) % 97)
cIban := LTRIM(STR(nMod,3,0))+SUBS(cCuenta,3) + cPais2 + "00"
nMod := INT ( VAL(cIban) % 97 )
nIban := INT ( 98 - ( VAL(cIban) % 97) )

return cPais + STRZERO( nIban, 2)+cBanco+cSucursal+cDC+cCuenta

La función es mucho mas grande que la tuya, pero me ha funcionado en todas las pruebas que he hecho.

Por otra parte indicarle a Paquito que el cálculo del IBAN es diferente en cada país. En España tiene 24 caracteres, pero en otros paises puede ser diferente. Las normas para cada pais las aprueba http://www.swift.com/dsp/resources/docu ... gistry.pdf
Un saludo

Manuel
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Códico IBAN

Post by cnavarro »

Manuel, gracias por el codigo y la explicacion
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
Silvio.Falconi
Posts: 7133
Joined: Thu Oct 18, 2012 7:17 pm
Been thanked: 1 time

Re: Códico IBAN

Post by Silvio.Falconi »

Antonio,
Emg made last two year ago a Iban function good run
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Post by Manuel Valdenebro »

Silvio.Falconi wrote:Antonio,
Emg made last two year ago a Iban function good run


Silvio,

IBAN calculation is different in each country. For instance in Italy account number has 23 digits and in Spain 20. Italy IBAN length is 27 characters and in Spain 24.
Un saludo

Manuel
User avatar
Silvio.Falconi
Posts: 7133
Joined: Thu Oct 18, 2012 7:17 pm
Been thanked: 1 time

Re: Códico IBAN

Post by Silvio.Falconi »

the Iban in Italy is the sum of different codes

sample : IT62N0100515300000000016125 ----------------> 27 dgt

cPae + cChk + cCin + cAbi + cCab + cCon

cPae = state IT
cChk = number check 62
cCin = CIN code N
cAbi = Abi Code 01005
cCab = Cab Code 15300
cCon = Number of mine account bank 000000016125 ( mine is 12 dgt but I Know there are also 10 dgt in italy)

the Cin, Abi and Cab codes are codes of Bank

the Cin Code is create from cAbi,cCab and cCon

perhals on Espana or another State it can be different but perhaps they are small changes !!!

if you wish i can try with your data and see if the functions I use run ok ...
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Post by Manuel Valdenebro »

Silvio,

In this page
you have the Formula for each country. The method is simliarbutthe formula is different.

EMG IBAN is OK for Italy and my formula is OK for Spain.

:)
Un saludo

Manuel
User avatar
Silvio.Falconi
Posts: 7133
Joined: Thu Oct 18, 2012 7:17 pm
Been thanked: 1 time

Re: Códico IBAN

Post by Silvio.Falconi »

404 - Page Not Found

Sorry, the page you requested is not available
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Post by Manuel Valdenebro »

Un saludo

Manuel
Post Reply