Es war einmal … Heilige Sepamaria … GC7DCXZ … was habe ich gerechnet …

Das muss doch besser gehen. Die Banken können es doch auch.

Und wieder einmal begann eine abenteuerliche Reise zu einer neuen Funktion. Das Ziel war klar: die Funktion sollte Prüfziffern berechnen, Zahlen auf Korrektheit prüfen und fehlende Ziffern berechnen.

Um mich mit dem Thema Checkdigits – als Prüfziffern – besser vertraut zu machen, begann ich mit einfachen Zahlen: der deutschen Steuer-ID, der UIC, der ISBN und der IMEI. Einfach nur Zahlen, keine Buchstaben, keine Sonderfälle. Nachdem der erste Schritt erfolgreich war, ging es zur nächsten Stufe: der EAN oder GTIN. Es war wiederum nur eine einfach Zahl, aber immerhin mit verschiedenen Längen – 8, 12, 13, 14 Ziffern – die erkannt und verarbeitet werden mussten. Auch dies war zu bewältigen. Mutig ging es weiter: EURO-Banknoten und ihre Kontrollnummer. Hier kamen zum ersten Mal Buchstaben ins Spiel und zwei verschiedene Versionen. Die erste Serie bis 2013 und ab 2013 die zweite Serie, die sich in ihrem Aufbau unterscheiden. Aber auch dies war beherrschbar.

So wartete nur noch der Endgegner: die IBAN.

Bereits der erste Blick in die deutsche bzw. englische Wikipedia ließ mich erschauern. Von wegen Standardisierung. Genormt waren nur die zwei Zeichen des Ländercodes und die folgenden beiden Prüfziffern. Der Rest wurde den Nationen überlassen. Und die waren erfinderisch:

LandAufbau
AD – AndorraAD2!n4!n4!n12!c
DE – DeutschlandDE2!n8!n10!n
PK – PakistanPK2!n4!a16!c
XK – KosovoXK2!n4!n10!n2!n

Aber SWIFT und die IBAN-Registry ließen mich nicht im Stich. Die Herausforderung war nur noch,

  • die drei Quellen in Einklang zu bringen,
  • ein Datenmodell für den Aufbau der IBAN zu entwickeln,
  • die gefühlten 100 länderspezifischen Daten abzutippen und
  • ein Algorithmus zu entwickeln, der all diese Sonderfälle abdeckt.

Aber auch hier steckt der Teufel im Detail. Denn natürlich hat jede Nation wiederum eigene Regeln für die Bankleitzahl und die Kontonummer. Selbst wenn die IBAN korrekt ist, d.h. die Prüfziffer passt zur Zeichenfolge, muss sie noch lange nicht gültig sein.

Für Deutschland existieren beispielsweise über 14.000 Bankleitzahlen, die alle nach verschiedenen Standards erstellt wurde. Und natürlich hat jede eigene Bank ihr System, um Kontonummern zu erzeugen. Gut, dass es die Bundesbank gibt. Hier finden sich nicht nur halbjährlich aktualisierte Hinweise zu den gültigen Bankleitzahlen, sondern auch zu den Prüfziffernberechnungsmethoden.
Damit wäre zumindest für Deutschland ein weiterer Schritt möglich: die Überprüfung, ob die korrekte IBAN auch für eine reale Bank steht. Es müssen nur noch

  • diese über 14.000 Bankleitzahlen für den GC Wizard erfasst werden und
  • die rund 100 Prüfzifferberechnungsmethoden für die Kontonummer verallgemeinert und in Algorithmen umgesetzt werden.

Gut, dass Weihnachten ist, die Nächte lang sind und das Wetter es einem leicht macht, drinne zu bleiben, um mal sehen, ob das auch im GC Wizard funktioniert.

So wächst der Funktionsumfang langsam auf und für die nächste Version des GC Wizard erscheint ein neues Feature langsam am Horizont.