Prüfzifferberechnung von Kontonummern

From: Michael Plugge (m.plugge@fh-mannheim.de)
Date: Fri Dec 13 2002 - 13:48:53 CET


Hallo,
ich habe eine kleine library zum Prüfziffertest von deutschen Kontonummern
geschrieben; sie kann gut zusammen mit dem dtaus-Paket verwendet werden.
Hier ein Auszug aus der 00readme.txt Datei:

########################################################################
# PRÜFZIFFERBERECHNUNG VON KONTONUMMERN #
# C-Library #
########################################################################
# #
# Autor : Michael Plugge <m.plugge@fh-mannheim.de> #
# Version : 1.0.2 #
# Datum : 6.11.2002 #
# letzte Änderung : 6.11.2002 #
########################################################################

Das Modul errechnet anhand von Kontonummer, Bankleitzahl und
Prüfziffermethode ob eine angegebene Kontonummer plausibel ist
(Prüfzifferverfahren).

1. Paketliste
============
   00liesmich.txt : diese Datei
   lgpl.txt : GNU Lesser General Public Lizenz
   lgpl-ger.html : deutsche Übersetzung der LGPL
   disclaimer : zur Sicherheit ;-)))
   konto_check.c : C-Datei (komplettes Prüfziffermodul)
   blz_in.txt : Testdatei mit Bankleitzahlen und Kontonummern
   blz.lut : Lookup-Table für Bankleitzahlen
   makefile : für Faulenzer (Unix)

nicht in der .zip bzw. .tar-bz2 Datei:

   konto_check.exe : DOS-Programm (kompiliert)

2. Installation
===============

Alle benötigten Funktionen sind in der Datei konto_check.c enthalten. Die
Datei kann mit einem anderen Programm gelinkt werden. Als API werden drei
die Funktionen kto_check(), cleanup_kto() und generate_lut() sowie die zwei
Variablen kto_check_msg und pz_methode global definiert; alles andere ist
static oder lokal deklariert. Eine eigentliche Installation ist nicht
erforderlich, sie kann jedoch bei Bedarf (z.B. als shared library) erfolgen.

3. Benutzung
===============

Zum Test eines Kontos wird die Funktion

   int kto_check(char *pz_or_blz,char *kto,char *lut_name)

benutzt. Der erste Parameter ist die Prüfziffermethode (zweistellig) oder
Bankleitzahl, der zweite Parameter das zu testende Konto und der dritte
Parameter Name und Pfad der Lookup-Datei blz.lut. Falls für die Datei der
Defaultwert genommen werden soll (DEFAULT_LUT_NAME), kann für den dritten
Parameter auch NULL übergeben werden. Die Funktion hat folgende
Rückgabewerte:

FATAL_ERROR (-9) : schwerer (nicht näher spezifizierter) Fehler
INVALID_LUT_FILE (-7) : Fehler in der Datei blz.lut
NO_LUT_FILE (-6) : Die Datei blz.lut konnte nicht geöffnet werden
INVALID_BLZ (-5) : Die Bankleitzahl ist ungültig
INVALID_KTO (-4) : Das Konto ist ungültig (nicht nur falsch!!)
MAYBE_FALSE (-3) : Möglicherweise falsch (nur Methode 87, s.u. Bugs)
NOT_IMPLEMENTED (-2) : die Prüfziffermethode ist nicht implementiert
NOT_DEFINED (-1) : die Prüfziffermethode ist nicht definiert (Methode 12)
FALSE (0) : Die Prüfziffer ist falsch
OK (1) : Die Prüfziffer ist richtig
OK_NO_CHK (2) : Das Konto wird ohne Prüfung als richtig angesehen
MAYBE_OK (3) : Möglicherweise richtig (nur Methode 87, s.u. Bugs)

Sowohl Kontonummer als auch Bankleitzahl sind als strings zu übergeben.

Zu jedem Rückgabewert wird außerdem eine Klartextmeldung in der Variablen
kto_check_msg gesetzt.

Die Library benutzt für die Prüfziffermethoden eigenes (komprimiertes)
Dateiformat. Eine Datei mit den aktuellen Prüfziffern (vom September 2002)
liegt bei; sie kann jedoch auch mit der Funktion

   ret=generate_lut(char *inputname,char *outputname)

aus der Datei der Deutschen Bundesbank generiert werden. Die
Funktion hat die folgenden Rückgabewerte:

FATAL_ERROR (-9) Ausgabedatei blz.lut kann nicht geschrieben werden
NO_BLZ_FILE (-8) BLZ-Datei (blz.txt) nicht gefunden
OK (1) erfolgreich

Die Funktion generate_lut() setzt auch die Variable kto_check_msg.

(...)

7. GESCHWINDIGKEIT
==================

Die library wurde auf einfache Erweiterbarkeit und Übersichtlichkeit des
Codes optimiert, nicht auf Geschwindigkeit; sie ist jedoch trotzdem sehr
schnell. Bei den Tests wurde (unter Linux und DOS) eine Datei mit 100.000
Kontonummern in einer halben Sekunde geprüft (auf einem 1 GHz-Athlon).

Lizenz ist die GNU LGPL.

Viele Grüße

Michael Plugge



This archive was generated by hypermail 2.1.4 : Fri Dec 13 2002 - 13:49:00 CET