vim:tw=80:ai ############################################################################## # PRÜFZIFFERBERECHNUNG VON ÖSTERREICHISCHEN KONTONUMMERN # # C-/Perl-Library # ############################################################################## # # # Autor : Michael Plugge # # Version : 1.3 # # Datum : 16.01.2008 # ############################################################################## 1. Allgemeines ============== Die Library errechnet anhand von Kontonummer und Bankleitzahl, ob eine angegebene Kontonummer plausibel ist (Prüfzifferverfahren). Sie wurde auf Anfrage von Frank Simon von ECCE TERRAM Internet Services GmbH, http://www.ecce-terram.de (und mit kräftiger Unterstützung von Terra) geschrieben. Diese Datei bezieht sich vor allem auf die C-Library; in der Perl-Version gibt es kleine Unterschiede, besonders in der Paketliste. Für die Perl- Version ist sie mehr als Zusatzinfo gedacht. 2. Paketliste ============ 00liesmich.txt : diese Datei 0_history.txt : Versionsgeschichte blz-at.lut : lut-Datei (Binärformat, aus inpar.dat generiert) blz-at.dump : lut-Datei (mit -dump aus blz-at.lut generiert) blz-at.plain : lut-Datei (plain Format) disclaimer : ;-))) inpar.dat : Referenzdatei mit einigen Bankleitzahlen und Prüfparametern (s.u.). konto_check-at.c : C-Datei (komplette Library) konto_check-at_trace.c : nochmals die Library, jedoch mit Protokollausgabe aller Rechenschritte konto_check-at.h : zugehörige Header-Datei/API mit Beschreibung der exportierten Funktionen konto_check-at.exe : DOS-/Windows Programm konto_check-at_dll.exe : Windows-Programm, gegen die DLL gelinkt konto_check-at_trace.exe : DOS/Windows Programm, Trace-Variante konto_check-at_trace_dll.exe : DOS/Windows Programm, Trace-Variante, gegen die DLL gelinkt konto_check-at.dll : Windows-DLL der Library konto_check-at_trace.dll : Trace-Variante der Windows-DLL lgpl.txt : GNU Lesser General Public Lizenz lgpl-ger.html : deutsche Übersetzung der LGPL main.c : Beispielsprogramm main_trace.c : Beispielsprogramm für die Trace-Variante makefile : makefile für Linux mit Targets für win-gcc (Crosscompiler) testkonten.txt : einige Testkonten; diejenigen aus dem INPAR-Handbuch : sind direkt mit Prüfparametern eingetragen, da : für diese manche Bankleitzahlen in inpar.txt fehlen. 3. Installation =============== Alle benötigten Funktionen sind in der Datei konto_check-at.c enthalten. Die Datei kann mit einem anderen Programm gelinkt werden. Als API werden die Funktionen kto_check_at(), kto_check_retval2txt(), kto_check_retval2html(), get_loesch_datum(), generate_lut_at() sowie dump_lutfile() global definiert; alles andere ist in der Library static oder lokal deklariert. Eine eigentliche Installation ist nicht erforderlich, sie kann jedoch bei Bedarf (als DLL oder shared library) erfolgen. 4. Prüfparameter ================ Die aktuellen Prüfparameter sind nicht frei verfügbar; sie können von der Firma First Data Austria, Wien (http://www.firstdata.at) käuflich bezogen werden. Das Handbuch zu INPAR (mit der Spezifikation des Dateiformats) ist auf Anfrage ebenfalls von First Data Austria erhältlich. Interessenten wenden sich bitte an Andreas.Krickl@firstdata.at. Die Spezifikation findet sich auch unter http://www.firstdata.at/de/service/downloads.htm im Abschnitt "Downloads INPAR" -> "Handbuch PDF" (aktuell (Stand: 11.9.06) ist die Version 2.1). Diesem Paket liegt eine Datei inpar.dat bei; sie dient als Referenz für das Dateiformat der INPAR-Daten. Die Datei ist ebenfalls unter der oben angegebenen Adresse verfügbar (als "Testdatei ZIP"). Die Liste ist weder vollständig noch aktuell. Sie enthält nur die Daten von 32 Banken, und auch die Prüfparameter haben sich teilweise geändert 5. Benutzung =============== Zum Test eines Kontos wird die Funktion int kto_check_at(char *blz,char *kto,char *lut_name) benutzt. Der erste Parameter ist entweder die Bankleitzahl (fünfstellig)) oder die Prüfparameter (mit vorangestelltem p), der zweite Parameter das zu testende Konto und der dritte Parameter Name und Pfad der Lookup-Datei blz-at.lut. Falls für die Datei der Defaultwert genommen werden soll (DEFAULT_LUT_NAME), kann für den dritten Parameter auch ein Leerstring übergeben werden; falls NULL übergeben wird, wird keine lut-Datei gelesen (das ist für den Fall gedacht, wenn man die Prüfparameter direkt angeben will). Falls in der ersten Stelle der BLZ ein - angegeben wird, werden auch gelöschte Bankleitzahlen überprüft; die Rückgabewerte sind in diesem Fall OK_GELOESCHT (Kontonummer gültig), OK_NO_CHK_GELOESCHT (Kontonummer gültig, aber nicht geprüft) oder FALSE_GELOESCHT (Kontonummer nicht gültig). Die Funktion hat folgende Rückgabewerte: LIBRARY_INIT_ERROR : Problem beim Initialisieren der globalen Variablen LUT_CRC_ERROR : Prüfsummenfehler in der blz.lut Datei FALSE_GELOESCHT : falsch (die BLZ wurde außerdem gelöscht) OK_NO_CHK_GELOESCHT : ok, ohne Prüfung (die BLZ wurde allerdings gelöscht) OK_GELOESCHT : ok (die BLZ wurde allerdings gelöscht) FILE_READ_ERROR : Lesefehler bei Dateien INVALID_LUT_FILE : Fehler in der Datei blz.lut NO_LUT_FILE : Die Datei blz.lut konnte nicht geöffnet werden INVALID_BLZ : Die Bankleitzahl ist ungültig FALSE : Die Prüfziffer ist falsch OK : Die Prüfziffer ist richtig OK_NO_CHK : Das Konto wird ohne Prüfung als richtig angesehen OK_NO_CHK_GELOESCHT BLZ_GELOESCHT Sowohl Kontonummer als auch Bankleitzahl sind als Strings zu übergeben. Zu jedem Rückgabewert wird kann mit der Funktion kto_check_retval2txt() bzw. kto_check_retval2html() eine Klartextmeldung generiert werden; die letztere Funktion liefert Umlaute als HTML-Entities. Die Library benutzt für die Prüfparameter ein eigenes (komprimiertes) Dateiformat. Eine Prüfparameter-Datei mit Referenzdaten (inpar.dat) liegt bei; sie kann mit der Funktion generate_lut() in eine Lookup-Datei umgewandelt werden: ret=generate_lut_at("inpar.dat","blz-at.lut","blz-at.plain",NULL) Mit dem beiliegendem Programm ist der Aufruf: ./konto_check-at -lut inpar.dat blz-at.lut blz-at.plain Bei diesem Aufruf wird zusätzlich noch eine Datei blz-at.plain generiert, die den Inhalt der lut-Datei im Klartext (und noch einige zusätzliche Infos) enthält. Rückgabewerte dieser Funktion sind: FILE_WRITE_ERROR : Ausgabedatei blz.lut kann nicht geschrieben werden NO_BLZ_FILE : BLZ-Datei (blz.txt) nicht gefunden INVALID_BLZ_FILE : Format der BLZ-Datei nicht erkannt/falsch OK : erfolgreich 6. BEKANNTE FEHLER ================== Momentan sind keine Fehler bekannt. Falls Sie einen Fehler finden, würde ich mich sehr freuen, davon zu hören ;-))). Die library läßt sich zusammen mit der deutschen Version von konto_check in einem Programm verwenden. Momentan sind beide Versionen noch weitgehend unabhängig; in absehbarer Zeit soll allerdings das Format lut-Datei erweitert werden, so daß die lut-Dateien beider Versionen (auch mit mehr Feldern als momentan) in einer Datei abgelegt werden können. Fehlermeldungen und Anregungen bitte an m.plugge@fh-mannheim.de. 7. VERSIONEN ============ hier sind nur die Daten der einzelnen Versionen; näheres zu den Änderungen findet sich in 0_history. 13.07.06 : Version 0.1 20.07.06 : Version 0.2 01.09.06 : Version 1.0 08.09.06 : Version 1.1 11.09.06 : Version 1.2 (11.06.07: Version 2.1 zusammen mit deutscher Perl-Version) 16.01.08 : Version 1.3 (doch wieder die alte Zählung) 8. COPYRIGHT ============ Copyright (C) 2006 Michael Plugge. Diese library ist freie Software; Sie dürfen sie unter den Bedingungen der GNU Lesser General Public License, wie von der Free Software Foundation veröffentlicht, weiterverteilen und/oder modifizieren; entweder gemäß Version 2.1 der Lizenz oder (nach Ihrer Option) jeder späteren Version. Die GNU LGPL ist weniger infektiös als die normale GPL; Code, der von Ihnen hinzugefügt wird, unterliegt nicht der Offenlegungspflicht (wie bei der normalen GPL); außerdem müssen Programme, die diese Bibliothek benutzen, nicht (L)GPL lizensiert sein, sondern können beliebig kommerziell verwertet werden. Die Offenlegung des Sourcecodes bezieht sich bei der LGPL *nur* auf geänderten Bibliothekscode. Diese Bibliothek wird in der Hoffnung weiterverbreitet, daß sie nützlich sein wird, jedoch OHNE IRGENDEINE GARANTIE, auch ohne die implizierte Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Mehr Details finden Sie in der GNU Lesser General Public License. Sie sollten eine Kopie der GNU Lesser General Public License zusammen mit dieser Bibliothek erhalten haben; falls nicht, können Sie sie von http://www.gnu.org/licenses/lgpl.html im Internet herunterladen.