Códico IBAN

Códico IBAN

Postby informaticaeloy » Fri Dec 27, 2013 12:28 pm

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 view  RUN
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
informaticaeloy
 
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España

Re: Códico IBAN

Postby Antonio Linares » Fri Dec 27, 2013 5:53 pm

Eloy,

gracias!
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Códico IBAN

Postby hmpaquito » Fri Dec 27, 2013 6:05 pm

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Códico IBAN

Postby Manuel Valdenebro » Sat Dec 28, 2013 6:00 am

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
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Postby cnavarro » Sat Dec 28, 2013 10:45 am

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
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Códico IBAN

Postby Silvio.Falconi » Sun Dec 29, 2013 7:39 pm

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
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Códico IBAN

Postby Manuel Valdenebro » Tue Dec 31, 2013 11:23 am

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
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Postby Silvio.Falconi » Tue Dec 31, 2013 5:43 pm

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
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Códico IBAN

Postby Manuel Valdenebro » Thu Jan 02, 2014 4:18 pm

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
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Códico IBAN

Postby Silvio.Falconi » Thu Jan 02, 2014 5:13 pm

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
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Códico IBAN

Postby Manuel Valdenebro » Thu Jan 02, 2014 6:50 pm

Un saludo

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 100 guests