##################################################################################
#          PRFZIFFERBERECHNUNG VON DEUTSCHEN KONTONUMMERN                       #
#                  C-/AWK/Perl/PHP/Ruby-Bibliothek                               #
##################################################################################
#                                                                                #
# Autor             : Michael Plugge <m.plugge@hs-mannheim.de>                   #
# Version           : 6.02                                                       #
# Datum             : 26.11.2017                                                 #
##################################################################################

##################################################################################
###                      13.12.17 Version 6.03                                 ###
##################################################################################

   - einige Testdateien fr perl aktualisiert

##################################################################################
###                      26.11.17 Version 6.02                                 ###
##################################################################################

   - nderung der IBAN-Regel 56 ab Dezember 2017

   - AWK-Port fr gawk 4.2.0, Ausgabe der konto_check Version in gawk

   - einige kleine Bugfixes

##################################################################################
###                      13.08.17 Version 6.01                                 ###
##################################################################################

   - neues Prfzifferverfahren C2c

   - die IBAN-Regel 45 entfllt ab September 2017 (bleibt frei)

   - nderung der IBAN-Regel 56 ab September 2017

##################################################################################
###                      13.06.17 Version 6.00                                 ###
##################################################################################

Die Versionsnummer wurde auf 6.00 erhht, da der CPAN Indexer die Versionen 5.10
und 5.11 nicht indizieren wollte, da bereits eine hhere Version (5.9) existiere...
Somit wurde die Version 5.10 auch von den CPAN Testern nicht geprft. Ansonsten
gibt es keinen Grund fr den Versionssprung.

   - neues Prfzifferverfahren B1c

   - neues Prfzifferverfahren E4

   - die IBAN-Regel 54 entfllt ab Juni 2017 (bleibt frei)

##################################################################################
###                       10.3.17 Version 5.10 (final)                         ###
##################################################################################

   Wieder einmal eine Version mit nur kleinen nderungen:

   - neues Prfzifferverfahren E3

   - kleine Korrektur im Ruby-Port

   - Anpassungen der Testdateien fr Perl


##################################################################################
###                       13.11.16 Version 5.9 (final)                         ###
##################################################################################

   Dies ist wieder eine Version mit kleineren Anpassungen:

   - neues Prfzifferverfahren 74b

   - in der IBAN-Regel 42 werden eine Reihe 10-stellige Konten akzeptiert
   
   - fr die gawk-Version 4.1.4 gibt es ein Patchfile

   - die Perl-Version wurde komplett auf UTF-8 umgestellt, sowie das encoding pragma
     entfernt; die Tests laufen jetzt auch bei neueren Perl-Versionen wieder durch

##################################################################################
###                       22.08.15 Version 5.8 (final)                         ###
##################################################################################

   Diese Version enthlt wieder nur einige kleinere nderungen:

   - neues Prfzifferverfahren 87d

   - es gibt jetzt ein Patchfile fr gawk 4.1.3

   - nderungen in konto_check_mini:
      - die Ausgabe kann als JSON-String formatiert werden (Schalter -j und -J)
      - bessere Erkennung von IBANs und IPIs: dazu werden die ersten Stellen
        des bergebenen Strings analysiert, nicht mehr nur die Lnge. Z.B. liefert
        das folgende Kommando die richtigen Ergebnisse:
         
  ./konto_check_mini  SI56191000000123438 AT611904300234573201 AZ21NABZ00000000137010001944  \
     BE68539007547034 BA391290079401028494 HU42117730161111101800000000 DE89370400440532013000 \
     0900000000DE07550905 54000000000ADSF00345 380000000001234578DW FR1420041010050500013M02606 \
     DO28BAGR00000001212453611324 BG80BNBG96611020345678 

##################################################################################
###                       26.05.15 Version 5.7 (final)                         ###
##################################################################################


   Diese Version ist ein reines Bugfix-Release fr die Prfziffermethode 90; bei
   dieser Methode wurde die Untermethode 90g durch eine irrtmlich nicht entfernte
   Bedingung nicht mehr getestet, so da Konten die unter diese Methode fielen,
   als falsch ausgegeben wurden.

##################################################################################
###                       13.05.15 Version 5.6 (final)                         ###
##################################################################################


   Diese Version enthlt vor allem eine Reihe nderungen an verschiedenen Prfziffermethoden:

   - neues Prfzifferverfahren E2

   - Prfzifferverfahren 08: Die Konten unter 60 000 werden jetzt als richtig (ohne
     Prfzifferberechnung) ausgegeben (siehe dazu den ausfhrlichen Kommentar im
     Quellcode in konto_check.c Zeilen 9906 ff).

   - bei den Prfziffermethoden 28 und 34 wird nicht mehr auf fehlende
     Unterkonten geprft (in der PDF-Datei findet sich nichts dazu)

   - Prfziffermethode 44: es wird ein Sonderfall aus der IBAN-Regel 49 bercksichtigt
     (nheres dazu in konto_check.c Zeilen 11453 ff)

   - der Compiler-Switch USE_IBAN_RULES wurde entfernt; die Verwendung der IBAN-Regeln
     wird jetzt immer vorausgesetzt. In dem Zusammenhang entfllt auch die Funktion
     static int kto_check_blz_x().

   - bei der IBAN-Regel 0 wird nicht mehr auf weggelassene Unterkonten geprft
     (das war eine Krcke aus der Zeit, als die IBAN-Regeln noch nicht so verbreitet
     waren; mittlerweile sind sie fr IBAN-Rechnungen jedoch obligatorisch, und damit
     entfllt auch die Notwendigkeit dafr).

   - in der Funktion iban2bic() wurde die Bundesbank nicht richtig behandelt
     (bei Konten der Bundesbank wurde ein Fehler zurckgegeben)

   - PHP: bei lut_suche_volltext werden (optional) die gefundenen Suchbegriffe
     zurckgegeben

   - einige kleinere nderungen und Korrekturen

   - es gibt jetzt auch eine JSON Online-Version von konto_check; diese ist unter der
     URL https://www.michael-plugge.de/konto_check/api.php zu erreichen. Das Ergebnis
     der Prfung bzw. die angeforderten Informationen wird als JSON kodierter
     String zurckgeliefert.


##################################################################################
###                       01.09.14 Version 5.5 (final)                         ###
##################################################################################

   Diese Version enthlt nur einige kleinere nderungen:

   - Fehlerkorrektur in den Funktionen bic_check() und ci_check() (fehlende
     Stringterminierung)

   - die Funktionen rebuild_blzfile() und pz_aenderungen_enable() sind in allen
     Ports verfgbar

   - fr die Funktionen die einen String zurckgeben, gibt es jetzt auch eine *_id()
     Variante. Diese geben statt eines Strings ein Handle zurck, das mittels
     kc_id2ptr() in einen String umgewandelt werden kann. Die Funktionen sind vor allem
     fr die Windows-DLL gedacht, bei der Strings oft eine Sonderbehandlung brauchen.
     So mu man nur eine Funktion (kc_id2ptr()) in der jeweiligen Umgebung
     lauffhig machen :-)

   - einige kleinere Bugfixes und Schnheitskorrekturen

##################################################################################
###                       02.06.14 Version 5.4 (final)                         ###
##################################################################################

   Diese Version enthlt vor allem einige Bugfixes und Ergnzugen zur Version 5.3,
   sowie eine erste Version des Java-Ports von konto_check. Es sind keine neuen
   Features implementiert.

    - nderungen in PZ-Methode 90 implementiert (bei den IBAN-Regeln gibt es keine
      nderung)

    - Es gibt eine erste Version fr Java; diese luft allerdings nicht immer
      stabil, siehe die Datei 00liesmich.txt im Verzeichnis java/. Momentan wird
      fr java deshalb nur der Quellcode mitgeliefert; fr den Port ist noch swig
      (www.swig.org) sowie ein C-Compiler erforderlich.

    - fr gawk gibt es ein Patchfile fr die Version 4.1.1; dieses wurde direkt
      von der gawk-Version 4.1.0 bernommen

    - Die Funktionen kto_check_retval2*() wurden in eine eigene Datei retvals.h
      ausgelagert; die anderen Quellcodedateien knnen bei Bedarf problemlos nach
      UTF-8 umkodiert werden.

    - Die neuen Funktionen bic_*(), biq_*() und iban_*() sind jetzt in allen Ports
      (auer awk) enthalten

    - vor Speicherallokierungen wurde jeweils ein Typecast eingefgt

    - einige Bugfixes in den Funktionen bic_*() und biq_*()

    - Fehler in RETURN_OK fr die IBAN-Regeln korriegiert (falls eine Bank durch
      die Nachfolge-BLZ ersetzt wurde, wurde der Wert OK_BLZ_KTO_REPLACED statt
      OK_BLZ_REPLACED zurckgegeben

 - die numerischen Funktionen bic_*(), biq_*() und iban_*() geben im Fehlerfall
   den Wert 0 zurck, wie die entsprechenden lut_*() Funktionen

 - Die Rckgabewerte -80 ... -104 (sie wurden nur im mittlerweile obsoleten
   dtaus_test benutzt) sind entfernt

 - die Funktion rebuild_blzfile() bercksichtigt jetzt auch die IBAN-Regeln; so ist
   es z.B. mglich, mit dem Befehl

      ./konto_check -r blz.lut2f blz.rebuild 2

   den zweiten Datensatz der LUT-Datei in eine BLZ-Datei umzuwandeln. Diese
   Datei stimmt bis auf die vier Testkonten (13051172, 16052072, 80053772 und
   80053782) und evl. die Reihenfolge bei einzelnen Banken mit der Datei der
   Deutschen Bundesbank berein. Der letzte Parameter (1 oder 2) gibt die
   Nummer des zu verwendenden Datensatzes an.

   Die Funktion ist aktuell nur in der C-Datei enthalten, wird in der nchsten
   Version jedoch auch in die anderen Ports gebracht.

 - Testroutinen fr Perl auf die neue LUT-Datei angepasst


##################################################################################
###                       04.03.14 Version 5.3 (final)                         ###
##################################################################################

 - neue IBAN-Regel 57 implementiert

 - nderungen in den IBAN-Regeln 54 und 56 implementiert, Klarstellung in
   IBAN-Regel 42 (Deutsche Bundesbank)

 - nderung in der Prfzifferberechnungsmethode 66 implementiert

 - Es ist eine Suche nach den BICs der Hauptstellen implementiert

 - In der LUT-Datei gibt es einen neuen Indexblock ber die BICs der Hauptstellen

 - Die Daten der Bundesbank-Datei die mit den Funktionen lut_name(), lut_ort()...
   abgefragt werden, knnen jetzt auch fr BICS und IBANs abgefragt werden (s.u.)

 - Viele Vergleiche in den IBAN- und BIC-Funktionen die mit strcmp gemacht wurden,
   wurden auf strcasecmp() umgestellt, so da die Gro/Kleinschreibung bei IBANs
   und BICs komplett ignoriert wird.

 - Die  Funktion pz2str() enthlt nur noch die wirklich definierten
   Prfziffermethoden, dafr jedoch auch die Untermethoden

 - Die Ruby-Dokumentation wird jetzt ber yardoc generiert

 - kleinere nderungen im Ruby-Port

 - Fehler in mini1.vb behoben

 - einige kleinere Bugs behoben

 - neue Funktionen (diese sind momentan erst im C- und PHP-Port
   implementiert, in den anderen Sprachen kommen sie sptestens in der nchsten Version):

     - lut_suche_bic_h(): Die Funktion entspricht weitgehend der Funktion lut_suche_bic();
       fr die Nebenstellen wird bei dieser Funktion allerdings der BIC der Hauptstelle
       benutzt.

     - lut_bic_h(char*,int,int*) und lut_bic_hi(int,int,int*): Diese Funktionen geben den
       BIC der jeweiligen Hauptstelle zurck

     - lut_blz_i(int,int): eine vergessene Funktion, analog zu lut_blz() mit Integerparameter
       fr die BLZ

     - bic_info(char*,int,int*,int*): Diese Funktion sucht Banken mit einem bestimmten BIC
       und gibt die gefundene Anzahl sowie den Startindex in den internen Arrays zurck. Sie
       ist fr die Funktionsgruppe biq_* (s.u.) gedacht, falls Werte fr mehrere Filialen
       einer Bank bestimmt werden sollen.

     -  bic_aenderung(char*,int,int,int*), bic_loeschung(), bic_iban_regel(),
        bic_nachfolge_blz(), bic_nr(), bic_pan(), bic_plz(), bic_pz(), bic_bic(), bic_bic_h(),
        bic_name(), bic_name_kurz(), bic_ort():
           
        Die Funktionen dieser Gruppe entsprechen den Funktionen lut_*(), nur
        da statt einer BLZ ein BIC angegeben wird.

     - biq_aenderung(int,int*), biq_loeschung(), biq_iban_regel(), biq_nachfolge_blz(),
        biq_nr(), biq_pan(), biq_plz(), biq_pz(), biq_bic(), biq_bic_h(), biq_name(),
        biq_name_kurz(), biq_ort() (das q steht fr quick):
   
        diese Funktionen entsprechen denen der Gruppe bic_*(); statt des BIC
        wird allerdings ein Index angegeben, der ber die Funktion bic_info()
        bestimmt wird. Der Parameter mode fehlt in dieser Gruppe; er wird auch bei
        bic_info() spezifiziert.

     - iban_aenderung(), iban_loeschung(), iban_iban_regel(), iban_nachfolge_blz(),
       iban_nr(), iban_pan(), iban_plz(), iban_pz(), iban_bic(), iban_bic_h(),
       iban_name(), iban_name_kurz(), iban_ort():

       nochmal eine Gruppe mit gleicher Funktionalitt, nur wird statt eines
       BIC eine IBAN zur Spezifizierung der Banken benutzt. Bei der Banksuche
       per BIC ist das Problem, da oft groe Gruppen einen BIC teilen (s. z.B.
       die Postbank), und die Filialinformation (z.B. Ort o..) komplett
       verlorengeht. Auerdem sind in der Bundesbankdatei nicht alle
       Filialcodes enthalten, so da die bic_*() Funktionen manchmal nur mit
       dem Modus 0 fndig werden (dabei wird im letzten Schritt der Filialteil
       durch XXX ersetzt; Beispiel ist wieder die Postbank).


##################################################################################
###                       11.11.13 Version 5.2 (final)                         ###
##################################################################################

 - neues Prfzifferverfahren E1, gltig ab Dezember 2013

 - IBAN-Regeln 55 und 56 (gltig ab Dezember 2013) implementiert

 - einige nderungen bei IBAN-Regeln eingebaut (meist gltig ab Dezember 2013)

 - neuer Rckgabewert FALSE_UNTERKONTO_ATTACHED falls bei einer IBAN-Regel ein
   Unterkonto angehngt wurde und die Kontoprfung dadurch "falsch" zurckgibt

 - neue Funktion lut_blocks(), die geladene und Blocks mit Fehlerstatus (bei der
   Initialisierung) ausgibt

 - neue Funktion lut_suche_regel(), die Banken mit einer bestimmten IBAN-Regel sucht

 - neue Funktion kto_check_regel() und kto_check_regel_dbg() fr Kontentest
   unter Bercksichtigung der IBAN-Regeln

 - Perl: vergessene Funktion iban2bic() nachgeliefert

 - Ruby: es gibt die Funktionen bank_suche_* auch in der Bibliothek
   KontoCheck::, nicht mehr nur in KontoCheckRaw::

 - bei der Initialisierung wird die Fehlermeldung LUT2_OK_WITHOUT_IBAN_RULES
   nicht mehr ausgegeben; stattdessen wird ein Fehlen des Blocks mit den IBAN-Regeln
   als Fehler klassifiziert und LUT2_PARTIAL_OK zurckgegeben.

 - blz.lut2f aus dem Repository gelscht, da im Makefile Abhngigkeiten von
   konto_check.c stehen und es sonst regelmig aktualisiert wrde - eine aktuelle
   Version findet sich bei der stabilen Version.

 - zum Rckgabewert -38 (nicht alle Blocks geladen) gibt es noch zwei
   Zusatzvarianten: LUT2_NOT_YET_VALID_PARTIAL_OK und LUT2_NO_LONGER_VALID_PARTIAL_OK

 - Die Flessa Korrektur kann jetzt entfallen (die entsprechenden Banken haben
   jetzt das Lschkennzeichen)

 - verschiedene kleinere Bugs behoben

##################################################################################
###                       13.09.13 Version 5.1 (final)                         ###
##################################################################################

 - konto_check ist jetzt auch in das Heise Softwareverzeichnis aufgenommen:
   http://www.heise.de/download/konto-check-1191953.html

 - es ist jetzt die Datei iban_gen.c enthalten, mit der eine einfache Batch-
   Konvertierung von BLZ/Konto nach IBAN und BIC mglich ist. Die Ausgabe kann
   sehr flexibel ber einen Formatstring oder vordefinierte Formate erfolgen. In
   der Windows-Distribution ist auch eine entsprechende Programmdatei enthalten.

   In der neuen Version wird in iban_gen auch die Suche nach Banken untersttzt.

 - Die IBAN-Regel 20 (Deutsche Bank) wurde aktualisiert auf die Version 1.6
   (Bundesbank-Email vom 30.8.2013). Die neue Version dieser Regel wird zum
   9. Dezember in den offiziellen IBAN-Regeln verffentlicht; die Bundesbank
   hat den Text jedoch schon am 28. August verffentlicht, mit der Bitte, sie
   mglichst schon zum 9. September einzusetzen. Der Best Guess Ansatz mit dem
   Fehlercode 51 (bzw. IBAN_AMBIGUOUS_KTO in konto_check) wird entfernt und
   durch Verfahren zur Ermittlung eindeutiger IBANs ersetzt.

 - neue Funktion ci_check() fr Test von Glubiger-Identifikationsnummern
   (Creditor Identifier, CI). Die Funktion wurde weitgehend von iban_check()
   kopiert, hat aber einige Besonderheiten.

 - bei IBAN-Berechnungen wird getestet, ob alle notwendigen LUT-Blocks geladen
   sind; falls nicht, werden fehlende Daten per inkrementeller Initialisierung
   nachgeladen (mittels der Funktion iban_init())

 - Bercksichtigung der IBAN-Regeln bei iban2bic() (wichtig z.B. bei Regel 5 oder
   falsch erzeugten IBANs). Falls in einer IBAN-Regel vorgegeben wird, da kein
   Test der Bankverbindung erfolgen soll, wird das in iban_check() und iban2bic()
   jetzt auch bercksichtigt

 - in bestimmten Fehlerfllen (Konto ungltig) lieferte iban_bic_gen() keinen BIC;
   das ist jetzt behoben

 - Unterkonten knnen nur hinzugefgt werden, falls die beiden ersten Stellen
   der Kontonummer '00' sind (das wurde nicht immer geprft)

 - Korrekturen in den Prfziffermethoden 13b, 63, C7

 - kleine Korrektur in IBAN-Regel 5

 - einige kleinere bug fixes und etwas Kosmetik im C-Code


##################################################################################
###                       02.08.13 Version 5.0 (final)                         ###
##################################################################################

 - nderungen der Pruefzifferberechnungsmethoden 57 und 95 (gltig ab 9.9.2013)
   implementiert. Die nderungen werden zum Gltigkeitsdatum automatisch aktiviert.

 - nderungen der IBAN-Regeln zum 9. September 2013 implementiert:
   IBAN-Regeln 05, 12, 13, 20, 21, 31, 33, 35, 40 aktualisiert auf Version 1
   IBAN-Regeln 48 - 54 neu implementiert

 - bei iban_gen() wird unterschieden, ob ein Konto ersetzt wurde (z.B. Spendenkonten),
   oder ob nur ein Unterkonto angehngt wurde. Der Rckgabewert OK_UNTERKONTO_ATTACHED
   ist jetzt eine positive Statusmeldung, keine Fehlermeldung mehr.

 - neue "schwarze Liste" fr IBANs (in der Datei iban.blacklist; nhere Info in der Datei)

 - einige kleinere nderungen in den IBAN-Regeln bercksichtigt, die von der
   Deutschen Bundesbank per Mail verbreitet wurden (sie werden erst im Dezember
   in die offizielle Version aufgenommen, die Institute bitten jedoch darum
   sie schon zu bercksichtigen; betrifft die Regeln 10, 15 und 43).

 - berprfung in iban_check(), ob die bergebene IBAN mit der selbst erzeugten
   bereinstimmt, oder ob evl. ein Unterkonto nicht angehngt wurde oder eine
   IBAN-Regel nicht beachtet wurde; so werden falsch erzeugte IBANs erkannt

 - Alle Leerzeichen werden vor der Verarbeitung aus der IBAN entfernt
   (Funktionen iban2bic() sowie iban_check() )

 - Ruby: die Funktion version() akzeptiert einen optionalen Integer-Parameter, mit
   dem verschiedene Infos ber die konto_check-Bibliothek erfragt werden knnen

 - Ruby ist jetzt wieder mit im SVN

 - Die Funktion iban_gen() in Ruby, PHP und Perl gibt nun auch die benutzte IBAN-Regel zurck

 - PHP: einige Standardwerte fr PHP-Generierung wurden gendert:
      * Beschreibung der Prfziffermethoden werden defaultmig eingebunden
      * symbolische Rckgabewerte werden defaultmig definiert
      * BAV Kompatibilitt ist standardmig aus und hat noch einen zustzlichen
        Schalter in konto_check.h (die Funktionalitt wird aktuell nicht benutzt)).
      * Auerdem in konto_check.ini:
            konto_check.init_default_level=9    (statt 5)
            konto_check.lut_path1=.             (alt: /etc)
            konto_check.lut_path2=/etc          (alt: .)

 - Info zu IBAN-Regeln in den Info-Teil der LUT-Datei bernommen

 - Fehler in IBAN-Regel 5 (Commerzbank) bei Kontenkreis 998000000-999499999 berichtigt

 - Fehler in IBAN-Regel 46 berichtigt

 - Fehler in Prfziffermethode C7 berichtigt: 10-stellige Konten sind ungltig.
   Der Fehler trat nur auf, wenn die Untermethoden C7a oder C7b direkt
   aufgerufen wurden (praktisch vor allem bei IBAN-Generierung).

 - Behandlung von Unterkonten in Methode C7 berarbeitet

 - in Prfziffermethode 16 wird beim Divisionsrest 1 und unterschiedlichen
   Ziffern an der 9. und 10. Stelle der Wert FALSE zurckgegeben (dies ist die
   Rckgabe des Bank Account Validators (BAV), sowie des SEPA IBAN Konverters
   der Sparkassen als auch des VR Bank IBAN Konverters.

 - Bug fix in lut_bic(); die Funktion lieferte manchmal eine access violation

 - Die Funktion lut_bic() liefert wieder fr Zweigstellen deren BIC, nicht den
   der Hauptstelle

 - Die comdirect bank behlt ihren BIC aus der Bundesbank-Datei

 - Das Lschflag 'D' bei lut_aenderung() wird bercksichtigt; BLZs mit diesem
   Flag werden nicht mehr bearbeitet.


##################################################################################
###                       07.06.13 Version 4.6                                 ###
##################################################################################

 - IBAN-Regeln implementiert und getestet
 - nderungen in Prfziffermethode 51 und 84 (gltig ab 3.6.2013)
 - Kommentar zu Prfziffermethode E0 angepasst (Klarstellung)
 - neue Funktion lut_iban_regel()) zur Bestimmung der IBAN-Regel fr eine Bankverbindung
 - neue Funktion iban_bic_gen() zur Bestimmung einer IBAN sowie BIC und benutzter
   BLZ/Kontonummer
 - neue Funktion get_kto_check_version_x() mit etwas mehr Infos
 - kleiner Bugfix in main.c: bei der Anzeige der Bankdaten in der Konsole wurde
   bei Prfziffermethoden ab B0 die erste Stelle der Prfziffermethode immer
   falsch ausgegeben.


##################################################################################
###                       28.02.13 Version 4.5                                 ###
##################################################################################

      Dies ist wieder eine reine Bugfix-Version fr Perl, die zwei Fehler in
      den Perl-Tests korrigiert (eine Bank wurde umbenannt, eine andere gibt es
      nicht mehr).

##################################################################################
###                       02.02.13 Version 4.4                                 ###
##################################################################################

      - neue Prfziffermethode E0
      - nderungen der PZ-Methoden C6 und D1 implementiert
      - Bug fix in Methode C6

##################################################################################
###                       13.11.12 Version 4.3                                 ###
##################################################################################

      dies ist eine reine Bugfix-Version fr Perl, die eine vergessene Datei
      (t/blz.txt) nachliefert sowie (hoffentlich) endlich den Fehler bei
      test::pod beseitigt.

##################################################################################
###                       24.10.12 Version 4.2                                 ###
##################################################################################

      - encoding error in KontoCheck.pm gefixt

      - einige Speicherprobleme gefixt

      - IBAN Generierung der Flessa Bank korrigiert (es wird fr alle BLZs der
        Flessa-Bank dieselbe BLZ benutzt)

      - in Perl gibt es jetzt die Funktion lut_keine_iban_berechnung() sowie
        eine optionale Variable in generate_lut2(), um eine IBAN-Blacklist an
        eine LUT-Datei anzuhngen

      - Perl: neue Testdatei generate_lut.t zum Test der Generierung einer LUT-Datei

      - Perl und Ruby: Alle Suchroutinen in KontoCheckRaw haben jetzt die Parameter
        sort (Ausgabe nach BLZ sortieren) und uniq (fr jede Bank nur eine
        Zweigstelle ausgeben); auch die Ruby-Funktion KontoCheck::suche()
        untersttzt die beiden Parameter.

     - diverse kleinere nderungen

##################################################################################
###                       30.05.12 Version 4.1                                 ###
##################################################################################

Die Version 4.1 enthlt die neuen Suchfunktionen lut_suche_volltext()
und lut_suche_multiple() sowie einige kleinere nderungen.

 - Die neue Funktion lut_suche_volltext() realisiert eine Volltextsuche in den
   Feldern Bankname, Kurzname und Ort. Alle in diesen drei Feldern vorkommenden
   Worte werden indiziert und in zwei Blocks der LUT-Datei geschrieben. Die
   Volltextsuche sucht dann nach jeweils einem Wort, das in einem der drei Felder
   vorkommt.
   
 - Eine weitere neue Funktion ist lut_suche_multiple(); mit dieser Funktion ist
   es mglich, Banken zu suchen, die mehrere Kriterien erfllen. Es knnen bis zu
   26 Teilsuchen definiert werden, die dann beliebig miteinander verknpft werden
   knnen. Als Verknpfung sind "Addition" (+), "Subtraktion" (-) und
   "Multiplikation" (*) definiert. 

   Die Funktion lut_suche_multiple() sucht alle Banken, die mehreren Kriterien 
   entsprechen. Dabei knnen bis zu 26 Teilsuchen definiert werden, die beliebig
   miteinander verknpft werden knnen (additiv, subtraktiv und multiplikativ).
   Ein kleines Readme zu den Suchfunktionen und ihren Parametern wird bald folgen.

 - neue Prfziffermethode D9 implementiert (gltig ab 4.6.2012)

 - in PHP 5.4 wurde das API gendert; kleine Anpassung notwendig

 - neu im AWK-Port sind die Funktionen iban_gen(), iban_check(), ipi_gen() und ipi_check().

 - die IBAN-Lnge wird fr die verschiedenen Lnder getestet

 - diverse kleinere Bugfixes

 - neues "mini" mini.vb mit Visual Basic .NET Interface

##################################################################################
###                       26.07.11 Version 4.0                                 ###
##################################################################################

Die Version 4.0 enthlt einige wesentliche nderungen in der Suche nach Banken
sowie in der Kodierung der Ausgabe. Auerdem wurde in der Funktion iban_gen()
noch eine Prfung hinzugefgt, ob die Bank einer Selbstberechnung der IBAN
widersprochen hat. Hier die wichtigsten nderungen im Einzelnen:

 - Es gibt eine neue Funktion kto_check_encoding(), mit der die Kodierung der
   Ausgabe (sowohl fr Fehlermeldungen als auch die Felder der LUT-Datei
   (Bankname, Kurzname, Ort) festgelegt werden kann. Die Funktion
   kto_check_retval2txt() gibt die Ausgabe entsprechend der gewhlten Kodierung
   aus; eine neue Funktion (kto_check_retval2iso()) bernimmt die Rolle der
   alten Funktion, die immer die Kodierung ISO-8859-1 benutzte.

 - Die Sortierungsroutinen wurden umgeschrieben, so da Umlaute in allen
   Kodierungen erkannt werden. Auerdem knnen die Suchbegriffe jetzt auch in
   einer beliebigen Kodierung angegeben werden, sogar mit HTML Entities. Alle
   Zeichen werden auf eine interne Reprsentation mit 12 Bit umgesetzt; dabei
   werden Gro- und Kleinbuchstaben gleich behandelt und Umlaute sowie
   Buchstaben mit Akzenten als eigene Zeichen direkt nach dem entsprechenden
   Grundbuchstaben einsortiert. Dies erscheint mir konsistenter als die alte
   Version, bei denen diese Zeichen mit den Grundbuchstaben einfach gleichgesetzt
   wurden, und auch besser als die Version, z.B Umlaute unter <Grundbuchstabe+e>
   zu sortieren.

 - In der alten Version wurde beim ersten Aufruf einer Suchroutine der
   entsprechende Suchindex jeweils neu generiert. Die Suchindizes sind nun als
   LUT-Blocks gespeichert und knnen sehr schnell eingelesen werden. Die
   bentigte Zeit fr den ersten Suchvorgang (in PHP) reduziert bei meinem
   Laptop dadurch von ca. 35ms (mit Generierung des Index) auf weniger als 1ms
   (mit vorberechnetem Index-Block aus der LUT-Datei). Alle weiteren
   Suchvorgnge laufen dann sehr schnell ab (sie bentigen etwa 40 Mikrosekunden).
   
   In der SVN-Version 53 ist noch ein Fehler bei der Generierung der
   Indexblocks enthalten; der Index fr die Kurzbezeichnung der Institute wird
   beim kombinierten Block fr Namen und Kurznamen nicht richtig erzeugt. In
   der aktuellen Version wurde der Fehler berichtigt; der Indexblock der alten
   LUT-Datei vom 9.7.2011 auf SF.net war allerdings auch fehlerhaft; die Datei
   sollte durch die aktuelle Version ersetzt werden.

 - Falls dem Suchmuster bei Stringsuche ein ! vorangestellt wird, wird eine
   genaue Suche durchgefhrt. Es werden nur die Ergebnisse zurckgeliefert,
   die genau auf das Suchmuster passen.

 - Aufgrund der zustzlichen Indexblocks (je Set bis zu sechs zustzliche
   Blocks) wurde die minimale Slotzahl auf 40 erhht.

 - Fr den Parameter set in der Funktion in generate_lut2() sind jetzt auch die
   Werte 10, 11 und 12 mglich. Sie entsprechen den Werten 0, 1 und 2 des
   normalen Aufrufs; es werden jedoch keine Indexblocks generiert.

 - Es gibt eine neue Funktion current_lutfile_name(); diese liefert den Namen
   und das fr die Initialisierung benutzte set zurck. Sie wurde zunchst fr
   die inkrementelle Initialisierung der Indexblocks bentigt, ist aber auch
   fr andere Aufgaben ntzlich.

 - Die Funktion iban_gen() wertet jetzt eine Liste von Banken aus, die der
   IBAN-Berechnung nicht zugestimmt haben. Die Liste ist die Datei CONFIG.INI
   des SEPA Account Converters; sie kann mit der Funktion lut_keine_iban_berechnung() 
   direkt in eine LUT-Datei geschrieben werden. Der entsprechende Block wird bei der
   Initialisierung gelesen und von iban_gen() ausgewertet; falls er nicht in der
   LUT-Datei enthalten ist, erzeugt das allerdings auch keine Warnung.

   Alle Banken der Liste erzeugen eine Statusmeldung mit dem Wert
   OK_UNTERKONTO_ATTACHED, OK_UNTERKONTO_POSSIBLE oder OK_UNTERKONTO_GIVEN.
   Falls einer dieser Stauswerte zurckgegeben wird, ist somit immer Vorsicht
   geboten; der generierte IBAN sollte direkt bei dem zugehrigen Institut
   berprft werden.
   
   Weblinks:
   
        https://www.sparkasse-rhein-neckar-nord.de/pdf/content/sepa/kurzanleitung.pdf
        https://www.sparkasse-rhein-neckar-nord.de/firmenkunden/internationales_geschaeft/sepa/vorteile/index.php
        https://www.sparkasse-rhein-neckar-nord.de/firmenkunden/internationales_geschaeft/sepa/vorteile/sepa_account_converter.msi

 - Im AWK-Port wurde die Funktion iban_gen() hinzugefgt

 - es wurde der AWK-Port fr awk 4.0.0 implementiert. Diese AWK-Version enthlt
   ein komplett neues API; es ist allerdings leichter zu lesen als das alte.

 - Es gibt die Beispielsdatei mini.cs fr C#.net, sowie eine Interface-Datei fr C#

 - Die nderungen der Prfzifferberechnungsmethoden B6 und D1 (gltig ab 5.9.11) sind implementiert

 - diverse kleinere nderungen und Bugfixes


##################################################################################
###                       13.04.11 Version 3.6                                 ###
##################################################################################

 - neue Prfziffermethode D7 und D8 implementiert (gltig ab 6.6.2011)

 - nderungen in den Prfziffermethoden B8, C6 und D4 implementiert (gltig ab 6.6.2011)

 - Bugfix in Methode D6 (falls sich in D6a fr die Prfziffer 10 ergab, wurde die
   Meldung "ungltiges Konto" zurckgegeben, statt mit D6b weiterzutesten).

 - diverse kleinere Bugfixes (viele bedingt durch Compiler-Warnungen im Ruby-Port)

##################################################################################
###                       06.01.11 Version 3.5                                 ###
##################################################################################

 - neue Prfziffermethode D6 implementiert (gltig ab 7.3.2011)

 - neue Berechnung fr Prfziffermethode D1 (gltig ab 7.3.2011)

 - die Variablen lut_set_* enthalten jetzt explizit auch BLZ und Prfziffer

 - Fehler in den *BIC-Routinen beseitigt, der unter NetBSD/64 Bit und
   Dragonfly/64Bit zum Absturz fhrte

 - Fix fr Compilerproblem unter Solaris

 - fr generate_lut2() wird jetzt eine minimale Anzahl Slots vorgegeben; falls
   der angegebene Wert kleiner ist, wird er korrigiert

 - kleine nderungen im Perl-Port:
      - einige Testkonten aktualisiert, neue Testwerte eingefgt
      - etwas zustzliche POD-Dokumentation fr generate_lut2() in KontoCheck.pm


##################################################################################
###                       13.11.10 Version 3.4                                 ###
##################################################################################

 - neue Prfziffermethode D5 implementiert (gltig ab Dezember 2010)

 - optional knnen zustzlich zu gzip verschiedene andere Kompressions-
   bibliotheken (bzip2, lzo, lzma) eingebunden werden; Auswahl beim
   Generieren der LUT-Datei ber die Funktion set_default_compression().
   Die benutzte Kompressionsmethode wird in den Klartext-Header der LUT-
   Datei geschrieben und bei der Initialisierung gelesen.

   Die Ergebnisse der Tests zeigen eine klare berlegenheit von gzip in
   der Gesamtwertung; daher wird es auch das Standardverfahren bleiben.
   Ausfhrliche Testergebnisse finden sich in der Datei
   http://kontocheck.svn.sourceforge.net/viewvc/kontocheck/trunk/konto_check/0test_compression.txt?revision=42&view=markup

 - kleinere Korrekturen in der Initialisierung

 - Code etwas aufgerumt, check_malloc Routinen herausgenommen

 - neue Option -vx (in main.c) und Makro VERBOSE_DEBUG fr erweiterte Debug-Routinen
   bei verzwickten Problemen


##################################################################################
###                       20.06.10 Version 3.3                                 ###
##################################################################################

Die Version 3.3 enthlt einige Bugfixes fr die Suchfunktionen; auf 64 Bit Rechnern
waren diese komplett unbrauchbar und ergaben keine brauchbaren Resultate. Der Fehler
wurde durch die CPAN Tests entdeckt; er ist jetzt gefixt.

##################################################################################
###                       13.06.10 Version 3.2                                 ###
##################################################################################

Die Version 3.2 enthlt vor allem Korrekturen und Verbesserungen fr den Perl-Port;
es sind allerdings auch einige allgemeine Bugfixes und nderungen enthalten:

 - CHECK_MALLOC wird nun defaultmig als 0 definiert (macht u.U. Probleme)

 - neue Funktion lut_blz(), die eine Bankleitzahl auf Gltigkeit testet

 - neue Funktion pz2str() zur Umwandlung einer numerischen Prfziffermethode in die
   String-Version (2-stellig alphanumerisch)

 - neue Funktion lut_dir_dump_str(), die das Inhaltsverzeichnis einer LUT-Datei
   in einen String schreibt

 - php/test2.php: Umstellung auf neues API

 - konto_check_mini: kein Programmabbruch mehr, falls die LUT-Datei
   nicht alle Blocks enthlt

 - Perl:
      - Suchroutinen fr Perl komplett neu geschrieben und getestet

      - neue Funktionen lut_*1(), die *immer* in skalarem Kontext arbeiten

      - Funktionen retval2txt_*(ret) hinzugefgt (standen im POD, nur nicht im
        Programmcode)

      - lut_info(): zustzliche Rckgabevariable $lut_dir, in der das
        Verzeichnis der LUT-Datei zurckgegeben wird

      - fr die Speicherfreigabe in lut_info() wird die Funktion kc_free() benutzt,
        da free() in strawberry perl umdefiniert wird und zum Absturz fhrt.

      - Makefile.PL komplett umgeschrieben; es funktioniert nun fr Windows, und sollte
        eine vorhandene (oder nicht vorhandene) zlib besser erkennen

      - neue Testdateien t/lut_info.t und t/lut_suche.t


##################################################################################
###                       22.05.10 Version 3.1                                 ###
##################################################################################

Diese Version enthlt eine Reihe kleinerer Korrekturen, die nderungen in den
Berechnungsmethoden C6 und D1, die zum 7.6.10 gltig werden sowie die neu
definierte Prfziffermethode D4.

 - Das Makefile benutzt jetzt die beiden BLZ-Dateien blz_20091207.txt und
   blz_20100308.txt.

 - falls in einer LUT-Datei beiden Datenstze ungltig sind, wird nun der
   neuere genommen

 - defaultmig werden keine alten LUT-Dateien (Version 1.0/1.1) mehr erzeugt;
   dieses Verhalten lt sich ber den Compilerschalter GENERATE_OLD_LUTFILE
   in konto_check.h steuern)

 - Die Funktion iban_gen() berprft das BLZ/Konto Paar auf auf mglicherweise
   weggelassene Unterkonten. Falls dies der Fall ist (es kann in den Methoden
   13, 26, 50, 63, 76 sowie C7 auftreten), wird ein entsprechender Rckgabewert
   generiert:

      OK_UNTERKONTO_ATTACHED:
         Warnung: es wurde ein (weggelassenes) Unterkonto angehngt
      OK_UNTERKONTO_POSSIBLE:
         Die Kontonummer scheint richtig zu sein, knnte jedoch
         auch ein (nicht angegebenes) Unterkonto enthalten
      OK_UNTERKONTO_GIVEN:
         wahrscheinlich ok; es wurde ein Unterkonto gefunden

   Bei einem Rckgabewert OK sollte die generierte IBAN in Ordnung sein; bei
   einem der obigen Werte ist jedoch Vorsicht angebracht. Die Funktion ist
   jetzt auch unter PHP verfgbar.

 - PHP: neue config-Option --enable-symbolic-retvals. Mit der Option wird
   gesteuert, ob fr PHP auch symbolische Rckgabewerte (als Konstanten)
   definiert werden; die Voreinstellung ist nein (alte Voreinstellung war ja).

   In den letzten Versionen wurde FALSE dabei auch definiert (als int(0)); diese
   Definition wurde jetzt herausgenommen, um die Kollision mit FALSE als bool(0)
   zu vermeiden; ansonsten funktionieren Tests wie $ret===FALSE nicht mehr (ein
   Test mit $ret===false wurde nicht tangiert).

 - neue PHP-Funktion kto_check_retval(). Diese Funktion gibt ein assoziatives
   Array zurck, bei dem die  - neue PHP-Funktion kto_check_retval(). Diese
   Funktion gibt ein assoziatives Array zurck, das als Index die Makronamen aus
   konto_check.h benutzt und den entsprechenden numerischen Wert zurckgibt. Das
   Array kann gut benutzt werden, wenn man die Makronamen nicht als globale
   Konstante deklarieren will (Option --enable-symbolic_retvals beim
   configure-Aufruf).

 - die erste ID fr User-Blocks wurde von 1000 auf 500 herabgesetzt; 501 wird
   gleich fr den Default-Block (s.u.) benutzt. Einige kleinere Fehler in der
   Verarbeitung von User-Blocks wurden noch beseitigt.

 - neue Funktionen zum Lesen und Schreiben von Default-Blocks in der LUT-Datei.
   Diese Funktionen knnen benutzerspezifische Daten in die LUT-Datei schreiben
   (in einem eigenen Block mit der Defaultkennung 501; es sind jedoch auch andere
   Kennungen mglich). Die Daten werden als Schlssel/Daten-Paar gespeichert.
   Fr den Schlssel ist ein C-String erlaubt, whrend in den Daten auch binre
   Daten mit eingebetteten ASCII-NULL-Zeichen erlaubt sind. Die folgenden
   Funktionen sind definiert:

      kto_check_init_default(char *lut_name,int block_id)
            Default-Block aus der LUT-Datei einlesen

      kto_check_default_keys(char ***keys,int *cnt)
            die Funktion gibt ein Array mit den aktuellen Schlsseln zurck

      kto_check_set_default(char *key,char *val)
            einen Wert (C-String) in der aktuellen Tabelle eintragen. Bei dieser
            Funktion mu die Stringlnge nicht angegeben werden. Achtung - der
            Block wird bei dieser Funktion noch nicht gespeichert, sondern
            verbleibt nur im Speicher!!! Die Funktion initialisiert bei Bedarf die
            notwendigen Variablen; es ist keine zustzliche Initialisierung
            notwendig (wie auch bei der nchsten Funktion).

      kto_check_set_default_bin(char *key,char *val,int size)
            einen Binrwert in die aktuelle Tabelle eintragen

      kto_check_get_default(char *key,char **val,int *size)
            einen Wert aus der aktuellen Tabelle lesen.

      kto_check_write_default(char *lutfile,int block_id)
            die aktuelle Tabelle in die LUT-Datei schreiben.

 - Es gibt einige zustzliche Rckgabewerte fr den Test von DTAUS-Dateien; der
   Code dazu ist allerdings noch nicht enthalten (er liegt noch in einer separaten
   Datei).

 - Im Makefile wurde die Compiler-Option -Wall (alle Warnungen einschalten)
   aktiviert; dazu muten noch einige kleinere kosmetische Korrekturen am Code
   vorgenommen werden.

##################################################################################
###                       24.10.09 Version 3.0                                 ###
##################################################################################

Diese Version enthlt vor allem Korrekturen; die Speicherprobleme die teilweise
noch in der Version 2.99 auftraten, sind jetzt behoben. Die Version enthlt
noch einige Debug-Routinen fr die malloc() Aufrufe etc.; in einer der nchsten
Versionen werden sie voraussichtlich wieder entfernt.

Seit der Version 2.99 sind einige neue Suchfunktionen implementiert; sie sind
allerdings noch nicht dokumentiert. Hier eine kurze Liste der Funktionen (sie
sind auch unter PHP verfgbar):

      lut_suche_bic()
      lut_suche_namen()
      lut_suche_namen_kurz()
      lut_suche_ort()
      lut_suche_blz()
      lut_suche_pz()
      lut_suche_plz()

##################################################################################
###                       13.09.09 Version 2.99                                ###
##################################################################################

Diese Version enthlt einige kritische Bugfixes; es wurde in der C Bibliothek
nicht aller allokierter Speicher freigegeben, was unter PHP zu erheblichen
Problemen fhrte. Mittels valgrind und duma wurden die fehlerhaften
Allokierungen aufgesprt und korrigiert; nun werden alle Speicherblocks auch
wieder freigegeben.

Es wurden auerdem noch einige neue Funktionen zum Suchen von Bankleitzahlen
implementiert; eine Beschreibung dieser Funktionen steht allerdings noch aus.

##################################################################################
###                       09.05.09 Version 2.98                                ###
##################################################################################

Diese Version enthlt viele Korrekturen fr PHP; auerdem wird die Perl-Version
jetzt auf praktisch allen getesteten Plattform- und Betriebssystemvarianten
fehlerfrei bersetzt und getestet:
http://matrix.cpantesters.org/?dist=Business-KontoCheck;reports=1

Wichtige nderungen im Einzelnen:

 - PHP: neue Funktionen generate_lut2(), read_lut_block(),
        write_lut_block(), copy_lutfile()

 - PHP: Funktion lut_info() erweitert fr Infos ber Interna der LUT-Datei

 - PHP: diverse Speicherlecks bei Funktionen mit Rckgabevariablen by reference
        beseitigt

 - PHP: Suchliste fr Verzeichnisse und Dateinamen von LUT-Dateien

 - falls bei einer LUT-Datei ein Block gleichen Typs geschrieben wird, kann der
   gleiche Verzeichnis-Slot dafr benutzt werden (Compiler-Switch)

 - Korrekturen in den Methoden 16, 63, 74, 79, C7

 - Diverse kleinere nderungen und Bugfixes

##################################################################################
###                       08.03.09 Version 2.97                                ###
##################################################################################

 - kleine Korrekturen in den Methoden 16, 58, 63 und 127

 - Berechnung von Kontolnge korrigiert (bei fhrenden Nullen - die wurden nicht
   bercksichtigt, sollten es aber doch, wie im Leben ;-)

 - Die PHP-Version 2.96 enthielt einen kleinen aber fatalen Fehler, der u.U. den
   PHP Interpreter abstrzen lie (und damit natrlich auch den entsprechenden
   Server- Prozess); daher wurde die Version auf SF.net gelscht.

##################################################################################
###                       02.03.09 Version 2.96                                ###
##################################################################################

 - Der PHP-Port wurde sehr stark berarbeitet; es gibt jetzt ein neues PHP API,
   das alte ist allerdings ebenfalls noch verfgbar.

 - Neue Dokumentation in 00liesmich.pdf (noch nicht komplett, aber ein Anfang
   ist gemacht :-) )

 - Diverse kleinere nderungen und Bugfixes

##################################################################################
###                       13.01.09 Version 2.95                                ###
##################################################################################

 - Diese Version behebt einen Fehler in den Testdateien der Perl-Version. In der
   neuen LUT-Datei war eine Bank, die in der alten LUT-Datei noch vorhanden war,
   gelscht worden; dies fhrte zu einem FAIL bei allen automatischen Tests. Der
   Code selbst ist unverndert.

##################################################################################
###                       13.01.09 Version 2.94                                ###
##################################################################################

 - Diese Version behebt einen Fehler in der Funktion read_lut_block_int(), der
   auf 64 Bit-Rechnern die Initialisierung fehlschlagen lie. Die Variable len
   war als UINT4 (4 Byte Integer) deklariert; sie wurde **by reference** an die
   Funktion uncompress() (aus zlib) bergeben, die an der Stelle allerdings eine
   long- Variable (auf 64 Bit Maschinen blicherweise mit 8 Byte) erwartete.
   Dadurch schlug die Initialisierung auf diesen Maschinen blicherweise fehl,
   whrend sie auf 32 Bit Rechnern keine Probleme machte.

 - Prfziffermethoden D2 und D3 implementiert

 - fr die Prfziffermethode C6 neue Berechnungsmethode (gltig ab 9.3.2009)
   implementiert, in Methode 28 ein

 - Kleiner Fehler in Methode 28 beseitigt (falls eine Unterkontonummer
   weggelassen wurde (=> 8stellige Kontonummer), ist der Test nochmals mit der
   gedachten Unterkontonummer 00 zu wiederholen.

 - Der Code wurde insgesamt noch etwas berarbeitet, um diverse
   Compiler-Warnungen (bzw. -Fehler) zu beseitigen.

##################################################################################
###                       08.09.08 Version 2.93                                ###
##################################################################################

Diese Version ist ein Bugfix-Release, das einen Fehler in der Funktion
get_lut_info2() behebt. Fr den verwendeten Ausgabebuffer wurde ein realloc()
gemacht, um die Buffergre auf den tatschlich verwendeten Wert zu reduzieren;
es wurde allerdings die alte Adresse zurckgegeben. Auf Systemen, bei denen das
realloc nur den Speicherbereich ver- keinerte, trat kein Fehler auf; bei
anderen wurde der Buffer jedoch verschoben, und wenn das Anwender- programm den
Buffer dann freigeben wollte, strzte es natrlich ab.

##################################################################################
###                       23.08.08 Version 2.92                                ###
##################################################################################

Diese Version ist das zweite Beta-Release fr die Version 3.0. Sie enthlt die
Korrekturen der Version 2.7 sowie noch eine Reihe kleinerer Bugfixes etc. Die
folgenden nderungen finden sich nur in 2.92:

 - Es gibt ein zweitesa Demo-Programm konto_check_mini, das die zu prfenden
   Konto/BLZ-Kombinationen von der Kommandozeile liest; auerdem werden noch
   Tests von IBAN und Strukturiertem Verwendungszweck untersttzt.

 - Die main-Routine im Beispielsprogramm wurde etwas erweitert; falls keine
   Datei angegeben wird, geht das Programm in einen interaktiven Modus, in dem
   interaktiv diverse Tests gemacht werden knnen sowie die LUT-Datei neu
   geladen werden kann; auerdem kann auch das benutzte Systemdatum gesetzt
   werden, um einen Datumswechsel zu simulieren. Hilfe gibt es in dem Batchmodus
   mit dem Kommando -h.

 - Fr die LUT-Datei knnen jetzt mehrere Suchpfade angegeben werden, die
   nacheinander durchsucht werden; auerdem sind mehrere Default-Dateinamen
   mglich. Falls bei der Initialisierung kein Dateiname fr die LUT-Datei
   angegeben wird, werden in allen Default- Verzeichnissen die Defaultnamen
   probiert; falls eine passende Datei gefunden wird, wird diese genommen. Die
   Default-Namen und -Pfade knnen in konto_check.h definiert werden (es sind
   dieMakros DEFAULT_LUT_NAME und  DEFAULT_LUT_PATH).

 - Die Funktion lut_init() ist jetzt nicht mehr eine Kopie der Funktion
   kto_check_init(), sondern eine eigene Funktion mit vereinfachtem
   Aufrufinterface, die i.A. eine inkrementelle Initialisierung macht (nheres
   in konto_check.c).

 - Es gibt eine neue Funktion get_lut_id(), die die Datei-ID einer LUT-Datei
   liefert. Diese Funktion wird vor allem fr inkrementelle Initialisierung
   bentigt.

 - Es gibt eine neue Funktion kto_check_retval2utf8(), die das Ergebnis einer
   Rckgabe in einen UTF-8 kodierten String umwandelt.

 - In einigen Prfziffermethoden der Debugversion wurde retvals->pz nicht
   gesetzt; korrigiert.

 - Einige Beschreibungen der Prfziffermethoden wurden leicht angepasst; alte
   Versionsbeschreibungen gelscht.

 - Die Funktion rebuild_blzfile() funktioniert jetzt (wieder); sie dient als
   Hrtetest fr die LUT2 Routinen, da eine BLZ-Datei der Bundesbank aus einer
   LUT-Datei wiederhergestellt wird.

 - Die Testroutinen der Perl-Version wurden komplett neu geschrieben, um aus den
   automatisierten Tests der CPAN-Tester bessere Rckschlsse auf Programm-
   fehler zu erhalten.

 - Die Perl-Version enthlt eine abgespeckte Version der ZLIB, damit bei Fehlen
   des zlib-development Pakets die Kompilierung nicht mit einem Fehler abbricht
   (das Vorhandensein wird in Makefile.PL berprft).

 - Die Windows-DLL macht in Verbindung mit PHP oder Access fters Probleme; die
   Ursache dafr wurde noch nicht gefunden, wird aber bald angegangen.

##################################################################################
###                       23.04.08 Version 2.91                                ###
##################################################################################

   Dies ist die erste Beta-Version fr das 3.0 Release von konto_check. Die
   Dateien 0_history.txt und 00liesmich.txt sind noch weitgehend von 2.6; es
   gibt sehr viele nderungen in den Funktionen und im API. Das alte API kann
   jedoch auch weiterhin benutzt werden; es wird intern auf die neuen Funktionen
   abgebildet.

##################################################################################
###                       23.08.08 Version 2.7 (gleichzeitig mit 2.92)         ###
##################################################################################

Diese Version ist wieder ein Zwischenrelease zur Version 3.0, da zum nchsten
Termin am 8.9.2008 zwei neue Prfziffermethoden eingefhrt wurden. Die zweite
Betaversion zu 3.0 (2.92) wird gleichzeitig mit dieser Version freigegeben.

 - Methoden D0 und D1 implementiert

 - in Methode 53 und B6 wurde eine Rckgabe vergessen; dadurch konnten unter
   Umstnden Konten flschlich als richtig klassifiziert werden.

 - Methode 57 wurde zum 4.12.2006 ziemlig stark gendert; die nderungen sind
   jetzt bercksichtigt.

 - Die PHP-Version wurde fr die Version 2.7 entfernt, da die Version aufgrund
   mangelnder Threadfestigkeit und fehlender Initialisierungsfunktionen u.a. fr
   PHP nicht geeignet ist.

 - Die Windows-DLL wird jetzt sowohl in cdecl als auch mit stdcall kompiliert;
   dann kann jeder die Version benutzen, die fr ihn passend ist.

##################################################################################
###                       210.04.08 Version 2.6                                ###
##################################################################################

 - Methoden C8 und C9 implementiert

##################################################################################
###                       216.02.08 Version 2.5                                ###
##################################################################################

Diese Version ist ein bergangsrelease, da in der Version 3.0 sehr viel Code
neu geschrieben wurde; die Version 2.5 enthlt noch den alten Code mit einigen
kleineren Bugfixes und kann als stabile Variante angesehen werden (3.0 ist noch
etwas experimentell, und macht unter Windows in Zusammen- hang mit VB ziemlig
Probleme; die C- und Perlversion scheinen dagegen zu laufen).

 - Methode 50b wird nur noch angewendet, falls die Kontonummer nicht mehr als
   sieben Stellen hat; nur in dem Fall scheint es mglich zu sein, da ein
   Unterkonto weggelassen wurde.

 - Bei Methode 74b wird die Prfziffer (aus der 10. Stelle) modulo 5 genommen,
   da bei mindestens einer Bank Prfziffern fr 74b >5 vorkommen.

 - Falls in der Bundesbankdatei fr eine Bank mehrere Prfverfahren angegeben
   sind, wird das der Haupt- stelle benutzt. Die alte Version nutzte als Prf-
   zifferverfahren dasjenige, das in der Bankdatei als letztes aufgefhrt wurde;
   dieses ist oft von einer Nebenstelle und ist somit i.A. nicht korrekt.

##################################################################################
###                       13.11.07 Version 2.4                                 ###
##################################################################################

Diese Version ist wieder ein Zwischenrelease, um die neu definierte Prfmethode
C7 (gltig ab Dezember) in die Library einzufgen; auerdem wurde ein Fehler in
der Methode B9 beseitigt.

 - Methoden C7 implementiert

 - In Methode B9 war fr den Test auf 3 fhrende Nullen irrtmlich
   if(kto[3]!='0') (statt if(kto[2]!='0') ) geschrieben; korrigiert.

 - Die Funktion kto_check_test_vars() gibt den Wert der bergebenen Variablen
   auch in einem String zurck, um so auch Anwendungen zu untersttzen, die die
   Ausgabe von stderr unterdrcken (insbesondere DLL-Anwendungen unter Windows).

 - neue Funktion kto_check_str(), die dieselbe Funktio- nalitt hat wie
   kto_check(), jedoch als Rckgabe einen kurzen String als Ergebnis liefert
   (war schon in 2.2 eingefhrt).

##################################################################################
###                       25.08.07 Version 2.3 (nur fr Perl)                  ###
##################################################################################

Dies ist ein kleines Bugfix-Release, das ein Problem bei "make test"
korrigiert; aufgrund einer fehlenden Datei schlug der Test fehl, so da die
unermdlichen CPAN Tester zwlfmal FAIL meldeten :-( - in dieser Version ist
die Datei vorhanden, und es gab wieder PASSes.

 - neuer Rckgabewert OK_TEST_BLZ_USED fr die Methoden 52, 53, B6 und C0 (keine
   Warnung mehr nach stderr, falls die Prfziffermethode direkt angegeben wird,
   ohne BLZ).

##################################################################################
###                       21.08.07 Version 2.2                                 ###
##################################################################################

Diese Version ist nur ein Zwischenrelease, um die neu definierten Prfmethoden
C5 und C6, die ab September gltig werden, in die Library einzufgen. Ansonsten
wurden nur einige Details gendert.

 - Methoden C5 und C6 implementiert - einige Aufrumarbeiten, unbenutzte
   Prototypen fr das LUT2 Datei-Format entfernt. Die Funktionen werden in der
   nchsten greren Version eingefhrt.

##################################################################################
###                       26.05.07 Version 2.1                                 ###
##################################################################################

 - falls die LUT-Datei nicht gefunden wurde, strzte das Programm beim nchsten
   Aufruf mit einer access violation ab; korrigiert.

 - falls als Dateiname fr die LUT-Datei ein Leerstring angegeben wird, wird
   jetzt der Defaultname benutzt.

 - die main() Routine kann jetzt auch im Filterbetrieb arbeiten

 - Fehler in Methode 74 beseitigt: wenn die Unterkonto- nummer nicht angegeben
   war, wurde bei einer Prf- ziffer von 10 gleich INVALID_KTO zurckgegeben,
   statt den Test mit Unterkontonummer "00" zu wiederholen.

 - einige Deklarationen mit long ersetzt durch INT4, da auf 64 Bit Systemen
   Probleme entstanden (betrifft vor allem die Funktion adler32)

 - erste Perl-Version mittels h2xs generiert

 - einige Anpassungen fr Perl, Perl Dokumentation

 - Die Versionszhlung ist jetzt nur noch zweistellig (vor allem wegen
   CPAN/PAUSE)

##################################################################################
###                       13.03.07 Version 2.0.5                               ###
##################################################################################

 - Methoden C3 und C4 implementiert

##################################################################################
###                       20.11.06 Version 2.0.4                               ###
##################################################################################

 - falsche Berechnung in Methode B6 korrigiert
 
 - falsche Berechnung in Methode 74b korrigiert

##################################################################################
###                       23.08.06 Version 2.0.3                               ###
##################################################################################

   Default fr lut_version in generate_lut() auf 2 (vorher war kein Defaultwert
   definiert; bei einem ungltigem Wert fr lut_version wurde eine fehler- hafte
   blz.lut Datei generiert, jedoch flschlich OK zurckgegeben.

##################################################################################
###                       26.05.06 Version 2.0.2                               ###
##################################################################################

 - Methoden C1 und C2 implementiert
 
 - neues BLZ-Dateiformat (Bundesbank) eingebaut
 
 - Variable methode_a1_alt gelscht

##################################################################################
###                       01.12.05 Version 2.0.1                               ###
##################################################################################

 - Methoden B9 und C0 implementiert

##################################################################################
###                       06.08.05 Version 2.0 final                           ###
##################################################################################

 - Makefiles aktualisiert

 - sharable library fr Linux/Unix

 - Fehler bei BLZ-Lookup beseitigt (nicht existierende BLZ wurde u.U. auf die 1.
   BLZ-Methode gefhrt)

 - Methoden B1, B2 und B4 bis B8 neu implementiert

 - Die Datei pruefziffermethoden_0509.pdf wurde noch einmal mit den
   implementierten Methoden verglichen; die Methoden 73, 80, 81, 84, 86, 87, 90,
   91, A4, A8 wurden danach aktualisiert

 - Variable methode_a1_alt herausgenommen (obsolet)

 - set_globals() an mehreren Stellen in generate_lut() eingefgt (in der
   threadfesten Version wurde der Rckgabetext nicht in die globalen Variablen
   eingesetzt, da die Funktion direkt aufgerufen wird).

##################################################################################
###                       16.12.04 Version 2.0-Beta-2                          ###
##################################################################################

 - library threadfest gemacht (optional; noch Testphase)

 - Methoden B0 und B3 neu

##################################################################################
###                       12.10.04 Version 2.0-Beta-1                          ###
##################################################################################

 - Methoden B1 und B2 neu

 - Marker fr vim folding eingefhrt

##################################################################################
###                       16.01.04 Version 2.0-Alpha-2                         ###
##################################################################################

 - DLL-Support fr Windows eingefhrt

##################################################################################
###                       16.01.04 Version 2.0-Alpha-1                         ###
##################################################################################

 - Geschwindigkeitsoptimierung aller Methoden sowie der Hilfsfunktionen und der
   main() Routine

 - Methode 80: Der Sonderfall mit 99 an der 3. und 4. Stelle wird jetzt nur noch
   fr die Variante 2 angenommen, nicht global.

 - In Methode 76.2 wurde die 1. Stelle auf 1,2,3,5 getestet; aufgrund der
   Verschiebung mu jedoch die 3. Stelle getestet werden.

 - Die neu definierten Methoden (A6 bis A9) sind jetzt iplementiert.

 - Methode A1 alt gelscht

##################################################################################
###                       16.12.04 Version 1.1.5 (aus 2.0-Beta-2)              ###
##################################################################################

 - Methoden B0 und B3 neu

##################################################################################
###                       12.10.04 Version 1.1.4 (aus 2.0-Beta-1)              ###
##################################################################################

 - Methoden B1 und B2 neu
 
 - Marker fr vim folding eingefhrt

##################################################################################
###                       28.01.04 Version 1.1.3                               ###
##################################################################################

 - Die Fehler in Methode 76.2 und 80 (s.u., Version 2.0-Alpha1 wurden korrigiert

 - Die neu definierten Methoden (A6 bis A9) sind jetzt iplementiert.

 - Methode A1 alt gelscht

##################################################################################
###                       210.06.03 Version 1.1.2                              ###
##################################################################################
 
 - Fehler in Methode 21 behoben (Quersumme der Faktoren fehlte)

 - Methode A1 auf neues Berechnungsverfahren umgestellt

 - (Bei dem Generator fr die Testkonten wurde noch einige Pattern berichtigt)

##################################################################################
###                       25.03.03 Version 1.1.1                               ###
##################################################################################

 - zustzlicher Test in read_lut(), ob die LUT-Datei gelesen wurde.

 - eine Reihe Untermethoden wurde anders numeriert (dies betrifft nur die
   Debug-Version und ist nur fr Tests relevant; es hat keine Auswirkung auf das
   normale Programm).

 - neue Variable pz_str (char[4]), in der die benutzte Prfmethode und
   Untermethode zurckgegeben wird. Falls die Untermethode unerwnscht ist, kann
   sie mit pz_str[2]=0 gelscht werden. Die Methode entspricht der Notation der
   Deutschen Bundesbank (00 bis A5), fr die Untermethoden werden kleine
   Buchstaben benutzt (a, b, c...).

##################################################################################
###                       13.03.03 Version 1.1.0                               ###
##################################################################################

 Bugfixes:
 - Methode 95: Ausnahmekonten 0001999999 etc. gelten als richtig (ohne Test; Im
   Vergleich wurde auf kleiner getestet statt auf kleiner/gleich)

 Weitere nderungen:
 - Die Konstanten MAYBE_OK/MAYBE_FALSE werden nicht mehr benutzt und wurden
   entfernt (dadurch ndern sich die numerischen Rckgabewerte, nicht jedoch die
   symbolischen).

 - Datei konto_check.h geschrieben mit public interface und mglichen
   Rckgabewerten.

 - die Methode A1 wird zum 9.6.2003 gendert; das neue Berechnungsverfahren kann
   ber eine globale Variable ausgewhlt werden.

 - Die Methoden A2...A5 wurden implementiert (neue Verfahren)

 - Neues Dateiformat fr die Datei blz.lut: sie enthlt jetzt eine Infozeile, in
   der das Erzeugungsdatum und der Name der ursprnglichen Bankleitzahlendatei
   festgehalten wird.

 - neue Funktionen get_lut_info(): gibt (beim neuen Format) die Infozeile der
   LUT-Datei zurck.

 - neue Funktion get_kto_check_version() zur Versions- kontrolle

 - main() Routine in eigene Datei ausgelagert

 - Test von Untermethoden mit dreistelliger "BLZ"

##################################################################################
###                       04.02.03 Version 1.0.3                               ###
##################################################################################

 Bugfixes:
 - Fehler in den Methoden 47, 52, 87 und 93 behoben

 - falls der 1. Parameter (BLZ/Prfziffermethode) nur zweistellig angegeben
   wird, wurde die Funktion init_w() nicht aufgerufen, so da etliche Varibalen
   undefiniert blieben.

 - Lizenzbedingungen: Unterschied der LGPL zur normalen GPL im readme und am
   Programmanfang deutlicher gesagt (nicht nur Hinweis auf den Text)

 - neues blz.lut aus der Datei blz0212.exe

##################################################################################
###                       06.11.02 Version 1.0.2                               ###
##################################################################################

main() Routine mit Hilfefunktion, DOS-Exe in das pub-Verzeichnis

##################################################################################
###                       10.10.02 Version 1.0.1                               ###
##################################################################################

Einige kleine Fehler wurden noch korrigiert und die main() Funktion etwas erweitert.

##################################################################################
###                       13.9.02  Version 1.1                                 ###
##################################################################################

Die Berechnungsmethoden sind jetzt komplett;  bis auf Methode 87 (Pascalcode)
wurden alle Methoden mit dem Perl-Modul konto.pm mit jeweils ca. 50000...
100000 Testkontonummern berprft (dabei wurden auch einige Fehler im
Perl-Modul aufgedeckt und beseitigt).

Die Funktionen aus blz_utils.c sind jetzt in die Hauptdatei integriert; diese
kann als stand-alone Programm oder als library verwendet werden.

##################################################################################
###                       10.07.02  Version 0.3                                ###
##################################################################################

weitere Berechnungsmethoden; zustzliche Datei blz_utils.c mit diversen
Hilfsfunktionen fr (wesentlich) schnelleren Zugriff auf die Prfziffer-
methoden (unter VMS ergab sich fr eine Testdatei mit knapp 200 Eintrgen eine
Beschleunigung von 4,9s auf 0,13s (mit einem remote filesystem); bei Linux (mit
lokalem Filesystem und blz.txt/blz.lut im Cache) von 175 ms auf 2,4 ms).

Fr die Brechnung wird nicht mehr auf die Datei der Deutschen Bundesbank
zugegriffen, sondern nur noch auf eine generierte Binrdatei (blz.lut); sie
kann mit der Funktion generate_lut() aus der Bundesbank- datei erzeugt werden.

##################################################################################
###                       13.06.02  Version 0.2                                ###
##################################################################################

Berechnungsmethoden umgeschrieben, zustzliche Methoden eingefgt.

Jede implementierte Methode wird mit dem Perl-Modul Business::konto.pm von
Andreas Butzko <andreas@butzko.net> mit mindestens 40000 Testkontonummern (oft
auch mehr) getestet.

##################################################################################
###                       01.05.02  Version 0.1                                ###
##################################################################################

   erste Version (nur privat, wenige Methoden)

##################################################################################
##################################################################################
##################################################################################


##############################################################################
#          PRFZIFFERBERECHNUNG VON STERREICHISCHEN KONTONUMMERN            #
#                           C-/Perl-Bibliothek                               #
##############################################################################
#                                                                            #
# Autor             : Michael Plugge <m.plugge@fh-mannheim.de>               #
# Version           : 1.3                                                    #
# Datum             : 16.01.2008                                             #
##############################################################################

Versionen der sterreichischen Bibliothek:


Version 0.1 (13.7.06, initiale Version)
==============================

 - Prffunktionalitt komplett
 - die Datei blz-at.lut wird von einem externen Programm generiert


Version 0.2 (20.7.06):
======================

 - einige VIM-Faltungen eingefgt

 - exit in etlichen Funktionen durch return mit Fehlercode ersetzt

 - kto_check_msg herausgenommen wegen Kollision mit der deutschen Version,
   funktional ersetzt durch kto_check_retval2txt().

 - kleine nderungen der main() Routine

 - falls eine BLZ als erstes Zeichen ein - enthlt, wird das Konto auch
   getestet, falls die BLZ gelscht ist; die Rckgabewerte sind in dem Fall
   dann OK_GELOESCHT, OK_NO_CHK_GELOESCHT oder FALSE_GELOESCHT.

 - Geschwindigkeitsoptimierungen:

    * search_blz() fr die Methodensuche ersetzt durch Array,
      in dem die Methoden gespeichert sind

    * atoi() zur Umwandlung der BLZ in Integer ersetzt durch eigene Funktion.
      Eine Arrayvariante zur Umwandlung bringt keinen Geschwindigkeitsvorteil.

    * l_datum (globale Variable) ersetzt durch Array (binr); das Lschdatum
      erhlt man nun ber die Funktion get_loesch_datum()

      Die beiden ersten Funktionen waren im Vergleich zur insgesamt bentigten
      Zeit unverhltnismig langsam. Daher wurde die zugehrige Prftabelle und
      die Information, ob eine Bankleitzahl gelscht ist, in zwei Byte-Arrays
      mit jeweils 100.000 Elementen transferiert; die Arrayabfrage ist natrlich
      wesentlich schneller als der Funktionsaufruf. Durch diese Umstellung wird
      die Variable l_datum nicht mehr gesetzt; falls man setzen wollte, mte
      der Index fr jede Bankleitzahl gespeichert werden. In diesem Fall mte
      man fr das Array fr das Lschdatum ein Integer-Array (4 Byte Integer)
      benutzen; da das Lschdatum aber wohl nicht oft bentigt wird, wird es
      nicht mehr in jedem Fall bestimmt, sondern nur noch durch den
      Funktionsaufruf.


 - Fehlerkorrekturen:

   * im Makro ZIFFERNSUMME_7:
      if(pz1>59)pz1-=56;  ersetzt durch if(pz1>59)pz1-=54;
      (falsche Ziffer eingefgt => Ziffernsumme wird falsch)

   * in der Funktion kto_check_at (Rechenvorgang der Prfziffer):
      methode=*ptr++-'0'; ersetzt durch methode=char2num[*ptr++];
      (die alte Variante stimmt nur fr einen Rechenvorgang bis 9)

   * in der Funktion kto_check_at (Array-Version, nach Rechenvorgang der Prfziffer):
      wichtung-='0';  ersetzt durch    wichtung=char2num[wichtung];
      stelle_1-='1';  ersetzt durch    stelle_1=char2num[stelle_1]-1;
      (die alte Variante stimmt nur fr Werte bis 9)


Version 1.0 (1.9.06):
=====================

 - weitere Tests mit realen Konten, noch keine weiteren Fehler gefunden

 - einige Kommentare eingefgt

 - noch einige VIM-Faltungen eingefgt

 - CRC-Test fr die lut-Datei (mit adler32 als Prfsumme)

 - optional bei generate_lut_at(): Ausgabe der Bankdaten auch als plain-Datei
   in frei whlbarem Format

 - neue Funktion dump_lutfile(), die den Inhalt einer lut-Datei als Klartext
   ausgibt (Ausgabefelder: BLZ, Lschdatum, Prftabelle/-parameter).

 - Funktion generate_lut_at in die Bibliothek integriert; inpar2lut.c ist dadurch
   obsolet geworden (bzw. nur noch fr spezielle Prfzwecke relevant), und daher
   aus der Distribution herausgenommen. Die Umlaute werden von CP 850 auf
   iso-8859-1 umgesetzt (aktuell nur fr die plain Ausgabe; es ist jedoch fr
   eine sptere Erweiterung der lut-Datei auf zustzliche Ausgabefelder
   relevant).

 - das Prprozessor-Makro HTML_UMLAUTE in kto_check_retval2txt() ist jetzt
   obsolet; stattdessen gibt es eine zustzliche Funktion
   kto_check_retval2html(), die HTML-Umlaute liefert.

 - kleine nderungen in der Sortier-Routine fr generate_lut. Dadurch ndern
   sich fr einige Bankleitzahlen der lut-Datei das Lschdatum, da nun
   Hauptstellen vor Zweigstellen sortiert werden (es wird nur eine Bank
   pro BLZ in die lut-Datei aufgenommen; manchmal werden allerdings laut der
   Bankleitzahlendatei Hauptstellen vor Zweigstellen gelscht - schwer
   verstndlich, aber so steht es da). Ansonsten ist die lut-Datei mit der alten
   Version identisch (lt sich leicht mittels dump_lutfile() berprfen ;-) ).

 - die library ist jetzt threadfest (sogar ohne Sonderfunktionen wie bei der
   deutschen Variante).

 - beim Lesen und Schreiben der lut-Datei ist der Modus auf rb bzw. wb gesetzt
   (das Programm war noch nicht unter Windows getestet).

 - die Prfroutinen liefern denselben Wert wie Version 0.2 (getestet mit einer
   Spezialversion, die die Prfziffer noch vor der Bildung des Modulus
   bercksichtigt). Ein Problem ist nur die BLZ 00001: in der inporwo.txt finden
   sich fr die BLZ 00001 die folgenden Eintrge:

-   53791 00001 00032 GELOESCHT - BANKHAUS CARL SPAENGLER & CO.
-   53813 00001 00032 BANKKOMMANDITGESELLSCHAFT ANTONI, HACKER & CO.
+   76040 00001 00032 VORARLBERGER LANDESBANK-HOLDING
+  116408 00001 00013 ANTEILSVERWALTUNGSSPARKASSE STOCKERAU
+  163902 00001 00000 GELOESCHT - BANK AUSTRIA TREUHAND & BETEILIGUNGSFONDS AKTIENGESELLSCHAFT
-  166286 00001 00032 Kathrein & Co. Bankkommanditgesellschaft
-  184195 00001 00032 BANKHAUS SCHELHAMMER & SCHATTERA
-  196053 00001 00032 GELOESCHT - Bankhaus Krentschker & Co. Zweigniederlassung Wien
-  267511 00001 00032 GELOESCHT - RAIFFEISENBANK HARD REG.GEN.M.B.H.
- 1337939 00001 00032 GELOESCHT - SECURITY KAPITAL-ANLAGEGESELLSCHAFT M.B.H.
- 4888804 00001 00032 Verwaltungsgenossenschaft der vbankdirekt AG reg.Gen.m.b.H.

   Die drei Eintrge mit einem + in der ersten Spalte werden in die blz-at.lut
   Datei bernommen; falls eine BLZ 00001 auftaucht, wird allerdings der Eintrag
   mit der ID 163902 (Tabelle 0, immer ok) benutzt. In der Version 0.2 wurde
   stattdessen der Eintrag mit der ID 76040 (Tabelle 32) benutzt (aufgrund der
   genderten Sortierroutine). Die BLZ scheint allerdings keine reale BLZ zu
   sein, sondern nur ein Testfall, da die Banken auf den ersten Blick nichts
   miteinander zu tun haben und drei verschiedene Prfverfahren (0, 13 und 32)
   angegeben sind.


Version 1.1 (8.9.06):
=======================

Diese Version enthlt einige kleine nderungen, die sich fr das cgi-Programm
als ntzlich erwiesen haben, sowie zwei Bugfixes:

 - falls in kto_check_at() fr den Parameter lut_name NULL bergeben wird,
   werden nur die Arrays initialisiert, aber keine lut-Datei geladen. Dies ist
   ntzlich, falls statt einer Bankleitzahl direkt die Prfparameter angegeben
   werden (mit vorgestelltem p). Falls fr den Parameter lut_name ein Leerstring
   bergeben wird, wird versucht, die Datei DEFAULT_LUT_NAME zu lesen.

 - der Filedeskriptor trace ist jetzt als globale Variable (in der DLL auch
   exportiert) deklariert; damit kann die trace-Datei auch aus einem anderen
   Modul initialisiert werden. Die Trace-Version ist natrlich nicht threadfest,
   aber sie wird ja nur zur Fehlersuche bentigt.

 - in der Funktion generate_lut_at werden einige groe Array-Variablen allokiert
   (ca. 3,5 MB bei MAX_BLZ_CNT_AT=30000); sie sind jetzt als static deklariert,
   da ansonsten unter Windows das Programm beim Generieren einer lut-Datei mit
   einer Schreibschutzverletzung abstrzt.

 - die Funktion dump_lutfile() lieferte keine vernnftigen Werte, da whrend der
   Entwicklung (kurzzeitig) die Arrays per malloc allokiert wurden, und spter
   wieder als Arrays deklariert wurden; in der Funktion war noch die
   malloc-Version, und die Adressierung ging schief.

 - kleine nderungen in der main() Routine

 - die Fehlermeldungen die von kto_check_retval2txt() geliefert werden, sind
   jetzt reine Fehlermeldungen, ohne in ### eingeschlossen zu sein


Version 1.2 (11.9.06):
=======================

 - kleiner Fehler in der Trace-Version: falls trace==NULL war, wurden einige
   Berechnungen nicht gemacht, und das Ergebnis meist als richtig angesehen
   (dies betrifft nur die Trace-Version, nicht die normale; wurde beim
   cgi-Programm entdeckt).

 - Die Dateien mit dem INPAR Handbuch und -Vertrag werden nach Rcksprache mit
   First Data (H. Krickel; jetzt SIX Card Solutions) nicht mehr in das Paket
   aufgenommen, sondern sollten direkt bei SIX Card Solutions
   (Andreas.Krickl@six-card-solutions.at) angefragt, bzw. von der Website von
   SIX Card Solutions Austria heruntergeladen werden (nheres in der Datei
   00liesmich unter Punkt 5. Prfparameter).

Version 2.1 (4.6.07):
=======================
 - Die Versionszhlung luft jetzt synchron mit der deutschen Version von
   konto_check, da die beiden Pakete fr die Perl-Version zusammen verwendet
   werden
 - einige kleinere nderungen fr die Anpassung an Perl
 - Der Datentyp von adler32 wurde von unsigned long auf UINT4 gendert, um
   Probleme mit modernen 64 Bit Compilern zu beheben.

Version 1.3 (16.1.08):
======================
 - Die eigene Versionszhlung fr das sterreichische Modul wird doch wieder
   eingefhrt.

 - diese Version implementiert das INPAR-Dateiformat; das Programm kann jetzt
   beide Dateiformate lesen

 - die Funktion dump_lutfile() mute auf dump_lutfile_at() umbenannt werden,
   da in der neuen deutschen Bibliothek jetzt auch eine Funktion mit demselben
   Namen, aber wesentlich erweiterter Funktionalitt als Teil der LUT2
   Routinen vorkommt (diese Funktion ist allerdings nicht nach perl
   exportiert).

 - einige kleinere Aufrumarbeiten

