Business-KontoCheck

 view release on metacpan or  search on metacpan

konto_check.h  view on Meta::CPAN

/* vim: ft=c:set si:set fileencoding=iso-8859-1
 */
#line 9 "konto_check_h.lx"

/*
 * ##########################################################################
 * #  Dies ist konto_check, ein Programm zum Testen der Prüfziffern         #
 * #  von deutschen Bankkonten. Es kann als eigenständiges Programm         #
 * #  (z.B. mit der beigelegten main() Routine) oder als Library zur        #
 * #  Verwendung in anderen Programmen bzw. Programmiersprachen benutzt     #
 * #  werden.                                                               #
 * #                                                                        #
 * #  Copyright (C) 2002-2026 Michael Plugge <konto_check@yahoo.com>        #
 * #                                                                        #
 * #  Dieses Programm ist freie Software; Sie dürfen es 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.       #
 * #                                                                        #
 * #  Dieses Programm wird in der Hoffnung weiterverbreitet, daß es         #
 * #  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 diesem Programm erhalten haben; falls nicht,             #
 * #  schreiben Sie an die Free Software Foundation, Inc., 59 Temple        #
 * #  Place, Suite 330, Boston, MA 02111-1307, USA. Sie können sie auch     #
 * #  von                                                                   #
 * #                                                                        #
 * #       http://www.gnu.org/licenses/lgpl.html                            #
 * #                                                                        #
 * # im Internet herunterladen.                                             #
 * #                                                                        #
 * ##########################################################################
 */

#ifndef KONTO_CHECK_H_INCLUDED
#define KONTO_CHECK_H_INCLUDED

   /* Falls EXTRA_BLZ_REGEL auf 1 gesetzt wird, wird beim IBAN-Test
    * unterschieden ob eine Regel ignoriert wurde, die nur eine BLZ ersetzt,
    * oder eine andere Regel. Die Variante wenn nur eine BLZ ersetzt wird, wird
    * von cKonto als richtig angesehen.
    *
    * Bei einer Nachfrage bei den 17 in Frage kommenden Banken bekam ich von
    * zehn Banken Antworten. Von diesen sagte nur eine, daß (aktuell) die
    * "alten" IBANs noch akzeptiert würden, die neun anderen sehen eine solche
    * IBAN jedoch als fehlerhaft an. In konto_check wird daher das alte
    * Verhalten beibehalten, solche IBANs als Fehler zu deklarieren. Wenn das
    * folgende Makro auf 1 gesetzt wird, gibt es verschiedene Rückgabewerte für
    * Regelverstöße mit nur BLZ-Ersetzung und andere Regeln. Auf diese Weise
    * kann das Verhalten von cKonto in Benutzerprogrammen nachgebildet werden.
    */

#define EXTRA_BLZ_REGEL 1

/* Das Makro DEFAULT_ENCODING legt die Ausgabe-Kodierung für die Funktion
 * kto_check_retval2txt() und die Blocks Name, Kurzname und Ort aus der
 * LUT-Datei fest. Die folgenden Werte sind möglich:
 *
 *    1: ISO-8859-1
 *    2: UTF-8
 *    3: HTML Entities
 *    4: DOS CP-850
 *
 * Werte außerhalb dieses Bereichs dürften schnell zum Absturz führen, da
 * einige Arrays damit initialisiert werden.
 */

#ifndef DEFAULT_ENCODING
#  define DEFAULT_ENCODING 1
#endif

#define KEEP_RAW_DATA    1

/* 
 * ##########################################################################
 * # Fallls das folgende Makro auf 1 gesetzt wird, werden unterschiedliche  #
 * # Interpretationen der Prüfziffermethoden interpretiert wie in BAV       #
 * # (Bank Account Validator, http://sourceforge.net/projects/bav)          #
 * # Dieses Makro dient zum Test der beiden Pakete, damit bei den Tests     # 
 * # nicht immer Unterschiede ausgegeben werden, wo nur (bekannte)          #
 * # unterschiedliche Interpretationen der Berechnungsmethoden existieren.  #
 * ##########################################################################
 */
#define BAV_ENABLE 0

#if BAV_ENABLE==1
#ifndef BAV_KOMPATIBEL
#define BAV_KOMPATIBEL 0
#endif
#else
#undef BAV_KOMPATIBEL
#define BAV_KOMPATIBEL 0
#endif

/*
 * ##########################################################################
 * # Fallls das Makro DEBUG auf 1 gesetzt wird, werden zwei- und drei-      #
 * # stellige Methoden (Methode + evl. Untermethode) akzeptiert, sowie noch #
 * # diverser Debug-Code mit eingebaut.                                     #
 * #                                                                        #
 * # Das Makro VERBOSE_DEBUG wird für einige spezielle Problemfälle benutzt;#
 * # falls es gesetzt ist, wird im Fehlerfall mittels perror() eine etwas   #
 * # detailliertere Fehlermeldung ausgegeben (im Moment nur bei fopen()).   #

konto_check.h  view on Meta::CPAN

DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base);
DLL_EXPORT int lut_suche_multiple(char *such_worte,int uniq,char *such_cmd,UINT4 *anzahl,UINT4 **zweigstellen,UINT4 **blz);
DLL_EXPORT int lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_o,int uniq);
DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl_o,int **blz_op,int **zweigstellen_op,int **cnt_o,int uniq);
DLL_EXPORT int lut_suche_init(int uniq);
DLL_EXPORT int lut_suche_free(int id);
DLL_EXPORT int lut_suche_set(int such_id,int idx,int typ,int i1,int i2,char *txt);
DLL_EXPORT int lut_suche(int such_id,char *such_cmd,UINT4 *such_cnt,UINT4 **filiale,UINT4 **blz);
DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char **lut_blocks_fehler);
DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *lut_blocks_fehler);

   /* (Benutzerdefinierte) Default-Werte in der LUT-Datei lesen und schreiben */
#define DEFAULT_CNT 50                 /* Anzahl Einträge (fest) */

DLL_EXPORT int kto_check_init_default(char *lut_name,int block_id);
DLL_EXPORT int kto_check_default_keys(char ***keys,int *cnt);
DLL_EXPORT int kto_check_set_default(char *key,char *val);
DLL_EXPORT int kto_check_set_default_bin(char *key,char *val,int size);
DLL_EXPORT int kto_check_get_default(char *key,char **val,int *size);
DLL_EXPORT int kto_check_write_default(char *lutfile,int block_id);

   /* Aufräumarbeiten */
DLL_EXPORT int lut_cleanup(void);

   /* IBAN-Sachen */
DLL_EXPORT int ci_check(char *ci);
DLL_EXPORT int bic_check(char *search_bic,int *cnt);
DLL_EXPORT int iban_check(char *iban,int *retval);
DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto);
DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto);
DLL_EXPORT char *iban_gen(char *kto,char *blz,int *retval);
DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,char *kto2,int *retval);
DLL_EXPORT char *iban_bic_gen1(char *blz,char *kto,const char **bicp,int *retval);
DLL_EXPORT int ipi_gen(char *zweck,char *dst,char *papier);
DLL_EXPORT int iban_gen_id(char *blz,char *kto,int *retval);
DLL_EXPORT int ipi_gen_id(char *zweck,int *dst,int *papier);
DLL_EXPORT int iban_bic_gen_id(char *blz,char *kto,int *bic2,int *blz2,int *kto2,int *retval);
DLL_EXPORT int ipi_check(char *zweck);

   /* BIC-Funktionen */
DLL_EXPORT int bic_info(char *bic_name,int mode,int *anzahl,int *start_idx);

   /* Rückgabewerte in Klartext umwandeln */
DLL_EXPORT int kto_check_encoding(int mode);
DLL_EXPORT int keep_raw_data(int mode);
DLL_EXPORT const char *kto_check_encoding_str(int mode);
DLL_EXPORT const char *kto_check_retval2txt(int retval);
DLL_EXPORT const char *kto_check_retval2iso(int retval);
DLL_EXPORT const char *kto_check_retval2txt_short(int retval);
DLL_EXPORT const char *kto_check_retval2html(int retval);
DLL_EXPORT const char *kto_check_retval2utf8(int retval);
DLL_EXPORT const char *kto_check_retval2dos(int retval);

   /* Prüfziffer (numerisch) in String umwandeln */
const DLL_EXPORT char *pz2str(int pz,int *ret);

   /* Flag für neue Prüfziffermethoden setzen bzw. abfragen */
DLL_EXPORT int pz_aenderungen_enable(int set);


   /* Funktionen für Strings mit Rückgabe per handle */
DLL_EXPORT char *kc_id2ptr(int handle,int *retval);
DLL_EXPORT int kc_id_free(int handle);

   /* Handle-Varianten für Funktionen mit Stringkonstanten als Rückgabewert */
DLL_EXPORT int kto_check_encoding_str_id(int mode);
DLL_EXPORT int kto_check_retval2txt_id(int retval);
DLL_EXPORT int kto_check_retval2txt_short_id(int retval);
DLL_EXPORT int kto_check_retval2html_id(int retval);
DLL_EXPORT int kto_check_retval2dos_id(int retval);
DLL_EXPORT int kto_check_retval2utf8_id(int retval);
DLL_EXPORT int get_kto_check_version_id(int mode);

DLL_EXPORT int lut_name_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_name_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_name_kurz_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_name_kurz_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_ort_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_ort_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_h_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_hi_id(int b,int zweigstelle,int *retval);

DLL_EXPORT int bic_bic_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_bic_h_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_name_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_name_kurz_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_ort_id(char *bic_name,int mode,int filiale,int*retval);

DLL_EXPORT int biq_bic_id(int idx,int*retval);
DLL_EXPORT int biq_bic_h_id(int idx,int*retval);
DLL_EXPORT int biq_name_id(int idx,int*retval);
DLL_EXPORT int biq_name_kurz_id(int idx,int*retval);
DLL_EXPORT int biq_ort_id(int idx,int*retval);

DLL_EXPORT int iban_bic_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_bic_h_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_name_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_name_kurz_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_ort_id(char *iban,int filiale,int*retval);

   /* Funktionen für das SCL-Verzeichnis */
DLL_EXPORT int lut_scl_init(char *lut_name);
DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso);
DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile);
DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_bic,const char **scl_name);
DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **used_bic,const char **scl_name);
DLL_EXPORT int lut_scl_multi_blz_i(int blz,const char **scl_flags,const char **used_bic,const char **scl_name);
DLL_EXPORT int lut_scl_sct(char *bic,int *retval);
DLL_EXPORT int lut_scl_sdd(char *bic,int *retval);
DLL_EXPORT int lut_scl_cor1(char *bic,int *retval);
DLL_EXPORT int lut_scl_b2b(char *bic,int *retval);
DLL_EXPORT int lut_scl_scc(char *bic,int *retval);
DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic);
DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic);
DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic);



( run in 2.880 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )