AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IBANs

Ein Thema von Amateurprofi · begonnen am 3. Sep 2012 · letzter Beitrag vom 12. Sep 2020
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Amateurprofi
Registriert seit: 17. Nov 2005
Ich habe mich noch einmal mit IBANs beschäftigt.
Dabei fiel mir auf, dass die seinerzeit (auch von mir) veröffentlichten Routinen die Überprüfung nur unvollständig vornehmen.
Zum Beispiel dürfen nach ISO 13616 die 2 auf den Ländercode folgenden Ziffern nicht 00 und nicht 01 sein.
Ein weiterer beliebter "Fehler" ist die Annahme, in IBANs dürften nur Ziffern und Majuskeln enthalten sein. Richtig ist, dass nach ISO 13616 auch Minuskeln enthalten sein dürfen.
Das ist unkritisch, wenn man nur deutsche IBANs prüfen will, weil hier, abgesehen von dem führenden "DE" tatsächlich nur Ziffern erlaubt sind.
Ein weiterer Mangel der bisher vorgestellten Routinen ist, dass im Prinzip nur eine numerische Prüfung vorgenommen wird, nicht aber eine länderspezifische Prüfung, ob die Länge der IBAN korrekt ist und ob an allen Positionen nur die Zeichentypen stehen, die für das betreffende Land zugelassen sind.

Im Anhang ist mein Projekt IBANS
Was kann das?:
Numerische und syntaktische Prüfung von IBANS aller in der z.Zt. gültigen IBAN-Registry aufgeführten Länder.
Für "Deutsche" IBANs zusätzlich die Prüfung der Bankleitzahl und der Kontonummer.
Funktions- und Performancetest der seinerzeit veröffentlichten IBAN-Checker.
Anzeige folgender Listen
Tabelle der bei der Deutschen Bundesbank registrierten Bankleitzahlen mit diversen Infos zu diesen.
Tabelle der Ländercodes nach ISO 3166.
Tabelle der IBAN-Formate der in der IBAN-Registry gelisteten Länder.
Tabelle der Bankplätze in Deutschland.
Tabelle der Clearinggebiete in Deutschland.
Tabelle der Bankgruppen in Deutschland.

In den Tabellen kann in den einzelnen Datenspalten nach bestimmten Daten gesucht werden.
Die jeweils selektierten Datensätze der Tabellen können ins Clipboard oder in eine Datei geschrieben werden.

Im Anhang sind folgende Dateien
- IBANS.exe
- IBANs.pdf
- Die IBAN Registry Stand 04/2012 als PDF
- Die ISO 13616 als PDF

Vielleicht kann der eine oder andere damit etwas anfangen.

Neue Version:
Im Datei Menu Eintrag "IBans erstellen" hinzugefügt.
Liest aus einer Textdatei oder aus dem Clipboard beliebig viele BLZ + Kontonummer und erstellt eine Liste, die vom Anwender festzulegende Daten enthält.
Verfügbare Daten sind BLZ, Kontonummer, IBAN sowie alle Datenfelder aus der BLZ-Datei der Deutschen Bundesbank.
Die Liste kann in eine Textdatei oder ins Clipboard geschrieben werden.

Ich übernehme keine Haftung für die Richtigkeit der IBANs.

Hinweis:
Grundsätzlich sollten immer die vom jeweiligen Kreditinstitut genannten IBANs verwendet werden.
In der Regel werden die identisch mit den vom Programm erstellten IBANs sein, jedoch soll es einzelne Kreditinstitute geben, die sich nicht exakt an die Regeln der ISO 13616 halten (Z.B Prüfziffern dürfen nicht 00, 01 oder 99 sein.

Neue Version wegen Fehler in BLZ-Datei der Deutschen Bundesbank vom 03.06.2013
Siehe #11

Neue Version wegen Fehlers im Programm
Siehe #15 und #16

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 09.09.2013
Geänderte Prüfmethoden für Kontonummern ab 01.09.2013

Neue Version wegen
Neue IBAN-Registry ab 01/2014
Neue BLZ-Datei der Deutschen Bundesbank vom 09.06.2014
Geänderte Prüfmethoden für Kontonummern ab 06/2014

Neue Version wegen
Neue IBAN-Registry ab 02/2015
Neue BLZ-Datei der Deutschen Bundesbank vom 14.12.2014

Neue Version wegen
Neue IBAN-Registry ab 04/2016
Neue BLZ-Datei der Deutschen Bundesbank vom 07.03.2016
Geänderte Prüfmethoden für Kontonummern ab 03/2016

Neue Version wegen
Neue IBAN-Registry ab 05/2016
Neue BLZ-Datei der Deutschen Bundesbank vom 05.12.2016
Geänderte Prüfmethoden für Kontonummern ab 03/2017

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 05.06.2017

Neue Version wegen
Geänderte Prüfmethoden für Kontonummern ab 09/2017

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 04.09.2017

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 04.12.2017

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 05.03.2018

Neue Version wegen
Geänderte Prüfmethoden für Kontonummern ab 06/2018

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 04.06.2018

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 03.09.2018

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 03.12.2018

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 04.03.2019

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 09.12.2019

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 08.06.2020

Neue Version wegen
Neue BLZ-Datei der Deutschen Bundesbank vom 07.09.2020
Angehängte Dateien
Dateityp: zip IBANS.zip (2,86 MB, 30x aufgerufen)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....

Geändert von Amateurprofi (12. Sep 2020 um 11:48 Uhr) Grund: Neue Version wegen geänderter Basisdaten
 
Jumpy

 
Delphi 6 Enterprise
 
#11
  Alt 7. Jun 2013, 07:47
Hallo,

die neue Funktion "IBans erstellen" gefällt mir und ich hätte noch ein paar Anregungen:

Es wäre schön, wenn man als Input nicht nur die BLZ und Kontonummer hätte sondern noch beliebige andere Daten, die dann unverändert wieder rausgegeben werden. Dies kann bei einer Massenverarbeitung helfen, die Datensätze zuzuordnen.
Evtl. könnte man da auch das IBANHIN und IBANRUECK Format verwenden, ggf. mit den entsprechenden Fehlercodes?

Das Optimum wäre, wenn diese Funktion per Kommandozeile aufrufbar wäre. Das können afaik die ganzen vergleichbaren Programme nicht.

Ich hab z.B. bei uns in der Firma eine Verarbeitung geschrieben, die aus allen Bankspezifischen Tabellen die Informationen holt und in eine Datei schreibt. Dann muss ein Mensch diese Datei mit einem Iban-Umsetzprogramm umsetzten, anschließend macht mein Programm wieder weiter und schreibt die geänderten Daten wieder in die Datenbank und erzeugt dann ein Log, welche Datensätze welche Fehler haben und ob die jetzt umgesetzt wurden oder nicht, oder trotz Umsetztung nochmal geprüft werdenmüssen usw.
Hier wäre es halt perfekt gewesen, wenn der "Mensch in der Mitte" nicht nötig gewesen wäre, um da ein externes Programm zu bedienen.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

 
Delphi 10.4 Sydney
 
#12
  Alt 7. Jun 2013, 14:14
Ich kann nur sagen: Respekt! Ich war vor Jahren mal dran, sowas zu schreiben und bin an den unzähligen Prüfsummenformeln verzweifelt und habs schließlich aufgegeben. Jetzt hast du dir aber auch was aufgehalst, denn nun musst du bei jeder Aktualisierung der Prüfvorschriftenliste seitens Bundesbank alles abgrasen. Denn als ich das letzte Mal damit zu tun hatte, veröffentlichte die BB keine Delta-Liste der Änderungen sondern immer nur ein neues Dokument.
  Mit Zitat antworten Zitat
Amateurprofi

 
Delphi XE2 Professional
 
#13
  Alt 7. Jun 2013, 17:32
Ich kann nur sagen: Respekt! Ich war vor Jahren mal dran, sowas zu schreiben und bin an den unzähligen Prüfsummenformeln verzweifelt und habs schließlich aufgegeben. Jetzt hast du dir aber auch was aufgehalst, denn nun musst du bei jeder Aktualisierung der Prüfvorschriftenliste seitens Bundesbank alles abgrasen. Denn als ich das letzte Mal damit zu tun hatte, veröffentlichte die BB keine Delta-Liste der Änderungen sondern immer nur ein neues Dokument.
Ja, sie veröffentlichen immer nur die volle Spezifikation, aber sie bieten den Service, sich informieren zu lassen, wenn eine neue Ausgabe bereit liegt, und in der Info schreiben sie dann, bei welchen Prüfmethoden sich etwas verändert hat.
Ich finde das ist ein recht guter Service.
Man muss nicht regelmä8ig prüfen, ob es was neues gibt, sondern kriegt alles "frei Haus und für Lau" geliefert.

Und ja! Die Implementierung der z.Z. 140 Prüfmethoden war schon heftig.
Aber wenn dann ab und zu eine Änderung kommt, ist die eigentlich schnell und einfach zu machen.

Die einfachste Prüfmethode ist übrigens die Methode 09
Da heißt es "Keine Prüfzifferberechnung"

Geändert von Amateurprofi ( 8. Jun 2013 um 02:00 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

 
Delphi XE2 Professional
 
#14
  Alt 10. Jun 2013, 21:09
Ich bin heute von der Deutschen Bundesbank informiert worden, dass die BLZ-Datei vom 03.06.2013 fehlerhaft ist.
Ich habe die Daten korrigiert und die neue Version in die DP gestellt (Siehe #1)

Hintergrund :

Zitat:
Sehr geehrter Herr Amateurprofi,


in der zum 3. Juni 2013 gueltigen Bankleitzahlendatei wurden von der Deutschen Bank versehentlich drei Einträge zur Loeschung aufgegeben, die insbesondere in Systemen des kartengestuetzen Zahlungsverkehr noch Verwendung finden.

Wir bitten Sie daher - soweit moeglich - die folgenden Einträge in den Zahlungsverkehrsanwendung zu berücksichtigen:

Bankleitzahl 10070000
Merkmal 2
Bezeichnung Deutsche Bank Fil Berlin Gf P2
PLZ Ort 10883 Berlin
Kurzbezeichnung Deutsche Bank Fil Berlin
PAN 27700
BIC
Pruefzifferberechnungsmethode 63
Datensatznummer 056400
Aenderungskennzeichen A
Bankleitzahllöschung 0
Nachfolge-Bankleitzahl 00000000

Bankleitzahl 10070024
Merkmal 2
Bezeichnung Deutsche Bank Privat und Geschäftskunden F 700 Gf P2
PLZ Ort 10883 Berlin
Kurzbezeichnung Deutsche Bank PGK Berlin
PAN 21700
BIC
Pruefzifferberechnungsmethode 63
Datensatznummer 056401
Aenderungskennzeichen A
Bankleitzahllöschung 0
Nachfolge-Bankleitzahl 00000000

Bankleitzahl 76026000
Merkmal 2
Bezeichnung norisbank Gf P2
PLZ Ort 10625 Berlin
Kurzbezeichnung norisbank Berlin
PAN 25360
BIC
Pruefzifferberechnungsmethode C7
Datensatznummer 056402
Aenderungskennzeichen A
Bankleitzahllöschung 0
Nachfolge-Bankleitzahl 00000000

In der zum 9. September 2013 gültigen Bankleitzahlendatei werden die Einträge mit den vorgenannten Angaben wieder enthalten sein.

Mit freundlichen Grueßen
__________________________________________________ __________________________________________________
Deutsche Bundesbank | Zentrale | Zahlungsverkehr | Wilhelm-Epstein-Strasse 14 | 60431 Frankfurt am
Main
Internet http://www.bundesbank.de | E-mail presse-information@bundesbank.de
Telefon +49 (0) 69 9566-0 | Fax +49 (0) 69 9566-3077
  Mit Zitat antworten Zitat
NormanNG

 
Delphi 2007 Professional
 
#15
  Alt 14. Jun 2013, 15:56
Hi,

auch von mir !

Einen Fehler glaube ich gefunden zu haben (oder ich stelle mich zu doof an):
Wenn ich IBANS erstellen lasse wird neben der (korrekten) IBAN irgendwie immer ein falscher Bankname/BIC ermittelt?

Kann das jemand nachvollziehen? Ich möchte hier keine BSP-Daten nennen...

P.S.
Die gleiche BLZ in der Suche führt zur richtigen Bank

Geändert von NormanNG (14. Jun 2013 um 15:58 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

 
Delphi XE2 Professional
 
#16
  Alt 14. Jun 2013, 19:07
Einen Fehler glaube ich gefunden zu haben (oder ich stelle mich zu doof an):
Wenn ich IBANS erstellen lasse wird neben der (korrekten) IBAN irgendwie immer ein falscher Bankname/BIC ermittelt?

Kann das jemand nachvollziehen? Ich möchte hier keine BSP-Daten nennen...

P.S.
Die gleiche BLZ in der Suche führt zur richtigen Bank
Würde ich ja gern prüfen, aber ohne irgendeinen weiteren Hinweis, bei welcher Konstellation der Fehler auftritt, ist das kaum möglich.
Was ich brauche, ist die BLZ, bei der der Fehler auftritt, die Kontonummer ist hier irrelevant, weil die BLZ-Daten ausschließlich über die BLZ zugeordnet werden.
Da alle BLZ veröffentlicht werden, kann die ja nicht so fürchterlich geheim sein, oder?

Also nenne doch bitte die BLZ, dann gehe ich dem gerne nach.


Hat sich schon erledigt.
Background:
Die BLZ-Datei enthält zur Zeit 19340 Datensätze, aber "nur" 4069 verschiedene BLZ; es werden also viele BLZ mehrfach genannt.
Außerdem sind in der BLZ-Date alle Daten als Text enthalten. Die Suche nach einer bestimmten BLZ ist deshalb recht "unperformant".
Aus diesem Grund erstelle ich bei Programmstart ein Array of TBankInfoIndex, wobei TBankInfoIndex so definiert ist:
Delphi-Quellcode:
   TBankInfoIndex=Record
      BankCode:integer; // BLZ
      First:integer; // Erster Eintrag für BLZ in BLZ-Datei
      Last:integer; // Letzter Eintrag für BLZ in BLZ-Datei
      Lead:integer; // Der "führende" Eintrag für BLZ (Mark=1)
      FUNCTION Bank:String; // "BLZ = Name, Plz, Ort, Anzahl Stellen"
      FUNCTION CFIndex:integer; // Prüfmethode für Kontonummern
   End;
Dieses Array hat nur 4069 Einträge und enthält die BLZ in numerischer Form.
Die Funktion BankCodeIndex findet in diesem Array jede BLZ mit maximal 12 Zugriffen.

Der Fehler war, dass ich bei der Zuordung der bankbezogenen Daten mit dem Index in dieses Array auf die BLZ-Datei zugegriffen habe. Richtig wäre, zunächst aus TBankInfoIndex[Index] entweder Lead, First, Last oder einen zwischen First und Last liegenden Index zu holen, und mit diesem auf die BLZ Datei zuzugreifen.

Ich habe das korrigiert und ordne jetzt die bankbezogenen Daten via "Lead", also der führenden Stelle einer Bank zu.

An dieser Stelle (mir ist das auch erst jetzt aufgefallen) sei gesagt, dass eine eindeutige Zuordung über die BLZ nicht möglich ist.
Was ich implementieren kann und werde, ist, den Anwender wählen zu lassen, ob er die Daten aus der führenden Stelle oder dem erst- oder letztgenannten Eintrag haben möchte, oder aus allen Einträgen. Letzteres ergibt dann für viele BLZ mehrere Resultate, aber ich sehe im Moment keine Lösung einer eindeutigen Datenzuordnung.

Die Änderung werde ich im Laufe des Abends durchführen und die neue Version hochladen.

NormanNG: Danke für den Hinweis.

Delphi-Quellcode:
FUNCTION BankCodeIndex(blz:integer):integer; overload;
var first,last:integer; p:TPBankInfoIndex;
begin
   first:=0;
   last:=High(BankInfoIndex);
   if last>=0 then
      repeat
         result:=(last+first) shr 1;
         p:=@BankInfoIndex[result];
         if p.BankCode<blz then first:=result+1
            else if p.BankCode>blz then last:=result-1
               else exit;
      until (first>last);
   result:=-1;
end;

FUNCTION BankCodeIndex(const blz:string):integer; overload;
var n:integer;
begin
   if TryStrToInt(blz,n) then result:=BankCodeIndex(n) else result:=-1;
end;

Neue Version in #1

Geändert von Amateurprofi (14. Jun 2013 um 23:11 Uhr) Grund: Hinweis, dass neue Version hochgeladen, hinzugefügt
  Mit Zitat antworten Zitat
Amateurprofi

 
Delphi XE2 Professional
 
#17
  Alt 12. Sep 2013, 22:54
Ich habe eine neue Version in #1 hochgeladen.
Grund:
Neue BLZ-Datei der Deutschen Bundesbank vom 09.09.2013
Geänderte Prüfmethoden für Kontonummern ab 01.09.2012

Ich habe auch versucht, einen der Wünsche von Jumpy (siehe #11) zu realisieren.
"Es wäre schön, wenn man als Input nicht nur die BLZ und Kontonummer hätte sondern noch beliebige andere Daten, die dann unverändert wieder rausgegeben werden. Dies kann bei einer Massenverarbeitung helfen, die Datensätze zuzuordnen."
Das verbirgt sich unter Menu > Datei > IBans erstellen.
In der Hilfedatei ist das noch nicht dokumentiert.
Deshalb hier ganz kurz.
Die Funktion "IBans Erstellen" basiert auf einer Datei die BLZ und Kontonummern enthält.
Mit Menu > Datei > IBans erstellen wird ein Fenster geöffnet in dem die Parameter für die Erstellung definiert werden.
Wenn in der Gruppe Optionen die Checkbox "Enthält Userdaten" markiert ist, kann aus dem Feld "Verfügbare Daten" der Eintrag "User- Daten" dem Feld "Auszugebende Daten" hinzugefügt werden.
Alle Daten, die in der Source-Datei hinter den Kontonummern stehen, werden dann in die Ausgabedatei übernommen.
Ich habe das nur sehr "sparsam" getestet.
  Mit Zitat antworten Zitat
Alt 15. Sep 2013, 13:32     Erstellt von Nintendo
Dieser Beitrag wurde von fkerber gelöscht. - Grund: Versehentlicher Beitrag.
Amateurprofi

 
Delphi XE2 Professional
 
#18
  Alt 20. Mai 2014, 00:16
Ich hab eine neue Version in #1 des Threads hochgeladen.
Einzelheiten am Ende von #1
  Mit Zitat antworten Zitat
Amateurprofi

 
Delphi XE2 Professional
 
#19
  Alt 12. Feb 2015, 18:19
Ich hab eine neue Version in #1 des Threads hochgeladen.
Einzelheiten am Ende von #1
  Mit Zitat antworten Zitat
Amateurprofi

 
Delphi XE2 Professional
 
#20
  Alt 5. Apr 2016, 21:31
Ich hab eine neue Version in #1 des Threads hochgeladen.
Einzelheiten am Ende von #1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz