konto_check 5.2.1 → 5.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +2 -2
- data/README.textile +55 -5
- data/ext/konto_check_raw/konto_check.c +1223 -559
- data/ext/konto_check_raw/konto_check.h +75 -56
- data/ext/konto_check_raw/konto_check_raw_ruby.c +242 -228
- data/lib/konto_check.rb +11 -3
- metadata +9 -6
@@ -10,7 +10,7 @@
|
|
10
10
|
* # Verwendung in anderen Programmen bzw. Programmiersprachen benutzt #
|
11
11
|
* # werden. #
|
12
12
|
* # #
|
13
|
-
* # Copyright (C) 2002-
|
13
|
+
* # Copyright (C) 2002-2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
14
14
|
* # #
|
15
15
|
* # Dieses Programm ist freie Software; Sie d�rfen es unter den #
|
16
16
|
* # Bedingungen der GNU Lesser General Public License, wie von der Free #
|
@@ -47,67 +47,30 @@
|
|
47
47
|
#ifndef KONTO_CHECK_H_INCLUDED
|
48
48
|
#define KONTO_CHECK_H_INCLUDED
|
49
49
|
|
50
|
-
/*
|
51
|
-
* ##########################################################################
|
52
|
-
* # Hier eine Info der Flessabank zur IBAN-Berechnung (abgerufen 13.6.12 #
|
53
|
-
* # von http://www.flessabank.de/aktuell.php?akt=149) #
|
54
|
-
* # #
|
55
|
-
* # Aktuelles Bankleitzahl/BIC #
|
56
|
-
* # #
|
57
|
-
* # Im Rahmen eines umfassenden Konsolidierungsprojekts der Deutschen #
|
58
|
-
* # Bundesbank und der Europ�ischen Zentralbank werden immer mehr Filialen #
|
59
|
-
* # der Deutschen Bundesbank geschlossen. Dabei wird auch die aktuelle #
|
60
|
-
* # Bankleitzahlenlogik f�r die Deutsche Bundesbank �berarbeitet. #
|
61
|
-
* # #
|
62
|
-
* # Um als FLESSABANK dieser ver�nderten Situation gerecht zu werden, #
|
63
|
-
* # haben wir uns entschlossen, unsere Bankleitzahlenstruktur zu #
|
64
|
-
* # vereinfachen und auf die zentrale Bankleitzahl 793 301 11 umzustellen. #
|
65
|
-
* # Ihre Kontonummern bleiben dabei unver�ndert g�ltig! #
|
66
|
-
* # #
|
67
|
-
* # Betroffen sind hiervon folgende Bankleitzahlen: #
|
68
|
-
* # 700 301 11 (Niederlassung M�nchen) #
|
69
|
-
* # 763 301 11 (Niederlassung Erlangen) #
|
70
|
-
* # 770 301 11 (Niederlassung Bamberg) #
|
71
|
-
* # 783 301 11 (Niederlassung Coburg) #
|
72
|
-
* # 840 301 11 (Niederlassung Meiningen) #
|
73
|
-
* # #
|
74
|
-
* # F�r die Bereiche Internet-Banking und girocard ist bereits heute nur #
|
75
|
-
* # die Bankleitzahl 793 301 11 g�ltig. Auch Ihre IBAN (International Bank #
|
76
|
-
* # Account Number = Internationale Kontonummer) wird ausschlie�lich mit #
|
77
|
-
* # der Bankleitzahl 793 301 11 erstellt. Wir teilen Ihnen diese zusammen #
|
78
|
-
* # mit unserem BIC (Bank Identifier Code = Bankkennung) auf jedem #
|
79
|
-
* # Kontoauszug mit. #
|
80
|
-
* # #
|
81
|
-
* # Update zur Flessa-Bank (abgerufen 28.10.13): Die obigen Bankleitzahlen #
|
82
|
-
* # haben in der aktuellen BLZ-Datei das L�schflag gesetzt und als #
|
83
|
-
* # Nachfolge-BLZ die 79330111 eingetragen. Damit er�brigt sich die #
|
84
|
-
* # Korrektur f�r die Flessa-Bank. #
|
85
|
-
* ##########################################################################
|
86
|
-
*/
|
87
|
-
|
88
|
-
#define FLESSA_KORREKTUR 0
|
89
|
-
|
90
50
|
/* IBAN-Regeln benutzen (g�ltig ab 3.6.2013) */
|
91
51
|
#define USE_IBAN_RULES 1
|
92
52
|
|
93
53
|
/* �nderungen der Pr�fziffermethoden zum 9. September 2013 erzwingen
|
94
|
-
* (bei 0 werden sie abh�ngig vom Datum aktiviert).
|
54
|
+
* (bei 0 werden sie abh�ngig vom Datum aktiviert; aktuell nicht benutzt).
|
95
55
|
*/
|
96
56
|
#define FORCE_AENDERUNGEN_2013_09 0
|
97
57
|
|
98
|
-
/*
|
99
|
-
*
|
100
|
-
*
|
101
|
-
*
|
58
|
+
/* Falls EXTRA_BLZ_REGEL auf 1 gesetzt wird, wird beim IBAN-Test
|
59
|
+
* unterschieden ob eine Regel ignoriert wurde, die nur eine BLZ ersetzt,
|
60
|
+
* oder eine andere Regel. Die Variante wenn nur eine BLZ ersetzt wird, wird
|
61
|
+
* von cKonto als richtig angesehen.
|
62
|
+
*
|
63
|
+
* Bei einer Nachfrage bei den 17 in Frage kommenden Banken bekam ich von
|
64
|
+
* zehn Banken Antworten. Von diesen sagte nur eine, da� (aktuell) die
|
65
|
+
* "alten" IBANs noch akzeptiert w�rden, die neun anderen sehen eine solche
|
66
|
+
* IBAN jedoch als fehlerhaft an. In konto_check wird daher das alte
|
67
|
+
* Verhalten beibehalten, solche IBANs als Fehler zu deklarieren. Wenn das
|
68
|
+
* folgende Makro auf 1 gesetzt wird, gibt es verschiedene R�ckgabewerte f�r
|
69
|
+
* Regelverst��e mit nur BLZ-Ersetzung und andere Regeln. Auf diese Weise
|
70
|
+
* kann das Verhalten von cKonto in Benutzerprogrammen nachgebildet werden.
|
102
71
|
*/
|
103
72
|
|
104
|
-
#define
|
105
|
-
|
106
|
-
/* Debug-Version f�r iban_gen in Perl aktivieren (zur Ausgabe der benutzten
|
107
|
-
* Pr�fziffermethode in iban_gen()). Dies ist nur m�glich, falls das Makro
|
108
|
-
* DEBUG auf 1 gesetzt ist.
|
109
|
-
*/
|
110
|
-
#define PERL_IBAN_DBG 1
|
73
|
+
#define EXTRA_BLZ_REGEL 1
|
111
74
|
|
112
75
|
/* Das Makro DEFAULT_ENCODING legt die Ausgabe-Kodierung f�r die Funktion
|
113
76
|
* kto_check_retval2txt() und die Blocks Name, Kurzname und Ort aus der
|
@@ -208,7 +171,7 @@
|
|
208
171
|
* ######################################################################
|
209
172
|
*/
|
210
173
|
|
211
|
-
#
|
174
|
+
#if _WIN32>0 || _WIN64>0
|
212
175
|
# if USE_CDECL
|
213
176
|
# if BUILD_DLL /* DLL kompilieren */
|
214
177
|
# define DLL_EXPORT __declspec (dllexport)
|
@@ -259,7 +222,7 @@
|
|
259
222
|
|
260
223
|
#define DEFAULT_LUT_NAME "blz.lut","blz.lut2f","blz.lut2"
|
261
224
|
|
262
|
-
#if _WIN32>0
|
225
|
+
#if _WIN32>0 || _WIN64>0
|
263
226
|
#define DEFAULT_LUT_PATH ".","C:","C:\\Programme\\konto_check"
|
264
227
|
#else
|
265
228
|
#define DEFAULT_LUT_PATH ".","/usr/local/etc","/etc","/usr/local/bin","/opt/konto_check"
|
@@ -328,6 +291,7 @@
|
|
328
291
|
#define LUT2_VOLLTEXT_IDX 24
|
329
292
|
#define LUT2_IBAN_REGEL 25
|
330
293
|
#define LUT2_IBAN_REGEL_SORT 26
|
294
|
+
#define LUT2_BIC_H_SORT 27
|
331
295
|
|
332
296
|
#define LUT2_2_BLZ 101
|
333
297
|
#define LUT2_2_FILIALEN 102
|
@@ -355,6 +319,7 @@
|
|
355
319
|
#define LUT2_2_VOLLTEXT_IDX 124
|
356
320
|
#define LUT2_2_IBAN_REGEL 125
|
357
321
|
#define LUT2_2_IBAN_REGEL_SORT 126
|
322
|
+
#define LUT2_2_BIC_H_SORT 127
|
358
323
|
|
359
324
|
#define LUT2_DEFAULT 501
|
360
325
|
|
@@ -371,6 +336,8 @@ extern const char *lut2_feld_namen[256];
|
|
371
336
|
*/
|
372
337
|
|
373
338
|
#undef FALSE
|
339
|
+
#define IBAN_ONLY_GERMAN -147
|
340
|
+
#define INVALID_PARAMETER_TYPE -146
|
374
341
|
#define BIC_ONLY_GERMAN -145
|
375
342
|
#define INVALID_BIC_LENGTH -144
|
376
343
|
#define IBAN_CHKSUM_OK_RULE_IGNORED_BLZ -143
|
@@ -542,7 +509,8 @@ extern const char *lut2_feld_namen[256];
|
|
542
509
|
#define OK_HYPO_REQUIRES_KTO 23
|
543
510
|
#define OK_KTO_REPLACED_NO_PZ 24
|
544
511
|
#define OK_UNTERKONTO_ATTACHED 25
|
545
|
-
#
|
512
|
+
#define OK_SHORT_BIC_USED 26
|
513
|
+
#line 284 "konto_check_h.lx"
|
546
514
|
|
547
515
|
#define MAX_BLZ_CNT 30000 /* maximale Anzahl BLZ's in generate_lut() */
|
548
516
|
|
@@ -931,6 +899,7 @@ DLL_EXPORT int lut_multiple_i(int b,int *cnt,int **p_blz,char ***p_name,char ***
|
|
931
899
|
|
932
900
|
/* Funktionen, um einzelne Felder zu bestimmen (R�ckgabe direkt) */
|
933
901
|
DLL_EXPORT int lut_blz(char *b,int zweigstelle);
|
902
|
+
DLL_EXPORT int lut_blz_i(int b,int zweigstelle);
|
934
903
|
DLL_EXPORT int lut_filialen(char *b,int *retval);
|
935
904
|
DLL_EXPORT int lut_filialen_i(int b,int *retval);
|
936
905
|
DLL_EXPORT const char *lut_name(char *b,int zweigstelle,int *retval);
|
@@ -945,6 +914,8 @@ DLL_EXPORT int lut_pan(char *b,int zweigstelle,int *retval);
|
|
945
914
|
DLL_EXPORT int lut_pan_i(int b,int zweigstelle,int *retval);
|
946
915
|
DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval);
|
947
916
|
DLL_EXPORT const char *lut_bic_i(int b,int zweigstelle,int *retval);
|
917
|
+
DLL_EXPORT const char *lut_bic_h(char *b,int zweigstelle,int *retval);
|
918
|
+
DLL_EXPORT const char *lut_bic_hi(int b,int zweigstelle,int *retval);
|
948
919
|
DLL_EXPORT int lut_nr(char *b,int zweigstelle,int *retval);
|
949
920
|
DLL_EXPORT int lut_nr_i(int b,int zweigstelle,int *retval);
|
950
921
|
DLL_EXPORT int lut_pz(char *b,int zweigstelle,int *retval);
|
@@ -959,6 +930,48 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
959
930
|
DLL_EXPORT int lut_iban_regel(char *b,int zweigstelle,int *retval);
|
960
931
|
DLL_EXPORT int lut_iban_regel_i(int b,int zweigstelle,int *retval);
|
961
932
|
|
933
|
+
DLL_EXPORT int bic_aenderung(char *bic_name,int mode,int filiale,int*retval);
|
934
|
+
DLL_EXPORT int bic_loeschung(char *bic_name,int mode,int filiale,int*retval);
|
935
|
+
DLL_EXPORT int bic_iban_regel(char *bic_name,int mode,int filiale,int*retval);
|
936
|
+
DLL_EXPORT int bic_nachfolge_blz(char *bic_name,int mode,int filiale,int*retval);
|
937
|
+
DLL_EXPORT int bic_nr(char *bic_name,int mode,int filiale,int*retval);
|
938
|
+
DLL_EXPORT int bic_pan(char *bic_name,int mode,int filiale,int*retval);
|
939
|
+
DLL_EXPORT int bic_plz(char *bic_name,int mode,int filiale,int*retval);
|
940
|
+
DLL_EXPORT int bic_pz(char *bic_name,int mode,int filiale,int*retval);
|
941
|
+
DLL_EXPORT const char *bic_bic(char *bic_name,int mode,int filiale,int*retval);
|
942
|
+
DLL_EXPORT const char *bic_bic_h(char *bic_name,int mode,int filiale,int*retval);
|
943
|
+
DLL_EXPORT const char *bic_name(char *bic_name,int mode,int filiale,int*retval);
|
944
|
+
DLL_EXPORT const char *bic_name_kurz(char *bic_name,int mode,int filiale,int*retval);
|
945
|
+
DLL_EXPORT const char *bic_ort(char *bic_name,int mode,int filiale,int*retval);
|
946
|
+
|
947
|
+
DLL_EXPORT int biq_aenderung(int idx,int*retval);
|
948
|
+
DLL_EXPORT int biq_loeschung(int idx,int*retval);
|
949
|
+
DLL_EXPORT int biq_iban_regel(int idx,int*retval);
|
950
|
+
DLL_EXPORT int biq_nachfolge_blz(int idx,int*retval);
|
951
|
+
DLL_EXPORT int biq_nr(int idx,int*retval);
|
952
|
+
DLL_EXPORT int biq_pan(int idx,int*retval);
|
953
|
+
DLL_EXPORT int biq_plz(int idx,int*retval);
|
954
|
+
DLL_EXPORT int biq_pz(int idx,int*retval);
|
955
|
+
DLL_EXPORT const char *biq_bic(int idx,int*retval);
|
956
|
+
DLL_EXPORT const char *biq_bic_h(int idx,int*retval);
|
957
|
+
DLL_EXPORT const char *biq_name(int idx,int*retval);
|
958
|
+
DLL_EXPORT const char *biq_name_kurz(int idx,int*retval);
|
959
|
+
DLL_EXPORT const char *biq_ort(int idx,int*retval);
|
960
|
+
|
961
|
+
DLL_EXPORT int iban_aenderung(char *iban,int filiale,int*retval);
|
962
|
+
DLL_EXPORT int iban_loeschung(char *iban,int filiale,int*retval);
|
963
|
+
DLL_EXPORT int iban_iban_regel(char *iban,int filiale,int*retval);
|
964
|
+
DLL_EXPORT int iban_nachfolge_blz(char *iban,int filiale,int*retval);
|
965
|
+
DLL_EXPORT int iban_nr(char *iban,int filiale,int*retval);
|
966
|
+
DLL_EXPORT int iban_pan(char *iban,int filiale,int*retval);
|
967
|
+
DLL_EXPORT int iban_plz(char *iban,int filiale,int*retval);
|
968
|
+
DLL_EXPORT int iban_pz(char *iban,int filiale,int*retval);
|
969
|
+
DLL_EXPORT const char *iban_bic(char *iban,int filiale,int*retval);
|
970
|
+
DLL_EXPORT const char *iban_bic_h(char *iban,int filiale,int*retval);
|
971
|
+
DLL_EXPORT const char *iban_name(char *iban,int filiale,int*retval);
|
972
|
+
DLL_EXPORT const char *iban_name_kurz(char *iban,int filiale,int*retval);
|
973
|
+
DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval);
|
974
|
+
|
962
975
|
/*
|
963
976
|
* ######################################################################
|
964
977
|
* # Suche von Banken nach verschiedenen Kriterien #
|
@@ -974,6 +987,7 @@ DLL_EXPORT int lut_iban_regel_i(int b,int zweigstelle,int *retval);
|
|
974
987
|
#define LUT_SUCHE_PLZ 7
|
975
988
|
#define LUT_SUCHE_PZ 8
|
976
989
|
#define LUT_SUCHE_REGEL 9
|
990
|
+
#define LUT_SUCHE_BIC_H 10
|
977
991
|
|
978
992
|
/* Defaultwert f�r sort/uniq bei Suchfunktionen (=> nur eine Zweigstelle
|
979
993
|
* zur�ckgeben) (betrifft nur PHP, Perl und Ruby, bei denen der Parameter
|
@@ -990,6 +1004,7 @@ DLL_EXPORT int lut_iban_regel_i(int b,int zweigstelle,int *retval);
|
|
990
1004
|
DLL_EXPORT int kto_check_idx2blz(int idx,int *zweigstelle,int *retval);
|
991
1005
|
DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval);
|
992
1006
|
DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,char ***base_name,int **blz_base);
|
1007
|
+
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,char ***base_name,int **blz_base);
|
993
1008
|
DLL_EXPORT int lut_suche_namen(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,char ***base_name,int **blz_base);
|
994
1009
|
DLL_EXPORT int lut_suche_namen_kurz(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,char ***base_name,int **blz_base);
|
995
1010
|
DLL_EXPORT int lut_suche_ort(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,char ***base_name,int **blz_base);
|
@@ -1022,6 +1037,7 @@ DLL_EXPORT int lut_cleanup(void);
|
|
1022
1037
|
|
1023
1038
|
/* IBAN-Sachen */
|
1024
1039
|
DLL_EXPORT int ci_check(char *ci);
|
1040
|
+
DLL_EXPORT int bic_check(char *search_bic,int *cnt);
|
1025
1041
|
DLL_EXPORT int iban_check(char *iban,int *retval);
|
1026
1042
|
DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto);
|
1027
1043
|
DLL_EXPORT char *iban_gen(char *kto,char *blz,int *retval);
|
@@ -1030,6 +1046,9 @@ DLL_EXPORT char *iban_bic_gen1(char *blz,char *kto,const char **bicp,int *retval
|
|
1030
1046
|
DLL_EXPORT int ipi_gen(char *zweck,char *dst,char *papier);
|
1031
1047
|
DLL_EXPORT int ipi_check(char *zweck);
|
1032
1048
|
|
1049
|
+
/* BIC-Funktionen */
|
1050
|
+
DLL_EXPORT int bic_info(char *bic_name,int mode,int *anzahl,int *start_idx);
|
1051
|
+
|
1033
1052
|
/* R�ckgabewerte in Klartext umwandeln */
|
1034
1053
|
DLL_EXPORT int kto_check_encoding(int mode);
|
1035
1054
|
DLL_EXPORT int keep_raw_data(int mode);
|
@@ -65,7 +65,7 @@ vim: ft=c:set si:set fileencoding=utf-8
|
|
65
65
|
|
66
66
|
#define RUNTIME_ERROR(error) do{ \
|
67
67
|
snprintf(error_msg,511,"KontoCheck::%s, %s",kto_check_retval2txt_short(error),kto_check_retval2txt(error)); \
|
68
|
-
rb_raise(rb_eRuntimeError,error_msg); \
|
68
|
+
rb_raise(rb_eRuntimeError,"%s",error_msg); \
|
69
69
|
}while(0)
|
70
70
|
|
71
71
|
// Defining a space for information and references about the module to be stored internally
|
@@ -137,7 +137,7 @@ static void get_params_file(int argc,VALUE* argv,char *arg1s,int *arg1i,int *arg
|
|
137
137
|
break;
|
138
138
|
}
|
139
139
|
/* es muß genau ein Integer und ein String vorkommen: die Summe ist dann 3 */
|
140
|
-
if(typ1+typ2!=3)rb_raise(rb_eTypeError,"wrong type for filename or init level");
|
140
|
+
if(typ1+typ2!=3)rb_raise(rb_eTypeError,"%s","wrong type for filename or init level");
|
141
141
|
|
142
142
|
if(typ1==1){ /* Argumente: Level, Dateiname; Level setzen und die Argumente tauschen */
|
143
143
|
*arg1i=NUM2INT(v1_rb);
|
@@ -177,7 +177,7 @@ static void get_params_file(int argc,VALUE* argv,char *arg1s,int *arg1i,int *arg
|
|
177
177
|
*(arg1s+len)=0;
|
178
178
|
}
|
179
179
|
else
|
180
|
-
rb_raise(rb_eTypeError,"wrong type for filename");
|
180
|
+
rb_raise(rb_eTypeError,"%s","wrong type for filename");
|
181
181
|
}
|
182
182
|
|
183
183
|
/**
|
@@ -335,11 +335,6 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
335
335
|
rb_scan_args(argc,argv,"13",&arg1_rb,&arg2_rb,&arg3_rb,&arg4_rb);
|
336
336
|
maxlen=128;
|
337
337
|
break;
|
338
|
-
case 8: /* ein notwendiger Parameter (für bic_check) */
|
339
|
-
rb_scan_args(argc,argv,"10",&arg1_rb);
|
340
|
-
maxlen=11;
|
341
|
-
break;
|
342
|
-
|
343
338
|
|
344
339
|
default:
|
345
340
|
break;
|
@@ -366,9 +361,9 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
366
361
|
break;
|
367
362
|
default:
|
368
363
|
if(!arg_mode)
|
369
|
-
rb_raise(rb_eTypeError,"Unable to convert given blz.");
|
364
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given blz.");
|
370
365
|
else
|
371
|
-
rb_raise(rb_eTypeError,"Unable to convert given value.");
|
366
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given value.");
|
372
367
|
break;
|
373
368
|
}
|
374
369
|
if(arg_mode==2 || arg_mode==5)switch(TYPE(arg2_rb)){ /* für konto_check() und iban_gen(): kto holen */
|
@@ -383,7 +378,7 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
383
378
|
snprintf(arg2s,16,"%010.0f",NUM2DBL(arg2_rb));
|
384
379
|
break;
|
385
380
|
default:
|
386
|
-
rb_raise(rb_eTypeError,"Unable to convert given kto.");
|
381
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given kto.");
|
387
382
|
break;
|
388
383
|
}
|
389
384
|
if(arg_mode==5){ /* für konto_check_pz(): BLZ (optional) holen */
|
@@ -402,7 +397,7 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
402
397
|
snprintf(arg3s,16,"%5.0f",NUM2DBL(arg3_rb));
|
403
398
|
break;
|
404
399
|
default:
|
405
|
-
rb_raise(rb_eTypeError,"Unable to convert given blz.");
|
400
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given blz.");
|
406
401
|
break;
|
407
402
|
}
|
408
403
|
}
|
@@ -424,7 +419,7 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
424
419
|
if(tmp>=0)uniq=tmp;
|
425
420
|
break;
|
426
421
|
default:
|
427
|
-
rb_raise(rb_eTypeError,"Unable to convert given variable to integer or string");
|
422
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given variable to integer or string");
|
428
423
|
break;
|
429
424
|
}
|
430
425
|
|
@@ -448,7 +443,7 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
448
443
|
}
|
449
444
|
break;
|
450
445
|
default:
|
451
|
-
rb_raise(rb_eTypeError,"Unable to convert given variable to integer or string");
|
446
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given variable to integer or string");
|
452
447
|
break;
|
453
448
|
}
|
454
449
|
|
@@ -467,7 +462,7 @@ static void get_params(int argc,VALUE* argv,char *arg1s,char *arg2s,char *arg3s,
|
|
467
462
|
}
|
468
463
|
break;
|
469
464
|
default:
|
470
|
-
rb_raise(rb_eTypeError,"Unable to convert given variable to integer or string");
|
465
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given variable to integer or string");
|
471
466
|
break;
|
472
467
|
}
|
473
468
|
if(uniq>0)
|
@@ -565,7 +560,7 @@ static VALUE konto_check(int argc,VALUE* argv,VALUE self)
|
|
565
560
|
|
566
561
|
get_params(argc,argv,blz,kto,NULL,NULL,2);
|
567
562
|
if((*blz=='0' || strlen(blz)!=8) && lut_blz(kto+2,0)==OK) /* BLZ/Kto vertauscht, altes Interface */
|
568
|
-
rb_raise(rb_eRuntimeError,
|
563
|
+
rb_raise(rb_eRuntimeError,"%s","It seems that you use the old interface of konto_check?\n"
|
569
564
|
"Please check the order of function arguments for konto_test(); should be (blz,kto)");
|
570
565
|
if((retval=kto_check_blz(blz,kto))==LUT2_NOT_INITIALIZED || retval==MISSING_PARAMETER)RUNTIME_ERROR(retval);
|
571
566
|
return INT2FIX(retval);
|
@@ -599,7 +594,7 @@ static VALUE konto_check(int argc,VALUE* argv,VALUE self)
|
|
599
594
|
* * -127 IBAN_AMBIGUOUS_KTO "Die Kontonummer ist nicht eindeutig (es gibt mehrere Möglichkeiten)"
|
600
595
|
* * -125 IBAN_RULE_UNKNOWN "Die IBAN-Regel ist nicht bekannt"
|
601
596
|
* * -124 NO_IBAN_CALCULATION "Für die Bankverbindung ist keine IBAN-Berechnung erlaubt"
|
602
|
-
* * -112 KTO_CHECK_UNSUPPORTED_COMPRESSION "die notwendige Kompressions-Bibliothek
|
597
|
+
* * -112 KTO_CHECK_UNSUPPORTED_COMPRESSION "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden"
|
603
598
|
* * -77 BAV_FALSE "BAV denkt, das Konto ist falsch (konto_check hält es für richtig)"
|
604
599
|
* * -69 MISSING_PARAMETER "Für die aufgerufene Funktion fehlt ein notwendiger Parameter"
|
605
600
|
* * -64 INIT_FATAL_ERROR "Initialisierung fehlgeschlagen (init_wait geblockt)"
|
@@ -682,7 +677,7 @@ static VALUE konto_check_regel(int argc,VALUE* argv,VALUE self)
|
|
682
677
|
* * -127 IBAN_AMBIGUOUS_KTO "Die Kontonummer ist nicht eindeutig (es gibt mehrere Möglichkeiten)"
|
683
678
|
* * -125 IBAN_RULE_UNKNOWN "Die IBAN-Regel ist nicht bekannt"
|
684
679
|
* * -124 NO_IBAN_CALCULATION "Für die Bankverbindung ist keine IBAN-Berechnung erlaubt"
|
685
|
-
* * -112 KTO_CHECK_UNSUPPORTED_COMPRESSION "die notwendige Kompressions-Bibliothek
|
680
|
+
* * -112 KTO_CHECK_UNSUPPORTED_COMPRESSION "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden"
|
686
681
|
* * -77 BAV_FALSE "BAV denkt, das Konto ist falsch (konto_check hält es für richtig)"
|
687
682
|
* * -69 MISSING_PARAMETER "Für die aufgerufene Funktion fehlt ein notwendiger Parameter"
|
688
683
|
* * -64 INIT_FATAL_ERROR "Initialisierung fehlgeschlagen (init_wait geblockt)"
|
@@ -776,7 +771,7 @@ static VALUE lut_blocks_rb(int argc,VALUE* argv,VALUE self)
|
|
776
771
|
break;
|
777
772
|
default:
|
778
773
|
mode=1;
|
779
|
-
rb_raise(rb_eTypeError,"lut_blocks() requires an int parameter");
|
774
|
+
rb_raise(rb_eTypeError,"%s","lut_blocks() requires an int parameter");
|
780
775
|
break;
|
781
776
|
}
|
782
777
|
}
|
@@ -881,7 +876,7 @@ static VALUE lut_blocks1_rb(int argc,VALUE* argv,VALUE self)
|
|
881
876
|
* aufgetretene Fehler gibt.
|
882
877
|
*
|
883
878
|
* ====Mögliche Statuscodes:
|
884
|
-
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek
|
879
|
+
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden"
|
885
880
|
* * -64 (INIT_FATAL_ERROR) "Initialisierung fehlgeschlagen (init_wait geblockt)"
|
886
881
|
* * -63 (INCREMENTAL_INIT_NEEDS_INFO) "Ein inkrementelles Initialisieren benötigt einen Info-Block in der LUT-Datei"
|
887
882
|
* * -62 (INCREMENTAL_INIT_FROM_DIFFERENT_FILE) "Ein inkrementelles Initialisieren mit einer anderen LUT-Datei ist nicht möglich"
|
@@ -1000,13 +995,13 @@ static VALUE free_rb(VALUE self)
|
|
1000
995
|
* 9. BLZ,PZ,NAME_NAME_KURZ,PLZ,ORT,BIC,NACHFOLGE_BLZ,
|
1001
996
|
* AENDERUNG,LOESCHUNG,PAN,NR
|
1002
997
|
* * filialen: (0 oder 1) Flag, ob nur die Daten der Hauptstellen (0) oder auch die der Filialen aufgenommen werden sollen
|
1003
|
-
* * set (0, 1 oder 2): Datensatz-Nummer. Jede LUT-Datei kann zwei Datensätze enthalten. Falls bei der Initialisierung nicht ein bestimmter Datensatz ausgewählt wird, wird derjenige genommen, der (laut Gültigkeitsstring) aktuell gültig ist.
|
1004
|
-
* *
|
998
|
+
* * set (0, 1 oder 2): Datensatz-Nummer. Jede LUT-Datei kann zwei Datensätze enthalten. Falls bei der Initialisierung nicht ein bestimmter Datensatz ausgewählt wird, wird derjenige genommen, der (laut Gültigkeitsstring) aktuell gültig ist. Bei 0 wird eine neue LUT-Datei generiert, bei 1 oder 2 wird der entsprechende Datensatz angehängt.
|
999
|
+
* * iban_blacklist: Datei der Banken, die einer Selbstberechnung des IBAN nicht zugestimmt haben, bzw. von der IBAN-Berechnung ausgeschlossen werden sollen
|
1005
1000
|
*
|
1006
1001
|
* ====Rückgabe:
|
1007
1002
|
*
|
1008
1003
|
* ====Mögliche Statuscodes:
|
1009
|
-
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek
|
1004
|
+
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden"
|
1010
1005
|
* * -57 (LUT2_GUELTIGKEIT_SWAPPED) "Im Gültigkeitsdatum sind Anfangs- und Enddatum vertauscht"
|
1011
1006
|
* * -56 (LUT2_INVALID_GUELTIGKEIT) "Das angegebene Gültigkeitsdatum ist ungültig (Soll: JJJJMMTT-JJJJMMTT)"
|
1012
1007
|
* * -32 (LUT2_COMPRESS_ERROR) "Fehler beim Komprimieren eines LUT-Blocks"
|
@@ -1022,14 +1017,14 @@ static VALUE free_rb(VALUE self)
|
|
1022
1017
|
*/
|
1023
1018
|
static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
1024
1019
|
{
|
1025
|
-
char input_name[FILENAME_MAX+1],output_name[FILENAME_MAX+1],
|
1020
|
+
char input_name[FILENAME_MAX+1],output_name[FILENAME_MAX+1],iban_blacklist[FILENAME_MAX+1];
|
1026
1021
|
char user_info[256],gueltigkeit[20],buffer[16],error_msg[512];
|
1027
1022
|
int retval,felder,filialen,set,len;
|
1028
1023
|
VALUE input_name_rb,output_name_rb,user_info_rb,
|
1029
|
-
gueltigkeit_rb,felder_rb,filialen_rb,set_rb,
|
1024
|
+
gueltigkeit_rb,felder_rb,filialen_rb,set_rb,iban_blacklist_rb;
|
1030
1025
|
|
1031
1026
|
rb_scan_args(argc,argv,"26",&input_name_rb,&output_name_rb,
|
1032
|
-
&user_info_rb,&gueltigkeit_rb,&felder_rb,&filialen_rb,&set_rb,&
|
1027
|
+
&user_info_rb,&gueltigkeit_rb,&felder_rb,&filialen_rb,&set_rb,&iban_blacklist_rb);
|
1033
1028
|
|
1034
1029
|
if(TYPE(input_name_rb)==RUBY_T_STRING){
|
1035
1030
|
if((len=RSTRING_LEN(input_name_rb))>FILENAME_MAX)len=FILENAME_MAX;
|
@@ -1037,7 +1032,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
|
1037
1032
|
*(input_name+len)=0;
|
1038
1033
|
}
|
1039
1034
|
else
|
1040
|
-
rb_raise(rb_eTypeError,"Unable to convert given input filename.");
|
1035
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given input filename.");
|
1041
1036
|
|
1042
1037
|
if(TYPE(output_name_rb)==RUBY_T_STRING){
|
1043
1038
|
if((len=RSTRING_LEN(output_name_rb))>FILENAME_MAX)len=FILENAME_MAX;
|
@@ -1045,7 +1040,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
|
1045
1040
|
*(output_name+len)=0;
|
1046
1041
|
}
|
1047
1042
|
else
|
1048
|
-
rb_raise(rb_eTypeError,"Unable to convert given output filename.");
|
1043
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given output filename.");
|
1049
1044
|
|
1050
1045
|
if(NIL_P(user_info_rb)){
|
1051
1046
|
*user_info=0;
|
@@ -1056,7 +1051,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
|
1056
1051
|
*(user_info+len)=0;
|
1057
1052
|
}
|
1058
1053
|
else
|
1059
|
-
rb_raise(rb_eTypeError,"Unable to convert given user_info string.");
|
1054
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given user_info string.");
|
1060
1055
|
|
1061
1056
|
if(NIL_P(gueltigkeit_rb)){
|
1062
1057
|
*gueltigkeit=0;
|
@@ -1067,7 +1062,7 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
|
1067
1062
|
*(gueltigkeit+len)=0;
|
1068
1063
|
}
|
1069
1064
|
else
|
1070
|
-
rb_raise(rb_eTypeError,"Unable to convert given gueltigkeit string.");
|
1065
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given gueltigkeit string.");
|
1071
1066
|
|
1072
1067
|
if(NIL_P(felder_rb))
|
1073
1068
|
felder=DEFAULT_LUT_FIELDS_NUM;
|
@@ -1102,20 +1097,20 @@ static VALUE generate_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
|
1102
1097
|
else
|
1103
1098
|
set=NUM2INT(set_rb);
|
1104
1099
|
|
1105
|
-
if(NIL_P(
|
1106
|
-
*
|
1100
|
+
if(NIL_P(iban_blacklist_rb)){
|
1101
|
+
*iban_blacklist=0;
|
1107
1102
|
}
|
1108
|
-
else if(TYPE(
|
1109
|
-
if((len=RSTRING_LEN(
|
1110
|
-
strncpy(
|
1111
|
-
*(
|
1103
|
+
else if(TYPE(iban_blacklist_rb)==RUBY_T_STRING){
|
1104
|
+
if((len=RSTRING_LEN(iban_blacklist_rb))>FILENAME_MAX)len=FILENAME_MAX;
|
1105
|
+
strncpy(iban_blacklist,RSTRING_PTR(iban_blacklist_rb),len);
|
1106
|
+
*(iban_blacklist+len)=0;
|
1112
1107
|
}
|
1113
1108
|
else
|
1114
|
-
rb_raise(rb_eTypeError,"Unable to convert given iban file name to string.");
|
1109
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given iban file name to string.");
|
1115
1110
|
|
1116
1111
|
retval=generate_lut2_p(input_name,output_name,user_info,gueltigkeit,felder,filialen,0,0,set);
|
1117
1112
|
if(retval<0)RUNTIME_ERROR(retval);
|
1118
|
-
if(*
|
1113
|
+
if(*iban_blacklist)lut_keine_iban_berechnung(iban_blacklist,output_name,0);
|
1119
1114
|
return INT2FIX(retval);
|
1120
1115
|
}
|
1121
1116
|
|
@@ -1152,7 +1147,7 @@ static int enc_mode(int argc,VALUE *argv)
|
|
1152
1147
|
return NUM2INT(mode_rb);
|
1153
1148
|
break;
|
1154
1149
|
default:
|
1155
|
-
rb_raise(rb_eTypeError,"Unable to convert given value to int");
|
1150
|
+
rb_raise(rb_eTypeError,"%s","Unable to convert given value to int");
|
1156
1151
|
break;
|
1157
1152
|
}
|
1158
1153
|
}
|
@@ -1337,7 +1332,7 @@ static VALUE keep_raw_data_rb(VALUE self, VALUE mode_rb)
|
|
1337
1332
|
*/
|
1338
1333
|
static VALUE retval2txt_rb(VALUE self, VALUE retval)
|
1339
1334
|
{
|
1340
|
-
|
1335
|
+
return rb_str_new2(kto_check_retval2txt(FIX2INT(retval)));
|
1341
1336
|
}
|
1342
1337
|
|
1343
1338
|
/**
|
@@ -1358,7 +1353,7 @@ static VALUE retval2txt_rb(VALUE self, VALUE retval)
|
|
1358
1353
|
*/
|
1359
1354
|
static VALUE retval2iso_rb(VALUE self, VALUE retval)
|
1360
1355
|
{
|
1361
|
-
|
1356
|
+
return rb_str_new2(kto_check_retval2iso(FIX2INT(retval)));
|
1362
1357
|
}
|
1363
1358
|
|
1364
1359
|
/**
|
@@ -1379,7 +1374,7 @@ static VALUE retval2iso_rb(VALUE self, VALUE retval)
|
|
1379
1374
|
*/
|
1380
1375
|
static VALUE retval2txt_short_rb(VALUE self, VALUE retval)
|
1381
1376
|
{
|
1382
|
-
|
1377
|
+
return rb_str_new2(kto_check_retval2txt_short(FIX2INT(retval)));
|
1383
1378
|
}
|
1384
1379
|
|
1385
1380
|
/**
|
@@ -1400,7 +1395,7 @@ static VALUE retval2txt_short_rb(VALUE self, VALUE retval)
|
|
1400
1395
|
*/
|
1401
1396
|
static VALUE retval2dos_rb(VALUE self, VALUE retval)
|
1402
1397
|
{
|
1403
|
-
|
1398
|
+
return rb_str_new2(kto_check_retval2dos(FIX2INT(retval)));
|
1404
1399
|
}
|
1405
1400
|
|
1406
1401
|
/**
|
@@ -1421,7 +1416,7 @@ static VALUE retval2dos_rb(VALUE self, VALUE retval)
|
|
1421
1416
|
*/
|
1422
1417
|
static VALUE retval2html_rb(VALUE self, VALUE retval)
|
1423
1418
|
{
|
1424
|
-
|
1419
|
+
return rb_str_new2(kto_check_retval2html(FIX2INT(retval)));
|
1425
1420
|
}
|
1426
1421
|
|
1427
1422
|
/**
|
@@ -1442,7 +1437,7 @@ static VALUE retval2html_rb(VALUE self, VALUE retval)
|
|
1442
1437
|
*/
|
1443
1438
|
static VALUE retval2utf8_rb(VALUE self, VALUE retval)
|
1444
1439
|
{
|
1445
|
-
|
1440
|
+
return rb_str_new2(kto_check_retval2utf8(FIX2INT(retval)));
|
1446
1441
|
}
|
1447
1442
|
|
1448
1443
|
/**
|
@@ -1464,7 +1459,7 @@ static VALUE retval2utf8_rb(VALUE self, VALUE retval)
|
|
1464
1459
|
* Infostring nil zurückgegeben.
|
1465
1460
|
*
|
1466
1461
|
* ====Mögliche Statuscodes:
|
1467
|
-
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek
|
1462
|
+
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden"
|
1468
1463
|
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
1469
1464
|
* * -36 (LUT2_Z_MEM_ERROR) "Memory error in den ZLIB-Routinen"
|
1470
1465
|
* * -35 (LUT2_Z_DATA_ERROR) "Datenfehler im komprimierten LUT-Block"
|
@@ -1526,7 +1521,7 @@ static VALUE dump_lutfile_rb(int argc,VALUE* argv,VALUE self)
|
|
1526
1521
|
* * 5 (LUT2_NO_VALID_DATE) "Der Datenblock enthält kein Gültigkeitsdatum"
|
1527
1522
|
*
|
1528
1523
|
* ====Mögliche Werte für den Statuscode retval:
|
1529
|
-
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek
|
1524
|
+
* * -112 (KTO_CHECK_UNSUPPORTED_COMPRESSION) "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden"
|
1530
1525
|
* * -10 (FILE_READ_ERROR) "kann Datei nicht lesen"
|
1531
1526
|
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
1532
1527
|
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
@@ -1602,7 +1597,7 @@ static VALUE lut_info_rb(int argc,VALUE* argv,VALUE self)
|
|
1602
1597
|
|
1603
1598
|
static VALUE load_bank_data(VALUE self, VALUE path_rb)
|
1604
1599
|
{
|
1605
|
-
rb_raise(rb_eRuntimeError,
|
1600
|
+
rb_raise(rb_eRuntimeError,"%s","Perhaps you used the old interface of konto_check.\n"
|
1606
1601
|
"Use KontoCheck::init() to initialize the library\n"
|
1607
1602
|
"and check the order of function arguments for konto_test(blz,kto)");
|
1608
1603
|
}
|
@@ -1639,15 +1634,15 @@ static VALUE load_bank_data(VALUE self, VALUE path_rb)
|
|
1639
1634
|
*/
|
1640
1635
|
static VALUE iban2bic_rb(int argc,VALUE* argv,VALUE self)
|
1641
1636
|
{
|
1642
|
-
char iban[128],
|
1637
|
+
char iban[128],blz[10],kto[16];
|
1638
|
+
// char error_msg[512];
|
1643
1639
|
const char *bic;
|
1644
1640
|
int retval;
|
1645
1641
|
|
1646
1642
|
get_params(argc,argv,iban,NULL,NULL,NULL,3);
|
1647
1643
|
bic=iban2bic(iban,&retval,blz,kto);
|
1648
|
-
|
1649
|
-
|
1650
|
-
retval<=0?Qnil:rb_str_new2(blz),retval<=0?Qnil:rb_str_new2(kto));
|
1644
|
+
return rb_ary_new3(4,!*bic?Qnil:rb_str_new2(bic),INT2FIX(retval),
|
1645
|
+
!*blz?Qnil:rb_str_new2(blz),!*kto?Qnil:rb_str_new2(kto));
|
1651
1646
|
}
|
1652
1647
|
|
1653
1648
|
/**
|
@@ -1721,6 +1716,7 @@ static VALUE iban2bic_rb(int argc,VALUE* argv,VALUE self)
|
|
1721
1716
|
* * 22 (OK_INVALID_FOR_IBAN) "ok; für IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert"
|
1722
1717
|
* * 24 (OK_KTO_REPLACED_NO_PZ) "ok; die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Prüfziffer"
|
1723
1718
|
* * 25 (OK_UNTERKONTO_ATTACHED) "ok; es wurde ein (weggelassenes) Unterkonto angefügt"
|
1719
|
+
*
|
1724
1720
|
*/
|
1725
1721
|
static VALUE iban_gen_rb(int argc,VALUE* argv,VALUE self)
|
1726
1722
|
{
|
@@ -1760,25 +1756,31 @@ static VALUE iban_gen_rb(int argc,VALUE* argv,VALUE self)
|
|
1760
1756
|
* * ci: der CI, der getestet werden soll
|
1761
1757
|
*
|
1762
1758
|
* ====Mögliche Rückgabewerte für den Test:
|
1759
|
+
* * -146 (INVALID_PARAMETER_TYPE) "Falscher Parametertyp für die Funktion"
|
1763
1760
|
* * 0 (FALSE) "falsch"
|
1764
1761
|
* * 1 (OK) "ok"
|
1765
1762
|
*
|
1766
1763
|
*/
|
1767
|
-
static VALUE ci_check_rb(
|
1764
|
+
static VALUE ci_check_rb(VALUE self,VALUE ci_v)
|
1768
1765
|
{
|
1769
|
-
char ci[
|
1766
|
+
char ci[36];
|
1770
1767
|
|
1771
|
-
|
1768
|
+
if(TYPE(ci_v)!=RUBY_T_STRING)return INT2FIX(INVALID_PARAMETER_TYPE);
|
1769
|
+
strncpy(ci,RSTRING_PTR(ci_v),35);
|
1772
1770
|
return INT2FIX(ci_check(ci));
|
1773
1771
|
}
|
1774
1772
|
|
1775
1773
|
/**
|
1776
1774
|
* ===KontoCheckRaw::bic_check( bic)
|
1777
1775
|
* =====KontoCheck::bic_check( bic)
|
1778
|
-
* Diese Funktion testet
|
1779
|
-
*
|
1780
|
-
*
|
1781
|
-
* BIC
|
1776
|
+
* Diese Funktion testet die Existenz eines (deutschen) BIC. Die Rückgabe ist
|
1777
|
+
* ein Array mit zwei Elementen: im ersten (retval) wird das Testergebnis für
|
1778
|
+
* die zurückgegeben, im zweiten die Änzahl Banken, die diesen BIC benutzen.
|
1779
|
+
* Der BIC muß mit genau 8 oder 11 Stellen angegeben werden. Intern wird dabei
|
1780
|
+
* die Funktion lut_suche_bic() verwendet.
|
1781
|
+
*
|
1782
|
+
* Die Funktion arbeitet nur für deutsche Banken, da für andere keine Infos
|
1783
|
+
* vorliegen.
|
1782
1784
|
*
|
1783
1785
|
* ====Aufruf:
|
1784
1786
|
* ret=KontoCheckRaw::bic_check( bic)
|
@@ -1792,17 +1794,21 @@ static VALUE ci_check_rb(int argc,VALUE* argv,VALUE self)
|
|
1792
1794
|
* * das zweite Element enthält die Anzahl Banken, die diesen BIC benutzen
|
1793
1795
|
*
|
1794
1796
|
* ====Mögliche Rückgabewerte:
|
1795
|
-
* * -
|
1797
|
+
* * -146 (INVALID_PARAMETER_TYPE) "Falscher Parametertyp für die Funktion"
|
1798
|
+
* * -145 (BIC_ONLY_GERMAN) "Es werden nur deutsche BICs unterstützt"
|
1796
1799
|
* * -144 (INVALID_BIC_LENGTH) "Die Länge des BIC muß genau 8 oder 11 Zeichen sein"
|
1800
|
+
* * -74 (NO_GERMAN_BIC) "Ein Konto kann kann nur für deutsche Banken geprüft werden"
|
1797
1801
|
* * 0 (FALSE) "falsch"
|
1798
1802
|
* * 1 (OK) "ok"
|
1803
|
+
*
|
1799
1804
|
*/
|
1800
|
-
static VALUE bic_check_rb(
|
1805
|
+
static VALUE bic_check_rb(VALUE self,VALUE bic_v)
|
1801
1806
|
{
|
1802
1807
|
char bic[12];
|
1803
1808
|
int retval,cnt;
|
1804
1809
|
|
1805
|
-
|
1810
|
+
if(TYPE(bic_v)!=RUBY_T_STRING)return INT2FIX(INVALID_PARAMETER_TYPE);
|
1811
|
+
strncpy(bic,RSTRING_PTR(bic_v),11);
|
1806
1812
|
retval=bic_check(bic,&cnt);
|
1807
1813
|
return rb_ary_new3(2,INT2FIX(retval),INT2FIX(cnt));
|
1808
1814
|
}
|
@@ -1947,11 +1953,11 @@ static VALUE ipi_check_rb(int argc,VALUE* argv,VALUE self)
|
|
1947
1953
|
*
|
1948
1954
|
* Mögliche Rückgabewerte sind:
|
1949
1955
|
*
|
1950
|
-
*
|
1951
|
-
*
|
1952
|
-
*
|
1953
|
-
*
|
1954
|
-
*
|
1956
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
1957
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
1958
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
1959
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
1960
|
+
* * 1 (OK) "ok"
|
1955
1961
|
*/
|
1956
1962
|
static VALUE bank_valid(int argc,VALUE* argv,VALUE self)
|
1957
1963
|
{
|
@@ -1975,12 +1981,13 @@ static VALUE bank_valid(int argc,VALUE* argv,VALUE self)
|
|
1975
1981
|
*
|
1976
1982
|
* Mögliche Statuswerte sind:
|
1977
1983
|
*
|
1978
|
-
*
|
1979
|
-
*
|
1980
|
-
*
|
1981
|
-
*
|
1982
|
-
*
|
1983
|
-
*
|
1984
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
1985
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
1986
|
+
* * -52 (LUT2_FILIALEN_NOT_INITIALIZED) "Das Feld Filialen wurde nicht initialisiert"
|
1987
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
1988
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
1989
|
+
* * 1 (OK) "ok"
|
1990
|
+
*
|
1984
1991
|
*/
|
1985
1992
|
|
1986
1993
|
static VALUE bank_filialen(int argc,VALUE* argv,VALUE self)
|
@@ -2000,28 +2007,28 @@ static VALUE bank_filialen(int argc,VALUE* argv,VALUE self)
|
|
2000
2007
|
*
|
2001
2008
|
* Dies ist eine Mammutfunktion, die alle vorhandenen Informationen über eine
|
2002
2009
|
* Bank zurückliefert. Das Ergebnis ist ein Array mit den folgenden Komponenten:
|
2003
|
-
*
|
2004
|
-
*
|
2005
|
-
*
|
2006
|
-
*
|
2007
|
-
*
|
2008
|
-
*
|
2009
|
-
*
|
2010
|
-
*
|
2011
|
-
*
|
2012
|
-
*
|
2013
|
-
*
|
2014
|
-
*
|
2015
|
-
*
|
2010
|
+
* * 0: Statuscode
|
2011
|
+
* * 1: Anzahl Filialen
|
2012
|
+
* * 2: Name
|
2013
|
+
* * 3: Kurzname
|
2014
|
+
* * 4: PLZ
|
2015
|
+
* * 5: Ort
|
2016
|
+
* * 6: PAN
|
2017
|
+
* * 7: BIC
|
2018
|
+
* * 8: Prüfziffer
|
2019
|
+
* * 9: Laufende Nr.
|
2020
|
+
* * 10: Änderungs-Flag
|
2021
|
+
* * 11: Löeschung-Flag
|
2022
|
+
* * 12: Nachfolge-BLZ
|
2016
2023
|
*
|
2017
2024
|
* Der Statuscode (Element 0) kann folgende Werte annehmen:
|
2018
2025
|
*
|
2019
|
-
*
|
2020
|
-
*
|
2021
|
-
*
|
2022
|
-
*
|
2023
|
-
*
|
2024
|
-
*
|
2026
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2027
|
+
* * -38 (LUT2_PARTIAL_OK) "es wurden nicht alle Blocks geladen"
|
2028
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2029
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2030
|
+
* * 1 (OK) "ok"
|
2031
|
+
* *
|
2025
2032
|
* Anmerkung: Falls der Statuscode LUT2_PARTIAL_OK ist, wurden bei der
|
2026
2033
|
* Initialisierung nicht alle Blocks geladen (oder es sind nicht alle verfügbar);
|
2027
2034
|
* die entsprechenden Elemente haben dann den Wert nil.
|
@@ -2076,12 +2083,12 @@ static VALUE bank_alles(int argc,VALUE* argv,VALUE self)
|
|
2076
2083
|
*
|
2077
2084
|
* Mögliche Statuscodes:
|
2078
2085
|
*
|
2079
|
-
*
|
2080
|
-
*
|
2081
|
-
*
|
2082
|
-
*
|
2083
|
-
*
|
2084
|
-
*
|
2086
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2087
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2088
|
+
* * -51 (LUT2_NAME_NOT_INITIALIZED) "Das Feld Bankname wurde nicht initialisiert"
|
2089
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2090
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2091
|
+
* * 1 (OK) "ok"
|
2085
2092
|
*/
|
2086
2093
|
static VALUE bank_name(int argc,VALUE* argv,VALUE self)
|
2087
2094
|
{
|
@@ -2105,12 +2112,12 @@ static VALUE bank_name(int argc,VALUE* argv,VALUE self)
|
|
2105
2112
|
*
|
2106
2113
|
* Mögliche Statuscodes:
|
2107
2114
|
*
|
2108
|
-
*
|
2109
|
-
*
|
2110
|
-
*
|
2111
|
-
*
|
2112
|
-
*
|
2113
|
-
*
|
2115
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2116
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2117
|
+
* * -48 (LUT2_NAME_KURZ_NOT_INITIALIZED) "Das Feld Kurzname wurde nicht initialisiert"
|
2118
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2119
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2120
|
+
* * 1 (OK) "ok"
|
2114
2121
|
*/
|
2115
2122
|
static VALUE bank_name_kurz(int argc,VALUE* argv,VALUE self)
|
2116
2123
|
{
|
@@ -2136,12 +2143,12 @@ static VALUE bank_name_kurz(int argc,VALUE* argv,VALUE self)
|
|
2136
2143
|
*
|
2137
2144
|
* Mögliche Statuscodes:
|
2138
2145
|
*
|
2139
|
-
*
|
2140
|
-
*
|
2141
|
-
*
|
2142
|
-
*
|
2143
|
-
*
|
2144
|
-
*
|
2146
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2147
|
+
* * -49 (LUT2_ORT_NOT_INITIALIZED) "Das Feld Ort wurde nicht initialisiert"
|
2148
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2149
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2150
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2151
|
+
* * 1 (OK) "ok"
|
2145
2152
|
*/
|
2146
2153
|
static VALUE bank_ort(int argc,VALUE* argv,VALUE self)
|
2147
2154
|
{
|
@@ -2166,12 +2173,12 @@ static VALUE bank_ort(int argc,VALUE* argv,VALUE self)
|
|
2166
2173
|
*
|
2167
2174
|
* Mögliche Statuscodes:
|
2168
2175
|
*
|
2169
|
-
*
|
2170
|
-
*
|
2171
|
-
*
|
2172
|
-
*
|
2173
|
-
*
|
2174
|
-
*
|
2176
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2177
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2178
|
+
* * -50 (LUT2_PLZ_NOT_INITIALIZED) "Das Feld PLZ wurde nicht initialisiert"
|
2179
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2180
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2181
|
+
* * 1 (OK) "ok"
|
2175
2182
|
*/
|
2176
2183
|
static VALUE bank_plz(int argc,VALUE* argv,VALUE self)
|
2177
2184
|
{
|
@@ -2196,12 +2203,12 @@ static VALUE bank_plz(int argc,VALUE* argv,VALUE self)
|
|
2196
2203
|
*
|
2197
2204
|
* Mögliche Statuscodes:
|
2198
2205
|
*
|
2199
|
-
*
|
2200
|
-
*
|
2201
|
-
*
|
2202
|
-
*
|
2203
|
-
*
|
2204
|
-
*
|
2206
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2207
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2208
|
+
* * -45 (LUT2_PZ_NOT_INITIALIZED) "Das Feld Prüfziffer wurde nicht initialisiert"
|
2209
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2210
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2211
|
+
* * 1 (OK) "ok"
|
2205
2212
|
*/
|
2206
2213
|
static VALUE bank_pz(int argc,VALUE* argv,VALUE self)
|
2207
2214
|
{
|
@@ -2225,12 +2232,12 @@ static VALUE bank_pz(int argc,VALUE* argv,VALUE self)
|
|
2225
2232
|
*
|
2226
2233
|
* Mögliche Statuscodes:
|
2227
2234
|
*
|
2228
|
-
*
|
2229
|
-
*
|
2230
|
-
*
|
2231
|
-
*
|
2232
|
-
*
|
2233
|
-
*
|
2235
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2236
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2237
|
+
* * -46 (LUT2_BIC_NOT_INITIALIZED) "Das Feld BIC wurde nicht initialisiert"
|
2238
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2239
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2240
|
+
* * 1 (OK) "ok"
|
2234
2241
|
*/
|
2235
2242
|
static VALUE bank_bic(int argc,VALUE* argv,VALUE self)
|
2236
2243
|
{
|
@@ -2256,12 +2263,12 @@ static VALUE bank_bic(int argc,VALUE* argv,VALUE self)
|
|
2256
2263
|
*
|
2257
2264
|
* Mögliche Statuscodes:
|
2258
2265
|
*
|
2259
|
-
*
|
2260
|
-
*
|
2261
|
-
*
|
2262
|
-
*
|
2263
|
-
*
|
2264
|
-
*
|
2266
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2267
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2268
|
+
* * -43 (LUT2_AENDERUNG_NOT_INITIALIZED) "Das Feld Änderung wurde nicht initialisiert"
|
2269
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2270
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2271
|
+
* * 1 (OK) "ok"
|
2265
2272
|
*/
|
2266
2273
|
static VALUE bank_aenderung(int argc,VALUE* argv,VALUE self)
|
2267
2274
|
{
|
@@ -2286,12 +2293,12 @@ static VALUE bank_aenderung(int argc,VALUE* argv,VALUE self)
|
|
2286
2293
|
*
|
2287
2294
|
* Mögliche Statuscodes:
|
2288
2295
|
*
|
2289
|
-
*
|
2290
|
-
*
|
2291
|
-
*
|
2292
|
-
*
|
2293
|
-
*
|
2294
|
-
*
|
2296
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2297
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2298
|
+
* * -42 (LUT2_LOESCHUNG_NOT_INITIALIZED) "Das Feld Löschung wurde nicht initialisiert"
|
2299
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2300
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2301
|
+
* * 1 (OK) "ok"
|
2295
2302
|
*/
|
2296
2303
|
static VALUE bank_loeschung(int argc,VALUE* argv,VALUE self)
|
2297
2304
|
{
|
@@ -2315,12 +2322,12 @@ static VALUE bank_loeschung(int argc,VALUE* argv,VALUE self)
|
|
2315
2322
|
*
|
2316
2323
|
* Mögliche Statuscodes:
|
2317
2324
|
*
|
2318
|
-
*
|
2319
|
-
*
|
2320
|
-
*
|
2321
|
-
*
|
2322
|
-
*
|
2323
|
-
*
|
2325
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2326
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2327
|
+
* * -41 (LUT2_NACHFOLGE_BLZ_NOT_INITIALIZED) "Das Feld Nachfolge-BLZ wurde nicht initialisiert"
|
2328
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2329
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2330
|
+
* * 1 (OK) "ok"
|
2324
2331
|
*/
|
2325
2332
|
static VALUE bank_nachfolge_blz(int argc,VALUE* argv,VALUE self)
|
2326
2333
|
{
|
@@ -2343,12 +2350,12 @@ static VALUE bank_nachfolge_blz(int argc,VALUE* argv,VALUE self)
|
|
2343
2350
|
*
|
2344
2351
|
* Mögliche Statuscodes:
|
2345
2352
|
*
|
2346
|
-
*
|
2347
|
-
*
|
2348
|
-
*
|
2349
|
-
*
|
2350
|
-
*
|
2351
|
-
*
|
2353
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2354
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2355
|
+
* * -47 (LUT2_PAN_NOT_INITIALIZED) "Das Feld PAN wurde nicht initialisiert"
|
2356
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2357
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2358
|
+
* * 1 (OK) "ok"
|
2352
2359
|
*/
|
2353
2360
|
static VALUE bank_pan(int argc,VALUE* argv,VALUE self)
|
2354
2361
|
{
|
@@ -2375,12 +2382,12 @@ static VALUE bank_pan(int argc,VALUE* argv,VALUE self)
|
|
2375
2382
|
*
|
2376
2383
|
* Possible return values (and short description):
|
2377
2384
|
*
|
2378
|
-
*
|
2379
|
-
*
|
2380
|
-
*
|
2381
|
-
*
|
2382
|
-
*
|
2383
|
-
*
|
2385
|
+
* * -55 (LUT2_INDEX_OUT_OF_RANGE) "Der Index für die Filiale ist ungültig"
|
2386
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2387
|
+
* * -44 (LUT2_NR_NOT_INITIALIZED) "Das Feld NR wurde nicht initialisiert"
|
2388
|
+
* * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
|
2389
|
+
* * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
|
2390
|
+
* * 1 (OK) "ok"
|
2384
2391
|
*/
|
2385
2392
|
static VALUE bank_nr(int argc,VALUE* argv,VALUE self)
|
2386
2393
|
{
|
@@ -2550,12 +2557,12 @@ static VALUE bank_suche_int(int argc,VALUE* argv,VALUE self,int (*suchfkt_s)(cha
|
|
2550
2557
|
*
|
2551
2558
|
* Mögliche Statuscodes:
|
2552
2559
|
*
|
2553
|
-
*
|
2554
|
-
*
|
2555
|
-
*
|
2556
|
-
*
|
2557
|
-
*
|
2558
|
-
*
|
2560
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2561
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2562
|
+
* * -46 (LUT2_BIC_NOT_INITIALIZED) "Das Feld BIC wurde nicht initialisiert"
|
2563
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2564
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2565
|
+
* * 1 (OK) "ok"
|
2559
2566
|
*/
|
2560
2567
|
static VALUE bank_suche_bic(int argc,VALUE* argv,VALUE self)
|
2561
2568
|
{
|
@@ -2577,12 +2584,12 @@ static VALUE bank_suche_bic(int argc,VALUE* argv,VALUE self)
|
|
2577
2584
|
*
|
2578
2585
|
* Mögliche Statuscodes:
|
2579
2586
|
*
|
2580
|
-
*
|
2581
|
-
*
|
2582
|
-
*
|
2583
|
-
*
|
2584
|
-
*
|
2585
|
-
*
|
2587
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2588
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2589
|
+
* * -51 (LUT2_NAME_NOT_INITIALIZED) "Das Feld Bankname wurde nicht initialisiert"
|
2590
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2591
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2592
|
+
* * 1 (OK) "ok"
|
2586
2593
|
*/
|
2587
2594
|
static VALUE bank_suche_namen(int argc,VALUE* argv,VALUE self)
|
2588
2595
|
{
|
@@ -2604,12 +2611,12 @@ static VALUE bank_suche_namen(int argc,VALUE* argv,VALUE self)
|
|
2604
2611
|
*
|
2605
2612
|
* Mögliche Statuscodes:
|
2606
2613
|
*
|
2607
|
-
*
|
2608
|
-
*
|
2609
|
-
*
|
2610
|
-
*
|
2611
|
-
*
|
2612
|
-
*
|
2614
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2615
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2616
|
+
* * -48 (LUT2_NAME_KURZ_NOT_INITIALIZED) "Das Feld Kurzname wurde nicht initialisiert"
|
2617
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2618
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2619
|
+
* * 1 (OK) "ok"
|
2613
2620
|
*/
|
2614
2621
|
static VALUE bank_suche_namen_kurz(int argc,VALUE* argv,VALUE self)
|
2615
2622
|
{
|
@@ -2632,12 +2639,12 @@ static VALUE bank_suche_namen_kurz(int argc,VALUE* argv,VALUE self)
|
|
2632
2639
|
*
|
2633
2640
|
* Mögliche Statuscodes:
|
2634
2641
|
*
|
2635
|
-
*
|
2636
|
-
*
|
2637
|
-
*
|
2638
|
-
*
|
2639
|
-
*
|
2640
|
-
*
|
2642
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2643
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2644
|
+
* * -50 (LUT2_PLZ_NOT_INITIALIZED) "Das Feld PLZ wurde nicht initialisiert"
|
2645
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2646
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2647
|
+
* * 1 (OK) "ok"
|
2641
2648
|
*/
|
2642
2649
|
static VALUE bank_suche_plz(int argc,VALUE* argv,VALUE self)
|
2643
2650
|
{
|
@@ -2660,12 +2667,12 @@ static VALUE bank_suche_plz(int argc,VALUE* argv,VALUE self)
|
|
2660
2667
|
*
|
2661
2668
|
* Mögliche Statuscodes:
|
2662
2669
|
*
|
2663
|
-
*
|
2664
|
-
*
|
2665
|
-
*
|
2666
|
-
*
|
2667
|
-
*
|
2668
|
-
*
|
2670
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2671
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2672
|
+
* * -45 (LUT2_PZ_NOT_INITIALIZED) "Das Feld Prüfziffer wurde nicht initialisiert"
|
2673
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2674
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2675
|
+
* * 1 (OK) "ok"
|
2669
2676
|
*/
|
2670
2677
|
static VALUE bank_suche_pz(int argc,VALUE* argv,VALUE self)
|
2671
2678
|
{
|
@@ -2688,12 +2695,12 @@ static VALUE bank_suche_pz(int argc,VALUE* argv,VALUE self)
|
|
2688
2695
|
*
|
2689
2696
|
* Mögliche Statuscodes:
|
2690
2697
|
*
|
2691
|
-
*
|
2692
|
-
*
|
2693
|
-
*
|
2694
|
-
*
|
2695
|
-
*
|
2696
|
-
*
|
2698
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2699
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2700
|
+
* * -53 (LUT2_BLZ_NOT_INITIALIZED) "Das Feld BLZ wurde nicht initialisiert"
|
2701
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2702
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2703
|
+
* * 1 (OK) "ok"
|
2697
2704
|
*/
|
2698
2705
|
static VALUE bank_suche_blz(int argc,VALUE* argv,VALUE self)
|
2699
2706
|
{
|
@@ -2715,12 +2722,12 @@ static VALUE bank_suche_blz(int argc,VALUE* argv,VALUE self)
|
|
2715
2722
|
*
|
2716
2723
|
* Mögliche Statuscodes:
|
2717
2724
|
*
|
2718
|
-
*
|
2719
|
-
*
|
2720
|
-
*
|
2721
|
-
*
|
2722
|
-
*
|
2723
|
-
*
|
2725
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2726
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2727
|
+
* * -49 (LUT2_ORT_NOT_INITIALIZED) "Das Feld Ort wurde nicht initialisiert"
|
2728
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2729
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2730
|
+
* * 1 (OK) "ok"
|
2724
2731
|
*/
|
2725
2732
|
static VALUE bank_suche_ort(int argc,VALUE* argv,VALUE self)
|
2726
2733
|
{
|
@@ -2743,12 +2750,12 @@ static VALUE bank_suche_ort(int argc,VALUE* argv,VALUE self)
|
|
2743
2750
|
*
|
2744
2751
|
* Mögliche Statuscodes:
|
2745
2752
|
*
|
2746
|
-
*
|
2747
|
-
*
|
2748
|
-
*
|
2749
|
-
*
|
2750
|
-
*
|
2751
|
-
*
|
2753
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2754
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2755
|
+
* * -45 (LUT2_PZ_NOT_INITIALIZED) "Das Feld Prüfziffer wurde nicht initialisiert"
|
2756
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2757
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2758
|
+
* * 1 (OK) "ok"
|
2752
2759
|
*/
|
2753
2760
|
static VALUE bank_suche_regel(int argc,VALUE* argv,VALUE self)
|
2754
2761
|
{
|
@@ -2765,21 +2772,21 @@ static VALUE bank_suche_regel(int argc,VALUE* argv,VALUE self)
|
|
2765
2772
|
* LUT2_VOLLTEXT_SINGLE_WORD_ONLY zurückgegeben. Die Rückgabe ist ein Array mit
|
2766
2773
|
* fünf Elementen:
|
2767
2774
|
*
|
2768
|
-
*
|
2769
|
-
*
|
2770
|
-
*
|
2771
|
-
*
|
2772
|
-
*
|
2775
|
+
* * Das erste Element ist ein Array mit den gefundenen Suchworten
|
2776
|
+
* * Das zweite Element ist ein Array mit den Bankleitzahlen, die auf das Suchmuster passen
|
2777
|
+
* * Das dritte Element ist ein Array mit den Zweigstellen-Indizes der gefundenen Bankleitzahlen
|
2778
|
+
* * das vierte Element ist der Statuscode (s.u.)
|
2779
|
+
* * das fünfte Element gibt die Anzahl der gefundenen Banken zurück.
|
2773
2780
|
*
|
2774
2781
|
* Mögliche Statuscodes:
|
2775
2782
|
*
|
2776
|
-
*
|
2777
|
-
*
|
2778
|
-
*
|
2779
|
-
*
|
2780
|
-
*
|
2781
|
-
*
|
2782
|
-
*
|
2783
|
+
* * -118 (LUT2_VOLLTEXT_SINGLE_WORD_ONLY) "Die Volltextsuche sucht jeweils nur ein einzelnes Wort; benutzen Sie bank_suche_multiple() zur Suche nach mehreren Worten"
|
2784
|
+
* * -114 (LUT2_VOLLTEXT_NOT_INITIALIZED) "Das Feld Volltext wurde nicht initialisiert"
|
2785
|
+
* * -78 (KEY_NOT_FOUND) "Die Suche lieferte kein Ergebnis"
|
2786
|
+
* * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
|
2787
|
+
* * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
|
2788
|
+
* * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
|
2789
|
+
* * 1 (OK) "ok"
|
2783
2790
|
*/
|
2784
2791
|
static VALUE bank_suche_volltext(int argc,VALUE* argv,VALUE self)
|
2785
2792
|
{
|
@@ -2982,11 +2989,11 @@ void Init_konto_check_raw()
|
|
2982
2989
|
/*
|
2983
2990
|
* This is a C/Ruby library to check the validity of German Bank Account
|
2984
2991
|
* Numbers. All currently defined test methods by Deutsche Bundesbank
|
2985
|
-
* (
|
2992
|
+
* (00 to E1) are implemented.
|
2986
2993
|
*
|
2987
2994
|
* <b>ATTENTION:</b> There are a few important changes in the API between
|
2988
2995
|
* version 0.0.2 (version by Peter Horn/Provideal), version 0.0.6 (jeanmartin)
|
2989
|
-
* and this version:
|
2996
|
+
* and this version (V. 5.3 from 2014-03-03):
|
2990
2997
|
*
|
2991
2998
|
* * The function KontoCheck::load_bank_data() is no longer used; it is
|
2992
2999
|
* replaced by KontoCheck::init() and KontoCheck::generate_lutfile().
|
@@ -3107,6 +3114,7 @@ void Init_konto_check_raw()
|
|
3107
3114
|
rb_define_module_function(KontoCheck,"retval2utf8",retval2utf8_rb,1);
|
3108
3115
|
rb_define_module_function(KontoCheck,"generate_lutfile",generate_lutfile_rb,-1);
|
3109
3116
|
rb_define_module_function(KontoCheck,"ci_check",ci_check_rb,1);
|
3117
|
+
rb_define_module_function(KontoCheck,"bic_check",bic_check_rb,1);
|
3110
3118
|
rb_define_module_function(KontoCheck,"iban_check",iban_check_rb,-1);
|
3111
3119
|
rb_define_module_function(KontoCheck,"iban2bic",iban2bic_rb,-1);
|
3112
3120
|
rb_define_module_function(KontoCheck,"iban_gen",iban_gen_rb,-1);
|
@@ -3126,11 +3134,15 @@ void Init_konto_check_raw()
|
|
3126
3134
|
rb_define_module_function(KontoCheck,"load_bank_data",load_bank_data,1);
|
3127
3135
|
|
3128
3136
|
/* Rückgabewerte der konto_check Bibliothek */
|
3137
|
+
/* (-147) Es werden nur deutsche IBANs unterstützt */
|
3138
|
+
rb_define_const(KontoCheck,"IBAN_ONLY_GERMAN",INT2FIX(IBAN_ONLY_GERMAN));
|
3139
|
+
/* (-146) Falscher Parametertyp für die Funktion */
|
3140
|
+
rb_define_const(KontoCheck,"INVALID_PARAMETER_TYPE",INT2FIX(INVALID_PARAMETER_TYPE));
|
3129
3141
|
/* (-145) Es werden nur deutsche BICs unterstützt */
|
3130
3142
|
rb_define_const(KontoCheck,"BIC_ONLY_GERMAN",INT2FIX(BIC_ONLY_GERMAN));
|
3131
3143
|
/* (-144) Die Länge des BIC muß genau 8 oder 11 Zeichen sein */
|
3132
3144
|
rb_define_const(KontoCheck,"INVALID_BIC_LENGTH",INT2FIX(INVALID_BIC_LENGTH));
|
3133
|
-
/* (-143) Die IBAN-Prüfsumme stimmt,
|
3145
|
+
/* (-143) Die IBAN-Prüfsumme stimmt, die BLZ sollte aber durch eine zentrale BLZ ersetzt werden. Die Richtigkeit der IBAN kann nur mit einer Anfrage bei der Bank ermittelt werden */
|
3134
3146
|
rb_define_const(KontoCheck,"IBAN_CHKSUM_OK_RULE_IGNORED_BLZ",INT2FIX(IBAN_CHKSUM_OK_RULE_IGNORED_BLZ));
|
3135
3147
|
/* (-142) Die IBAN-Prüfsumme stimmt, konto_check wurde jedoch noch nicht initialisiert (Kontoprüfung nicht möglich) */
|
3136
3148
|
rb_define_const(KontoCheck,"IBAN_CHKSUM_OK_KC_NOT_INITIALIZED",INT2FIX(IBAN_CHKSUM_OK_KC_NOT_INITIALIZED));
|
@@ -3154,7 +3166,7 @@ void Init_konto_check_raw()
|
|
3154
3166
|
rb_define_const(KontoCheck,"BLZ_MARKED_AS_DELETED",INT2FIX(BLZ_MARKED_AS_DELETED));
|
3155
3167
|
/* (-132) Die IBAN-Prüfsumme stimmt, es gibt allerdings einen Fehler in der eigenen IBAN-Bestimmung (wahrscheinlich falsch) */
|
3156
3168
|
rb_define_const(KontoCheck,"IBAN_CHKSUM_OK_SOMETHING_WRONG",INT2FIX(IBAN_CHKSUM_OK_SOMETHING_WRONG));
|
3157
|
-
/* (-131) Die IBAN-Prüfsumme stimmt,
|
3169
|
+
/* (-131) Die IBAN-Prüfsumme stimmt. Die Bank gibt IBANs nach nicht veröffentlichten Regeln heraus, die Richtigkeit der IBAN kann nur mit einer Anfrage bei der Bank ermittelt werden */
|
3158
3170
|
rb_define_const(KontoCheck,"IBAN_CHKSUM_OK_NO_IBAN_CALCULATION",INT2FIX(IBAN_CHKSUM_OK_NO_IBAN_CALCULATION));
|
3159
3171
|
/* (-130) Die IBAN-Prüfsumme stimmt, es wurde allerdings eine IBAN-Regel nicht beachtet (wahrscheinlich falsch) */
|
3160
3172
|
rb_define_const(KontoCheck,"IBAN_CHKSUM_OK_RULE_IGNORED",INT2FIX(IBAN_CHKSUM_OK_RULE_IGNORED));
|
@@ -3184,15 +3196,15 @@ void Init_konto_check_raw()
|
|
3184
3196
|
rb_define_const(KontoCheck,"LUT2_VOLLTEXT_SINGLE_WORD_ONLY",INT2FIX(LUT2_VOLLTEXT_SINGLE_WORD_ONLY));
|
3185
3197
|
/* (-117) die angegebene Suchresource ist ungültig */
|
3186
3198
|
rb_define_const(KontoCheck,"LUT_SUCHE_INVALID_RSC",INT2FIX(LUT_SUCHE_INVALID_RSC));
|
3187
|
-
/* (-116) Suche
|
3199
|
+
/* (-116) bei der Suche sind im Verknüpfungsstring nur die Zeichen a-z sowie + und - erlaubt */
|
3188
3200
|
rb_define_const(KontoCheck,"LUT_SUCHE_INVALID_CMD",INT2FIX(LUT_SUCHE_INVALID_CMD));
|
3189
|
-
/* (-115) Suche
|
3201
|
+
/* (-115) bei der Suche müssen zwischen 1 und 26 Suchmuster angegeben werden */
|
3190
3202
|
rb_define_const(KontoCheck,"LUT_SUCHE_INVALID_CNT",INT2FIX(LUT_SUCHE_INVALID_CNT));
|
3191
3203
|
/* (-114) Das Feld Volltext wurde nicht initialisiert */
|
3192
3204
|
rb_define_const(KontoCheck,"LUT2_VOLLTEXT_NOT_INITIALIZED",INT2FIX(LUT2_VOLLTEXT_NOT_INITIALIZED));
|
3193
3205
|
/* (-113) das Institut erlaubt keine eigene IBAN-Berechnung */
|
3194
3206
|
rb_define_const(KontoCheck,"NO_OWN_IBAN_CALCULATION",INT2FIX(NO_OWN_IBAN_CALCULATION));
|
3195
|
-
/* (-112) die notwendige Kompressions-Bibliothek
|
3207
|
+
/* (-112) die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden */
|
3196
3208
|
rb_define_const(KontoCheck,"KTO_CHECK_UNSUPPORTED_COMPRESSION",INT2FIX(KTO_CHECK_UNSUPPORTED_COMPRESSION));
|
3197
3209
|
/* (-111) der angegebene Wert für die Default-Kompression ist ungültig */
|
3198
3210
|
rb_define_const(KontoCheck,"KTO_CHECK_INVALID_COMPRESSION_LIB",INT2FIX(KTO_CHECK_INVALID_COMPRESSION_LIB));
|
@@ -3304,7 +3316,7 @@ void Init_konto_check_raw()
|
|
3304
3316
|
rb_define_const(KontoCheck,"LUT2_NO_LONGER_VALID",INT2FIX(LUT2_NO_LONGER_VALID));
|
3305
3317
|
/* (-57) Im Gültigkeitsdatum sind Anfangs- und Enddatum vertauscht */
|
3306
3318
|
rb_define_const(KontoCheck,"LUT2_GUELTIGKEIT_SWAPPED",INT2FIX(LUT2_GUELTIGKEIT_SWAPPED));
|
3307
|
-
/* (-56) Das angegebene Gültigkeitsdatum ist ungültig (
|
3319
|
+
/* (-56) Das angegebene Gültigkeitsdatum ist ungültig (Sollformat ist JJJJMMTT-JJJJMMTT) */
|
3308
3320
|
rb_define_const(KontoCheck,"LUT2_INVALID_GUELTIGKEIT",INT2FIX(LUT2_INVALID_GUELTIGKEIT));
|
3309
3321
|
/* (-55) Der Index für die Filiale ist ungültig */
|
3310
3322
|
rb_define_const(KontoCheck,"LUT2_INDEX_OUT_OF_RANGE",INT2FIX(LUT2_INDEX_OUT_OF_RANGE));
|
@@ -3456,11 +3468,11 @@ void Init_konto_check_raw()
|
|
3456
3468
|
rb_define_const(KontoCheck,"OK_KTO_REPLACED",INT2FIX(OK_KTO_REPLACED));
|
3457
3469
|
/* (19) ok, die Bankleitzahl wurde allerdings ersetzt */
|
3458
3470
|
rb_define_const(KontoCheck,"OK_BLZ_REPLACED",INT2FIX(OK_BLZ_REPLACED));
|
3459
|
-
/* (20) ok, die Bankleitzahl und Kontonummer
|
3471
|
+
/* (20) ok, die Bankleitzahl und Kontonummer wurden allerdings ersetzt */
|
3460
3472
|
rb_define_const(KontoCheck,"OK_BLZ_KTO_REPLACED",INT2FIX(OK_BLZ_KTO_REPLACED));
|
3461
3473
|
/* (21) ok, die Bankverbindung ist (ohne Test) als richtig anzusehen */
|
3462
3474
|
rb_define_const(KontoCheck,"OK_IBAN_WITHOUT_KC_TEST",INT2FIX(OK_IBAN_WITHOUT_KC_TEST));
|
3463
|
-
/* (22) ok, für IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert */
|
3475
|
+
/* (22) ok, für die die IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert */
|
3464
3476
|
rb_define_const(KontoCheck,"OK_INVALID_FOR_IBAN",INT2FIX(OK_INVALID_FOR_IBAN));
|
3465
3477
|
/* (23) ok, für die BIC-Bestimmung der ehemaligen Hypo-Bank für IBAN wird i.A. zusätzlich die Kontonummer benötigt */
|
3466
3478
|
rb_define_const(KontoCheck,"OK_HYPO_REQUIRES_KTO",INT2FIX(OK_HYPO_REQUIRES_KTO));
|
@@ -3468,4 +3480,6 @@ void Init_konto_check_raw()
|
|
3468
3480
|
rb_define_const(KontoCheck,"OK_KTO_REPLACED_NO_PZ",INT2FIX(OK_KTO_REPLACED_NO_PZ));
|
3469
3481
|
/* (25) ok, es wurde ein (weggelassenes) Unterkonto angefügt */
|
3470
3482
|
rb_define_const(KontoCheck,"OK_UNTERKONTO_ATTACHED",INT2FIX(OK_UNTERKONTO_ATTACHED));
|
3483
|
+
/* (26) ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt */
|
3484
|
+
rb_define_const(KontoCheck,"OK_SHORT_BIC_USED",INT2FIX(OK_SHORT_BIC_USED));
|
3471
3485
|
}
|