Cálculo digitos control IBAN

11-10-2007 | Delphi |

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:

  1. {——
  2. Devuelve el código IBAN que corresponde con la cuenta y el paí­s que se le pasa
  3. Ver http://www.desarrolloweb.com/articulos/2484.php y http://www.sima.cat/chkiban.php
  4. ——}
  5. function ControlIBAN(const Cuenta, Pais: string): string;
  6. var
  7. i, j: integer;
  8. m: int64;
  9. l: TInteger;
  10. t: string;
  11. s: string;
  12. function LetterToDigit(const C: Char): string;
  13. const
  14. a: char = ‘A’;
  15. var
  16. d: byte;
  17. begin
  18. result := C;
  19. if C in [‘A’..‘Z’] then
  20. begin
  21. d := (byte(C)byte(a)) + 10;
  22. result := IntToStr(d);
  23. end;
  24. end;
  25. begin
  26. l := TInteger.Create;
  27. try
  28. t := Cuenta + Pais + ‘00’;
  29. s := ‘’;
  30. j := Length(t);
  31. for i := 1 to j do
  32. s := s + LetterToDigit(t[i]);
  33. l.Assign(s);
  34. l.Modulo(97);
  35. l.ConvertToInt64(m);
  36. i := 98 – m;
  37. result := IntToStr(i);
  38. if i < 10 then
  39. result := ‘0’ + result;
  40. finally
  41. l.Free;
  42. end;
  43. end;
  44. function FormateaIBAN(const Cuenta, Pais: string): string;
  45. begin
  46. result := Pais + ControlIBAN(Cuenta, Pais) + Cuenta;
  47. end;

Requiere la librerí­a DFF

Artículos relacionados

Deja un comentario