Cálculo digitos control IBAN
IBAN es el acrónimo de International Bank Account Number, es una norma por la cual se identifica una cuenta bancaria de cualquier pais (aunque de momento sólo se utiliza en Europa). Más información en la wikipedia
Hoy he tenido que modificar una aplicación que prepara un fichero XML para enviar a un organismo público, en ese fichero había que indicar el código IBAN de unas cuentas bancarias. Resulta que donde esta aplicación tienen como 50 cuentas bancarias y además hay que indicar cuentas de terceros. Tenemos los digitos de entidad, oficina y cuenta de cada una, pero no el IBAN. He buscado información y he visto que como se calculaba, me he puesto manos a la obra y este es el resultado:
{ —— Devuelve el código IBAN que corresponde con la cuenta y el país que se le pasa Ver http://www.desarrolloweb.com/articulos/2484.php y http://www.sima.cat/chkiban.php —— } function ControlIBAN(const Cuenta, Pais: string): string; var i, j: integer; m: int64; l: TInteger; t: string; s: string; function LetterToDigit(const C: Char): string; const a: char = ‘A’; var d: byte; begin result := C; if C in [‘A’..‘Z’] then begin d := (byte(C) – byte(a)) + 10; result := IntToStr(d); end; end; begin l := TInteger.Create; try t := Cuenta + Pais + ‘00’; s := ‘’; j := Length(t); for i := 1 to j do s := s + LetterToDigit(t[i]); l.Assign(s); l.Modulo(97); l.ConvertToInt64(m); i := 98 – m; result := IntToStr(i); if i < 10 then result := ‘0’ + result; finally l.Free; end; end; function FormateaIBAN(const Cuenta, Pais: string): string; begin result := Pais + ControlIBAN(Cuenta, Pais) + Cuenta; end;
Requiere la librería DFF

