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
data/LICENSE
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
Copyright (c) 2010-
|
1
|
+
Copyright (c) 2010-2012 Peter Horn, Jan Schwenzien, Michael Plugge
|
2
|
+
Copyright (c) 2013 Michael Plugge
|
2
3
|
|
3
4
|
This program is free software: you can redistribute it and/or modify
|
4
5
|
it under the terms of the GNU General Public License as published by
|
@@ -16,6 +17,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
17
|
ACKNOWLEDGEMENT
|
17
18
|
|
18
19
|
This software is entirely based on the C library konto_check
|
19
|
-
http://www.informatik.hs-mannheim.de/konto_check/
|
20
20
|
http://sourceforge.net/projects/kontocheck/
|
21
21
|
by Michael Plugge.
|
data/README.textile
CHANGED
@@ -4,10 +4,10 @@ Check whether a certain bic/account-no-combination can possibly be valid for a G
|
|
4
4
|
retrieve certain infos from the blz file and search for banks matching different criteria,
|
5
5
|
convert bic/account into IBAN and BIC, test IBAN or BIC...
|
6
6
|
|
7
|
-
It uses the C library konto_check
|
7
|
+
It uses the C library konto_check available at <a href="http://sourceforge.net/projects/kontocheck" target="_blank">sourceforge</a> by
|
8
8
|
Michael Plugge.
|
9
9
|
|
10
|
-
h2.
|
10
|
+
h2. A few Examples
|
11
11
|
|
12
12
|
An example tends to tell more than a 1000 words:
|
13
13
|
|
@@ -15,23 +15,73 @@ An example tends to tell more than a 1000 words:
|
|
15
15
|
>> require "konto_check"
|
16
16
|
true
|
17
17
|
|
18
|
+
# initialize the library
|
18
19
|
>> KontoCheck::init
|
19
20
|
1
|
20
21
|
|
21
|
-
|
22
|
+
# use UTF-8 encoding
|
23
|
+
>> KontoCheck::encoding 'u'
|
24
|
+
2
|
25
|
+
|
26
|
+
# check a bic/account combination
|
27
|
+
>> KontoCheck::konto_check("52250030","52001")
|
22
28
|
true
|
23
29
|
|
30
|
+
# retrieve a bank name
|
24
31
|
>> KontoCheck::bank_name("10010010")
|
25
32
|
"Postbank"
|
26
33
|
|
34
|
+
# search banks with "eifel"
|
35
|
+
>> eifel=KontoCheckRaw::bank_suche_volltext 'eifel'
|
36
|
+
[["Eifel"],
|
37
|
+
[37069303, 37069342, 37069642, 37069720, 39050000, 39550110, 57069067, 57069144, 57650010, 57751310, 57761591, 58650030, 58651240, 58660101, 58661901, 58668818, 58691500, 58751230, 58760954],
|
38
|
+
[2, 0, 1, 0, 6, 14, 2, 2, 1, 13, 18, 6, 2, 2, 1, 0, 0, 0, 1],
|
39
|
+
1, 19]
|
40
|
+
# show some resuts
|
41
|
+
>> b=eifel[1]; f=eifel[2]; maxidx=eifel[4]-1
|
42
|
+
>> (10..maxidx).each{|i| printf("%s (Fil.%2d) %s, %s\n",b[i],f[i],KontoCheck::bank_name(b[i],f[i]),KontoCheck::bank_ort(b[i],f[i])) }
|
43
|
+
57761591 (Fil.18) Volksbank RheinAhrEifel, Uersfeld, Eifel
|
44
|
+
58650030 (Fil. 6) Kreissparkasse Bitburg-Prüm, Bettingen, Eifel
|
45
|
+
58651240 (Fil. 2) Kreissparkasse Vulkaneifel, Hillesheim, Eifel
|
46
|
+
58660101 (Fil. 2) Volksbank Bitburg, Bettingen, Eifel
|
47
|
+
58661901 (Fil. 1) Raiffeisenbank Westeifel, Burbach, Eifel
|
48
|
+
58668818 (Fil. 0) Raiffeisenbank Neuerburg-Land -alt-, Neuerburg, Eifel
|
49
|
+
58691500 (Fil. 0) Volksbank Eifel Mitte, Prüm
|
50
|
+
58751230 (Fil. 0) Sparkasse Mittelmosel-Eifel Mosel Hunsrück, Bernkastel-Kues
|
51
|
+
58760954 (Fil. 1) Vereinigte Volksbank Raiffeisenbank, Landscheid, Eifel
|
52
|
+
|
53
|
+
# test an IBAN
|
54
|
+
>> KontoCheck::iban_check "DE03683515573047232594"
|
55
|
+
1
|
56
|
+
|
57
|
+
# check of an invalid IBAN with correct IBAN checksum
|
58
|
+
>> KontoCheck::retval2txt KontoCheck::iban_check 'DE80200500000000101105'
|
59
|
+
"Die IBAN-Prüfsumme stimmt, es wurde allerdings eine IBAN-Regel nicht beachtet (wahrscheinlich falsch)"
|
60
|
+
# extract bic and account from IBAN
|
61
|
+
>> KontoCheckRaw::iban2bic 'DE80200500000000101105'
|
62
|
+
["HSHNDEHHXXX", -130, "20050000", "0000101105"]
|
63
|
+
# generate the IBAN again using IBAN rules
|
64
|
+
>> KontoCheckRaw::iban_gen "20050000", "0000101105"
|
65
|
+
["DE32210500000101105000", "DE32 2105 0000 0101 1050 00", 20, "HSHNDEHHXXX", "21050000", "0101105000", 36]
|
66
|
+
|
67
|
+
# generate an IBAN using the low-level interface KontoCheckRaw::
|
27
68
|
>> KontoCheckRaw::iban_gen('68351976','1116232594')
|
28
69
|
["DE03683515573047232594", "DE03 6835 1557 3047 2325 94", 20, "SOLADES1SFH", "68351557", "3047232594", 9]
|
29
|
-
|
70
|
+
# once again using the high-level interface KontoCheck::
|
30
71
|
>> KontoCheck::iban_gen('68351976','1116232594')
|
31
72
|
"DE03683515573047232594"
|
32
73
|
</pre>
|
33
74
|
|
75
|
+
h2. Data file
|
76
|
+
|
77
|
+
To use the library, you need (of course) the current Bank Data. KontoCheck uses an own compressed format
|
78
|
+
to hold the bank data distributed by the Deutsche Bundesbank. You can generate the file yourself using
|
79
|
+
the function KontoCheck::generate_lutfile() or use the file from
|
80
|
+
<a href="http://sourceforge.net/projects/kontocheck/files/konto_check-de/5.2/blz.lut2f/download" target="_blank">SourceForge.net</a>.
|
81
|
+
For further information have look at
|
82
|
+
<a href="http://kontocheck.sourceforge.net/?ausgabe=4&sub=5" target="_blank">this page</a>.
|
83
|
+
|
34
84
|
h2. License
|
35
85
|
|
36
|
-
Since the
|
86
|
+
Since the <a href="http://sourceforge.net/projects/kontocheck" target="_blank">original</a> is
|
37
87
|
licensed under LGPL, so is this module.
|
@@ -13,7 +13,7 @@
|
|
13
13
|
* # wurden aus der aktuellen BLZ-Datei der Deutschen Bundesbank #
|
14
14
|
* # �bernommen. #
|
15
15
|
* # #
|
16
|
-
* # Copyright (C) 2002-
|
16
|
+
* # Copyright (C) 2002-2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
17
17
|
* # #
|
18
18
|
* # Dieses Programm ist freie Software; Sie d�rfen es unter den #
|
19
19
|
* # Bedingungen der GNU Lesser General Public License, wie von der Free #
|
@@ -45,13 +45,12 @@
|
|
45
45
|
* # im Internet herunterladen. #
|
46
46
|
* ##########################################################################
|
47
47
|
*/
|
48
|
-
#line 309 "konto_check.lxx"
|
49
48
|
|
50
49
|
/* Definitionen und Includes */
|
51
50
|
#ifndef VERSION
|
52
|
-
#define VERSION "5.3 (
|
51
|
+
#define VERSION "5.3 (final)"
|
53
52
|
#endif
|
54
|
-
#define VERSION_DATE "
|
53
|
+
#define VERSION_DATE "2014-03-03"
|
55
54
|
|
56
55
|
#ifndef INCLUDE_KONTO_CHECK_DE
|
57
56
|
#define INCLUDE_KONTO_CHECK_DE 1
|
@@ -102,7 +101,7 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
|
|
102
101
|
#define KONTO_CHECK_VARS
|
103
102
|
#include "konto_check.h"
|
104
103
|
|
105
|
-
/* Flag, um die �nderungen zum
|
104
|
+
/* Flag, um die �nderungen zum 3.3.2014 zu aktivieren */
|
106
105
|
static int pz_aenderungen_aktivieren;
|
107
106
|
|
108
107
|
/* falls die Variable verbose_debug gesetzt wird, werden bei einigen
|
@@ -240,7 +239,6 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
240
239
|
#define free(ptr) efree(ptr)
|
241
240
|
#endif
|
242
241
|
|
243
|
-
#line 742 "konto_check.lxx"
|
244
242
|
|
245
243
|
/* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
|
246
244
|
#define BLZ_FEHLER 100000000
|
@@ -376,7 +374,6 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
376
374
|
*/
|
377
375
|
#define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
|
378
376
|
#define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
|
379
|
-
#line 883 "konto_check.lxx"
|
380
377
|
|
381
378
|
/* einige Makros zur Umwandlung zwischen unsigned int und char */
|
382
379
|
#define UCP (unsigned char*)
|
@@ -496,7 +493,6 @@ int pz=-777;
|
|
496
493
|
|
497
494
|
#define E_START(x)
|
498
495
|
#define E_END(x)
|
499
|
-
#line 1008 "konto_check.lxx"
|
500
496
|
|
501
497
|
/* Variable f�r die Methoden 27, 29 und 69 */
|
502
498
|
static const int m10h_digits[4][10]={
|
@@ -578,19 +574,19 @@ static unsigned char ee[500],*eeh,*eep,eec[]={
|
|
578
574
|
0xb3,0xa2,0xf4,0x0f,0x7e,0xb5,0x0a,0xdd,0x54,0xfb,0x74,0x56,0xf5,
|
579
575
|
0x16,0x5a,0x53,0x14,0x3d,0xd8,0xbd,0x00,0x8b,0x59,0x95,0x67,0x00
|
580
576
|
};
|
581
|
-
#define EE
|
577
|
+
#define EE 27
|
582
578
|
|
583
579
|
/* Arrays f�r die Felder der LUT-Datei u.a. */
|
584
580
|
static char *lut_prolog,*lut_sys_info,*lut_user_info;
|
585
581
|
static char **name,**name_kurz,**ort,*name_data,*name_name_kurz_data,*name_kurz_data,
|
586
|
-
*ort_data,**bic,*bic_buffer,*aenderung,*loeschung,**volltext,*volltext_data;
|
587
|
-
static int lut_version,*blz,*startidx,*plz,*filialen,*pan,*pz_methoden,*bank_nr,*nachfolge_blz,
|
582
|
+
*ort_data,**bic,**bic_h,*bic_buffer,*aenderung,*loeschung,**volltext,*volltext_data;
|
583
|
+
static int lut_version,*blz,*startidx,*hs_idx,*plz,*filialen,*pan,*pz_methoden,*bank_nr,*nachfolge_blz,
|
588
584
|
*own_iban,own_iban_cnt,vt_cnt,vt_cnt_uniq,*volltext_banken,*volltext_start,*iban_regel,
|
589
585
|
extra_init_done;
|
590
586
|
static volatile int init_status,init_in_progress;
|
591
587
|
|
592
588
|
/* Arrays f�r die Suche nach verschiedenen Feldern */
|
593
|
-
static int *blz_f,*pz_f,*zweigstelle_f,*zweigstelle_f1,*sort_volltext,*sort_bic,*sort_name,*sort_name_kurz,*sort_ort,*sort_blz,*sort_pz_f,*sort_plz,*sort_iban_regel;
|
589
|
+
static int *blz_f,*pz_f,*zweigstelle_f,*zweigstelle_f1,*sort_volltext,*sort_bic,*sort_name,*sort_name_kurz,*sort_ort,*sort_blz,*sort_pz_f,*sort_plz,*sort_iban_regel,*sort_bic_h;
|
594
590
|
|
595
591
|
/* Arrays zur Umwandlung von ASCII nach Zahlen */
|
596
592
|
static unsigned int b0[256],b1[256],b2[256],b3[256],b4[256],b5[256],b6[256],b7[256],b8[256],
|
@@ -677,6 +673,15 @@ static int qcmp_sorti(const void *ap,const void *bp);
|
|
677
673
|
static int iban_init(void);
|
678
674
|
static int iban_regel_cvt(char *blz,char *kto,const char **bic,int regel_version);
|
679
675
|
static const char *lut_bic_int(char *b,int zweigstelle,int *retval);
|
676
|
+
static int bic_fkt_c(char *bic1,int mode,int filiale,int*retval,char *base);
|
677
|
+
static int biq_fkt_c(int idx,int*retval,char *base);
|
678
|
+
static int iban_fkt_c(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int*));
|
679
|
+
static int bic_fkt_i(char *bic1,int mode,int filiale,int*retval,int *base);
|
680
|
+
static int biq_fkt_i(int idx,int*retval,int *base);
|
681
|
+
static int iban_fkt_i(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int*));
|
682
|
+
static const char *bic_fkt_s(char *bic1,int mode,int filiale,int*retval,char **base);
|
683
|
+
static const char *biq_fkt_s(int idx,int*retval,char **base);
|
684
|
+
static const char *iban_fkt_s(char *iban,int filiale,int *retval,const char*(*fkt)(char*,int,int*));
|
680
685
|
#if DEBUG>0
|
681
686
|
static int kto_check_int(char *x_blz,int pz_methode,char *kto,int untermethode,RETVAL *retvals);
|
682
687
|
#else
|
@@ -920,7 +925,6 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
|
|
920
925
|
* ###########################################################################
|
921
926
|
*/
|
922
927
|
|
923
|
-
#line 1432 "konto_check.lxx"
|
924
928
|
DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
925
929
|
{
|
926
930
|
char buffer[SLOT_BUFFER],*ptr;
|
@@ -958,7 +962,6 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
|
958
962
|
* #############################################################################
|
959
963
|
*/
|
960
964
|
|
961
|
-
#line 1470 "konto_check.lxx"
|
962
965
|
static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
963
966
|
{
|
964
967
|
char buffer[SLOT_BUFFER],*ptr,*cptr;
|
@@ -1094,7 +1097,6 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
|
1094
1097
|
* ###########################################################################
|
1095
1098
|
*/
|
1096
1099
|
|
1097
|
-
#line 1606 "konto_check.lxx"
|
1098
1100
|
DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
|
1099
1101
|
{
|
1100
1102
|
int retval;
|
@@ -1117,7 +1119,6 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
|
|
1117
1119
|
* ###########################################################################
|
1118
1120
|
*/
|
1119
1121
|
|
1120
|
-
#line 1630 "konto_check.lxx"
|
1121
1122
|
DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
1122
1123
|
{
|
1123
1124
|
int retval;
|
@@ -1139,7 +1140,6 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
|
1139
1140
|
* ###########################################################################
|
1140
1141
|
*/
|
1141
1142
|
|
1142
|
-
#line 1653 "konto_check.lxx"
|
1143
1143
|
static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
|
1144
1144
|
{
|
1145
1145
|
char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
|
@@ -1229,7 +1229,6 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
|
|
1229
1229
|
FREE(sbuffer);
|
1230
1230
|
RETURN(ERROR_MALLOC);
|
1231
1231
|
}
|
1232
|
-
#line 1758 "konto_check.lxx"
|
1233
1232
|
|
1234
1233
|
if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
|
1235
1234
|
FREE(sbuffer);
|
@@ -1570,8 +1569,8 @@ static int lut_dir(FILE *lut,int id,UINT4 *slot_cnt,UINT4 *typ,UINT4 *len,
|
|
1570
1569
|
static int write_lutfile_entry_de(UINT4 typ,int auch_filialen,int bank_cnt,char *out_buffer,
|
1571
1570
|
FILE *lut,UINT4 set,int add_idx)
|
1572
1571
|
{
|
1573
|
-
char *ptr,*zptr,*dptr,*name_hauptstelle=NULL,*name_start=NULL,*data,*data_idx,**sortc_buf1,**sortc_buf2;
|
1574
|
-
int cnt,i,j,k,max,b,prev_blz,diff,hs,retval,*iptr;
|
1572
|
+
char *ptr,*zptr,*bptr,*dptr,*name_hauptstelle=NULL,*name_start=NULL,*data,*data_idx,**sortc_buf1,**sortc_buf2;
|
1573
|
+
int cnt,i,j,k,max,b,prev_blz,diff,hs,retval,qs_hs,*iptr;
|
1575
1574
|
|
1576
1575
|
if(set==2)typ+=SET_OFFSET; /* sekund�res Set schreiben */
|
1577
1576
|
|
@@ -1867,7 +1866,7 @@ static int write_lutfile_entry_de(UINT4 typ,int auch_filialen,int bank_cnt,char
|
|
1867
1866
|
CHECK_RETURN(write_lut_block_int(lut,typ,dptr-data,data));
|
1868
1867
|
|
1869
1868
|
/* Index-Block f�r BIC generieren. Die BICs werden noch einmal neu
|
1870
|
-
* eingelesen, da sich die obige Version
|
1869
|
+
* eingelesen, da sich die obige Version nicht zum Sortieren eignet.
|
1871
1870
|
*/
|
1872
1871
|
if(add_idx){
|
1873
1872
|
for(i=j=0,dptr=data;i<bank_cnt;i++)if(auch_filialen || qs_hauptstelle[qs_sortidx[i]]=='1'){
|
@@ -1883,6 +1882,28 @@ static int write_lutfile_entry_de(UINT4 typ,int auch_filialen,int bank_cnt,char
|
|
1883
1882
|
UI2C(j,dptr);
|
1884
1883
|
for(i=0;i<j;i++)UI2C(iptr[i],dptr);
|
1885
1884
|
CHECK_RETURN(write_lut_block_int(lut,LUT2_BIC_SORT+(typ-LUT2_BIC),dptr-data_idx,data_idx));
|
1885
|
+
|
1886
|
+
/* nun nochmal fast dasselbe, nur die BICs der Nebenstellen mit denen der Hauptstelle f�llen */
|
1887
|
+
for(i=j=0,bptr=dptr=data;i<bank_cnt;i++){
|
1888
|
+
qs_hs=qs_hauptstelle[qs_sortidx[i]]=='1'?1:0; /* Kennzeichen Haupt/Nebenstelle */
|
1889
|
+
if(auch_filialen || qs_hs){
|
1890
|
+
zptr=qs_zeilen[qs_sortidx[i]];
|
1891
|
+
sortc_buf1[j++]=dptr;
|
1892
|
+
if(qs_hs) /* Hauptstelle */
|
1893
|
+
for(bptr=ptr=zptr+139;ptr<zptr+150;)*dptr++=*ptr++;
|
1894
|
+
else /* Nebenstelle */
|
1895
|
+
/* bptr wird bei der vorhergehenden HS gesetzt, die kommen *immer* vor den Nebenstellen */
|
1896
|
+
for(ptr=bptr;ptr<bptr+11;)*dptr++=*ptr++;
|
1897
|
+
*dptr++=0;
|
1898
|
+
}
|
1899
|
+
}
|
1900
|
+
data_idx=dptr;
|
1901
|
+
sortc_buf=sortc_buf1;
|
1902
|
+
for(i=0;i<j;i++)iptr[i]=i; /* Index-Array initialisieren */
|
1903
|
+
qsort(iptr,j,sizeof(int),qcmp_sortc);
|
1904
|
+
UI2C(j,dptr);
|
1905
|
+
for(i=0;i<j;i++)UI2C(iptr[i],dptr);
|
1906
|
+
CHECK_RETURN(write_lut_block_int(lut,LUT2_BIC_H_SORT+(typ-LUT2_BIC),dptr-data_idx,data_idx));
|
1886
1907
|
}
|
1887
1908
|
break;
|
1888
1909
|
|
@@ -2746,7 +2767,6 @@ DLL_EXPORT int lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,i
|
|
2746
2767
|
* ###########################################################################
|
2747
2768
|
*/
|
2748
2769
|
|
2749
|
-
#line 3275 "konto_check.lxx"
|
2750
2770
|
DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
|
2751
2771
|
{
|
2752
2772
|
char *ptr,*ptr1,buffer[128];
|
@@ -2834,7 +2854,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2834
2854
|
|
2835
2855
|
/* Infoblocks lesen: 1. Infoblock */
|
2836
2856
|
if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
|
2837
|
-
#line 3364 "konto_check.lxx"
|
2838
2857
|
*(ptr+cnt)=0;
|
2839
2858
|
if(valid1){
|
2840
2859
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -2882,7 +2901,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2882
2901
|
|
2883
2902
|
/* Infoblocks lesen: 2. Infoblock */
|
2884
2903
|
if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
|
2885
|
-
#line 3413 "konto_check.lxx"
|
2886
2904
|
*(ptr+cnt)=0;
|
2887
2905
|
if(valid2){
|
2888
2906
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -3101,7 +3119,6 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
|
|
3101
3119
|
qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
|
3102
3120
|
for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
|
3103
3121
|
read_lut_block_int(lut1,0,typ,&len,&data);
|
3104
|
-
#line 3633 "konto_check.lxx"
|
3105
3122
|
write_lut_block_int(lut2,typ,len,data);
|
3106
3123
|
FREE(data);
|
3107
3124
|
last_slot=typ;
|
@@ -3330,11 +3347,10 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
|
|
3330
3347
|
* # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
|
3331
3348
|
* ###########################################################################
|
3332
3349
|
*/
|
3333
|
-
#line 3862 "konto_check.lxx"
|
3334
3350
|
DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
|
3335
3351
|
{
|
3336
3352
|
char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
|
3337
|
-
int b,h,i,j,k,v1,v2,retval,release_data,alles_ok,slotdir[MAX_SLOTS],*iptr,*rptr,xrequired[MAX_SLOTS],own_iban_2;
|
3353
|
+
int b,h,i,j,k,x,y,v1,v2,retval,release_data,alles_ok,slotdir[MAX_SLOTS],*iptr,*rptr,xrequired[MAX_SLOTS],own_iban_2;
|
3338
3354
|
UINT4 len,typ,typ1,slot_cnt;
|
3339
3355
|
FILE *lut;
|
3340
3356
|
struct stat s_buf;
|
@@ -3558,7 +3574,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3558
3574
|
typ1=typ;
|
3559
3575
|
if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
|
3560
3576
|
retval=read_lut_block_int(lut,0,typ,&len,&data);
|
3561
|
-
#line 4091 "konto_check.lxx"
|
3562
3577
|
|
3563
3578
|
switch(retval){
|
3564
3579
|
case LUT_CRC_ERROR:
|
@@ -3646,7 +3661,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3646
3661
|
if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
|
3647
3662
|
FREE(data);
|
3648
3663
|
i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
|
3649
|
-
#line 4183 "konto_check.lxx"
|
3650
3664
|
if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
|
3651
3665
|
typ=LUT2_2_NAME_NAME_KURZ;
|
3652
3666
|
typ1=LUT2_NAME_NAME_KURZ;
|
@@ -3712,7 +3726,8 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3712
3726
|
FREE(blz);
|
3713
3727
|
FREE(hash);
|
3714
3728
|
if(!(blz=calloc(lut2_cnt_hs+1,sizeof(int)))
|
3715
|
-
|| (!startidx && !(startidx=calloc(lut2_cnt_hs,sizeof(int))))
|
3729
|
+
|| (!startidx && !(startidx=calloc(lut2_cnt_hs,sizeof(int)))) /* Index der Hauptstelle in den gro�en Arrays */
|
3730
|
+
|| (!hs_idx && !(hs_idx=calloc(lut2_cnt,sizeof(int)))) /* reziprok zu startidx */
|
3716
3731
|
|| !(hash=calloc(sizeof(short),HASH_BUFFER_SIZE)))
|
3717
3732
|
lut2_block_status[typ]=lut2_block_status[typ1]=ERROR_MALLOC;
|
3718
3733
|
else{
|
@@ -3755,13 +3770,14 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3755
3770
|
case LUT2_2_FILIALEN:
|
3756
3771
|
release_data=1;
|
3757
3772
|
FREE(filialen);
|
3758
|
-
if(!(filialen=calloc(len,sizeof(int)))
|
3759
|
-
|| (!startidx && !(startidx=calloc(lut2_cnt_hs,sizeof(int)))))
|
3773
|
+
if(!(filialen=calloc(len,sizeof(int))))
|
3760
3774
|
lut2_block_status[typ]=lut2_block_status[typ1]=ERROR_MALLOC;
|
3761
3775
|
else{
|
3762
|
-
for(i=j=0,ptr=data,eptr=data+len;i<(int)len;i++){
|
3763
|
-
startidx[i]+=j;
|
3764
|
-
|
3776
|
+
for(i=j=x=0,ptr=data,eptr=data+len;i<(int)len;i++){
|
3777
|
+
startidx[i]+=j; /* j ist nur ein Inkrement, startidx[] wurde oben mit i initialisiert */
|
3778
|
+
filialen[i]=UI *ptr++;
|
3779
|
+
for(y=0;y<filialen[i];y++)hs_idx[x++]=startidx[i]; /* Hauptstellen-Index f�r alle Filialen der Bank setzen */
|
3780
|
+
j+=filialen[i]-1;
|
3765
3781
|
}
|
3766
3782
|
}
|
3767
3783
|
break;
|
@@ -3791,6 +3807,9 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3791
3807
|
*
|
3792
3808
|
* Diese Daten �ndern sich weniger oft und k�nnen daher �ber einen
|
3793
3809
|
* l�ngeren Zeitraum benutzt werden.
|
3810
|
+
*
|
3811
|
+
* Aktuell (zum M�rz 2014) ist die Ausschlu�liste leer, der Block
|
3812
|
+
* wird nicht weiter verwendet.
|
3794
3813
|
*/
|
3795
3814
|
case LUT2_OWN_IBAN:
|
3796
3815
|
case LUT2_2_OWN_IBAN:
|
@@ -3964,8 +3983,10 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3964
3983
|
case LUT2_2_BIC:
|
3965
3984
|
release_data=1;
|
3966
3985
|
FREE(bic);
|
3986
|
+
FREE(bic_h);
|
3967
3987
|
FREE(bic_buffer);
|
3968
|
-
if(!(bic_buffer=calloc(lut2_cnt+10,12)) || !(bic=calloc(lut2_cnt+10,sizeof(char*)))
|
3988
|
+
if(!(bic_buffer=calloc(lut2_cnt+10,12)) || !(bic=calloc(lut2_cnt+10,sizeof(char*)))
|
3989
|
+
|| !(bic_h=calloc(lut2_cnt+10,sizeof(char*)))){
|
3969
3990
|
lut2_block_status[typ]=lut2_block_status[typ1]=ERROR_MALLOC;
|
3970
3991
|
}
|
3971
3992
|
else{
|
@@ -3995,16 +4016,18 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3995
4016
|
}
|
3996
4017
|
bic_buffer=realloc(bic_buffer,(size_t)(dptr-bic_buffer)+10);
|
3997
4018
|
|
3998
|
-
/* die Schleife darf erst ab 1 laufen
|
3999
|
-
*
|
4000
|
-
*
|
4019
|
+
/* die Schleife darf erst ab 1 laufen, da der Offset f�r die
|
4020
|
+
* Bundesbank (in bic[0]) 0 ist. bic[0] und bic_h[0] mu�
|
4021
|
+
* manuell auf den Anfang von bic_buffer gesetzt werden.
|
4001
4022
|
*/
|
4002
|
-
bic[0]=bic_buffer;
|
4003
|
-
for(j=1;j<i;j++)
|
4023
|
+
bic[0]=bic_h[0]=bic_buffer;
|
4024
|
+
for(j=1;j<i;j++){
|
4004
4025
|
if(!bic[j]) /* Leerstring */
|
4005
4026
|
bic[j]=(char*)" ";
|
4006
4027
|
else /* Adresse anpassen */
|
4007
4028
|
bic[j]=(char*)(bic_buffer+(unsigned long)bic[j]);
|
4029
|
+
bic_h[j]=bic[hs_idx[j]];
|
4030
|
+
}
|
4008
4031
|
}
|
4009
4032
|
break;
|
4010
4033
|
|
@@ -4191,7 +4214,6 @@ DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char
|
|
4191
4214
|
* ###########################################################################
|
4192
4215
|
*/
|
4193
4216
|
|
4194
|
-
#line 4728 "konto_check.lxx"
|
4195
4217
|
DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
|
4196
4218
|
{
|
4197
4219
|
if(init_status<7 || !current_lutfile){
|
@@ -4354,6 +4376,17 @@ DLL_EXPORT int lut_blz(char *b,int zweigstelle)
|
|
4354
4376
|
return OK;
|
4355
4377
|
}
|
4356
4378
|
|
4379
|
+
DLL_EXPORT int lut_blz_i(int b,int zweigstelle)
|
4380
|
+
{
|
4381
|
+
int idx;
|
4382
|
+
|
4383
|
+
if(!blz)RETURN(LUT2_BLZ_NOT_INITIALIZED);
|
4384
|
+
if((idx=lut_index_i(b))<0)return idx;
|
4385
|
+
if(zweigstelle<0 || (filialen && zweigstelle>=filialen[idx]) || (zweigstelle && !filialen))
|
4386
|
+
RETURN(LUT2_INDEX_OUT_OF_RANGE);
|
4387
|
+
return OK;
|
4388
|
+
}
|
4389
|
+
|
4357
4390
|
/* Funktion lut_filialen() +���2 */
|
4358
4391
|
/* ###########################################################################
|
4359
4392
|
* # lut_filialen(): Anzahl der Filialen zu einer gegebenen Bankleitzahl #
|
@@ -4598,7 +4631,7 @@ DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval)
|
|
4598
4631
|
strcpy(blz2,b);
|
4599
4632
|
strcpy(kto2,"13"); /* nur Dummy f�r Funktionsaufruf */
|
4600
4633
|
iban_regel_cvt(blz2,kto2,&bic_neu,regel); /* R�ckgabewert egal, nur bic_neu interessiert */
|
4601
|
-
if(bic && bic_neu &&
|
4634
|
+
if(bic && bic_neu && strcasecmp(bic,bic_neu))*retval=OK_INVALID_FOR_IBAN; /* BIC wurde durch eine Regel ge�ndert */
|
4602
4635
|
}
|
4603
4636
|
}
|
4604
4637
|
/* R�ckgabe ist immer der BIC aus der LUT-Datei, nicht der durch Regeln modifizierte Wert.
|
@@ -4633,9 +4666,38 @@ static const char *lut_bic_int(char *b,int zweigstelle,int *retval)
|
|
4633
4666
|
return bic[startidx[idx]+zweigstelle];
|
4634
4667
|
}
|
4635
4668
|
|
4669
|
+
/* Die Funktion lut_bic_h() entspricht der Funktion lut_bic(), nur wird
|
4670
|
+
* anstelle des individuellen BICs der BIC der Hauptstelle zur�ckgeliefert.
|
4671
|
+
* Die Funktion steht in Zusammenhang mit der Funktionsgruppe bic_name(),
|
4672
|
+
* bic_kurzname(), bic_ort()... die ebenfalls den BIC der Hauptstelle benutzen.
|
4673
|
+
*/
|
4674
|
+
DLL_EXPORT const char *lut_bic_h(char *b,int zweigstelle,int *retval)
|
4675
|
+
{
|
4676
|
+
int idx,force_old,blz_i;
|
4677
|
+
|
4678
|
+
if(!bic_h)INVALID_C(LUT2_BIC_NOT_INITIALIZED);
|
4679
|
+
if(*b=='!'){
|
4680
|
+
b++;
|
4681
|
+
force_old=1;
|
4682
|
+
}
|
4683
|
+
if((idx=lut_index(b))<0)INVALID_C(idx);
|
4684
|
+
CHECK_OFFSET_S;
|
4685
|
+
|
4686
|
+
/* falls eine Nachfolge-BLZ eingetragen ist, wird diese benutzt */
|
4687
|
+
if(!nachfolge_blz && !force_old)INVALID_C(LUT2_NACHFOLGE_BLZ_NOT_INITIALIZED);
|
4688
|
+
if((blz_i=lut_nachfolge_blz(b,0,NULL))){
|
4689
|
+
if((idx=lut_index_i(blz_i))<0)INVALID_C(idx);
|
4690
|
+
if(retval)*retval=OK_NACHFOLGE_BLZ_USED;
|
4691
|
+
}
|
4692
|
+
else
|
4693
|
+
if(retval)*retval=OK;
|
4694
|
+
return bic_h[startidx[idx]+zweigstelle];
|
4695
|
+
}
|
4696
|
+
|
4636
4697
|
/* Die Funktion lut_bic_i() (mit Integer-Wert f�r die BLZ) bietet bei Verwendung der
|
4637
4698
|
* IBAN-Regeln keinen Vorteil mehr. Daher wird die BLZ in einen String umgewandelt
|
4638
|
-
* und dann die Funktion lut_bic() aufgerufen.
|
4699
|
+
* und dann die Funktion lut_bic() aufgerufen. Die Funktion lut_bic_hi() entspricht
|
4700
|
+
* lut_bic_h().
|
4639
4701
|
*/
|
4640
4702
|
DLL_EXPORT const char *lut_bic_i(int b,int zweigstelle,int *retval)
|
4641
4703
|
{
|
@@ -4654,6 +4716,23 @@ DLL_EXPORT const char *lut_bic_i(int b,int zweigstelle,int *retval)
|
|
4654
4716
|
#endif
|
4655
4717
|
}
|
4656
4718
|
|
4719
|
+
DLL_EXPORT const char *lut_bic_hi(int b,int zweigstelle,int *retval)
|
4720
|
+
{
|
4721
|
+
#if !USE_IBAN_RULES
|
4722
|
+
int idx;
|
4723
|
+
|
4724
|
+
if(!bic_h)INVALID_C(LUT2_BIC_NOT_INITIALIZED);
|
4725
|
+
if((idx=lut_index_i(b))<0)INVALID_C(idx);
|
4726
|
+
CHECK_OFFSET_S;
|
4727
|
+
return bic_h[startidx[idx]+zweigstelle];
|
4728
|
+
#else
|
4729
|
+
char b_a[9];
|
4730
|
+
|
4731
|
+
snprintf(b_a,9,"%08d",b);
|
4732
|
+
return lut_bic_h(b_a,zweigstelle,retval);
|
4733
|
+
#endif
|
4734
|
+
}
|
4735
|
+
|
4657
4736
|
/* Funktion lut_nr() +���2 */
|
4658
4737
|
/* ###########################################################################
|
4659
4738
|
* # lut_nr(): Nummer des Datensatzes in der BLZ-Datei #
|
@@ -4910,7 +4989,6 @@ static int iban_init(void)
|
|
4910
4989
|
* ###########################################################################
|
4911
4990
|
*/
|
4912
4991
|
|
4913
|
-
#line 5447 "konto_check.lxx"
|
4914
4992
|
#if USE_IBAN_RULES
|
4915
4993
|
static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version)
|
4916
4994
|
{
|
@@ -5051,11 +5129,12 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5051
5129
|
if((idx=lut_index(blz))<0)return idx;
|
5052
5130
|
pz_methode=pz_methoden[idx];
|
5053
5131
|
|
5054
|
-
/* comdirect bank beh�lt
|
5055
|
-
*
|
5056
|
-
*
|
5132
|
+
/* comdirect bank beh�lt ihren BIC (Beispiel und Vergleich mit SEPA
|
5133
|
+
* Account Converter und VR Iban Konverter, sowie Anmerkung 6 in der
|
5134
|
+
* IBAN-Regel 5 auf S. 14); alle anderen BLZs der Commerzbank
|
5135
|
+
* bekommen COBADEFFXXX.
|
5057
5136
|
*/
|
5058
|
-
if(blz[3]=='4' &&
|
5137
|
+
if(blz[3]=='4' && strcasecmp(lut_name(blz,0,NULL),"comdirect bank"))*bicp="COBADEFFXXX";
|
5059
5138
|
|
5060
5139
|
/* BLZs ohne Pr�fzifferberechnung */
|
5061
5140
|
if(pz_methode==9)return OK_NO_CHK;
|
@@ -5792,10 +5871,9 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5792
5871
|
* die Bundesbank hat jedoch schon die Regelversion am 28. August ver�ffentlicht, mit der Bitte, sie
|
5793
5872
|
* m�glichst schon zum 9. September einzusetzen. Der Best Guess Ansatz mit dem Fehlercode 51 bzw.
|
5794
5873
|
* IBAN_AMBIGUOUS_KTO wird entfernt und durch Verfahren zur Ermittlung eindeutiger IBANs ersetzt.
|
5874
|
+
* Die alte Version ist jetzt (9.12.13) nicht mehr im Code enthalten, da sie ung�ltig ist.
|
5795
5875
|
*/
|
5796
5876
|
|
5797
|
-
#if DB_NEUE_VERSION>0
|
5798
|
-
|
5799
5877
|
/* BLZ ohne IBAN-Berechnung */
|
5800
5878
|
if(b==10020000)return NO_IBAN_CALCULATION;
|
5801
5879
|
|
@@ -5867,130 +5945,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5867
5945
|
/* alle restlichen Konten (8- bis 9-stellig) nur mit Methode 63a pr�fen */
|
5868
5946
|
return kto_check_pz("63a",kto,NULL);
|
5869
5947
|
|
5870
|
-
#else
|
5871
|
-
/* Deutsche Bank AG (alte Version mit IBAN_AMBIGUOUS_KTO) */
|
5872
|
-
|
5873
|
-
/* BLZ ohne IBAN-Berechnung */
|
5874
|
-
if(b==10020000)return NO_IBAN_CALCULATION;
|
5875
|
-
|
5876
|
-
/* Spendenkontonummer */
|
5877
|
-
if(b==50070010 && k1==0 && k2==9999){
|
5878
|
-
strcpy(kto,"0092777202");
|
5879
|
-
RETURN_OK_KTO_REPLACED;
|
5880
|
-
}
|
5881
|
-
|
5882
|
-
/* Pr�fziffermethode holen */
|
5883
|
-
if((idx=lut_index(blz))<0)return idx;
|
5884
|
-
pz_methode=pz_methoden[idx];
|
5885
|
-
|
5886
|
-
/* Pr�fzifferverfahren 09 (Deutsche Bank GF intern) */
|
5887
|
-
if(pz_methode==9)return OK_NO_CHK;
|
5888
|
-
|
5889
|
-
/* 10-stellige Konten sind ung�ltig */
|
5890
|
-
if(*kto!='0')return INVALID_KTO;
|
5891
|
-
|
5892
|
-
/* Pr�fzifferverfahren 63 (Deutsche Bank) */
|
5893
|
-
if(pz_methode==63){
|
5894
|
-
char kto2[12];
|
5895
|
-
int v,v1,v2,v3;
|
5896
|
-
|
5897
|
-
v=v1=v2=v3=0;
|
5898
|
-
/* drei Nullen links: Test mit weggelassenem Unterkonto (s.Beispiel) */
|
5899
|
-
if(*kto=='0' && kto[1]=='0' && kto[2]=='0'){
|
5900
|
-
if(kto_check_pz("63b",kto,NULL)==OK){
|
5901
|
-
v++;
|
5902
|
-
v2=1;
|
5903
|
-
}
|
5904
|
-
}
|
5905
|
-
if(*kto=='0' && (kto[1]!='0' || kto[2]!='0' || kto[3]!='0')){
|
5906
|
-
if(kto_check_pz("63a",kto,NULL)==OK){
|
5907
|
-
v++;
|
5908
|
-
v1=1;
|
5909
|
-
}
|
5910
|
-
}
|
5911
|
-
/* drei Nullen rechtsb�ndig, 1. Stelle != 0: falsche Eingabe (0 rechts vom Kunden erg�nzt) */
|
5912
|
-
if(*kto!='0' && kto[7]=='0' && kto[8]=='0' && kto[9]=='0'){
|
5913
|
-
for(i=0;i<9;i++)kto2[i+1]=kto[i];
|
5914
|
-
*kto2='0';
|
5915
|
-
kto2[10]=0;
|
5916
|
-
if(kto_check_pz("63a",kto2,NULL)==OK){
|
5917
|
-
v++;
|
5918
|
-
v3=1;
|
5919
|
-
}
|
5920
|
-
}
|
5921
|
-
if(!v)return INVALID_KTO; /* Konto ung�ltig */
|
5922
|
-
if(v==1){ /* ein g�ltiges Konto gefunden, dieses zur�ckgeben */
|
5923
|
-
if(v2){ /* Konto zwei Stellen nach links schieben, Nullen rechts erg�nzen */
|
5924
|
-
for(i=0;i<8;i++)kto[i]=kto[i+2];
|
5925
|
-
kto[8]='0';
|
5926
|
-
kto[9]='0';
|
5927
|
-
return OK_UNTERKONTO_ATTACHED;
|
5928
|
-
}
|
5929
|
-
if(v3){ /* Konto eine Stelle nach rechts, Null links erg�nzen */
|
5930
|
-
for(i=9;i>0;i--)kto[i]=kto[i-1];
|
5931
|
-
*kto='0';
|
5932
|
-
}
|
5933
|
-
if(v1)
|
5934
|
-
RETURN_OK;
|
5935
|
-
else
|
5936
|
-
RETURN_OK_KTO_REPLACED;
|
5937
|
-
}
|
5938
|
-
if(v>1){
|
5939
|
-
/* mehrere m�gliche Kontonummern gefunden, Fehlermeldung.
|
5940
|
-
* Falls v1 gesetzt ist, wird dieses genommen; falls v2 oder v3
|
5941
|
-
* gesetzt ist, wird v2 genommen.
|
5942
|
-
*/
|
5943
|
-
if(!v1 && v2){
|
5944
|
-
for(i=0;i<8;i++)kto[i]=kto[i+2];
|
5945
|
-
kto[8]='0';
|
5946
|
-
kto[9]='0';
|
5947
|
-
}
|
5948
|
-
return IBAN_AMBIGUOUS_KTO;
|
5949
|
-
}
|
5950
|
-
}
|
5951
|
-
|
5952
|
-
/* Pr�fzifferverfahren C7 (Norisbank) */
|
5953
|
-
if(pz_methode==127){
|
5954
|
-
|
5955
|
-
/* die erste Stelle mu� immer 0 sein */
|
5956
|
-
if(*kto!='0')return FALSE;
|
5957
|
-
if(kto[1]=='0' && kto[2]=='0'){
|
5958
|
-
|
5959
|
-
/* Falls die Kontonummer mit drei Nullen beginnt und zwei
|
5960
|
-
* Nullen am Ende hat, enth�lt sie das Unterkonto und ist
|
5961
|
-
* deshalb nach Methode c7a zu pr�fen. Aus den IBAN-Regeln
|
5962
|
-
* (FAQ zu Regel 20, Frage 1):
|
5963
|
-
* Eine Kontonummer, die in die IBAN-Berechnung - nach den
|
5964
|
-
* Pr�f-/Korrekturschritten 5.2.1 a) bis c) - einzubeziehen
|
5965
|
-
* ist, ist immer mindestens 7-stellig und maximal
|
5966
|
-
* 9-stellig. Eine k�rzere oder l�ngere Kontonummer ist
|
5967
|
-
* nicht g�ltig und muss zu einer Fehlermeldung (im
|
5968
|
-
* Konverter-Tool bzw. -Portal) f�hren.
|
5969
|
-
*/
|
5970
|
-
if(kto[8]=='0' && kto[9]=='0')return kto_check_pz("c7a",kto,NULL);
|
5971
|
-
|
5972
|
-
if(kto_check_pz("c7c",kto,NULL)==OK){
|
5973
|
-
|
5974
|
-
/* nicht zu entscheiden, ob c7a oder c7c (mit erg�nztem Unterkonto) richtig ist */
|
5975
|
-
if( kto_check_pz("c7a",kto,NULL)==OK)return IBAN_AMBIGUOUS_KTO;
|
5976
|
-
|
5977
|
-
/* Unterkonto bei Methode C7 weggelassen */
|
5978
|
-
for(i=0;i<8;i++)kto[i]=kto[i+2];
|
5979
|
-
kto[8]='0';
|
5980
|
-
kto[9]='0';
|
5981
|
-
return OK_UNTERKONTO_ATTACHED;
|
5982
|
-
}
|
5983
|
-
}
|
5984
|
-
if(kto_check_pz("c7a",kto,NULL)==OK)RETURN_OK;
|
5985
|
-
|
5986
|
-
/* Sonderfall Norisbank: ausschlie�lich Pr�fzifferverfahren 06 (entspricht c7b) ist f�r IBAN-Berechnung nicht zugelassen */
|
5987
|
-
if(kto_check_pz("c7b",kto,NULL)==OK)return NO_IBAN_CALCULATION;
|
5988
|
-
}
|
5989
|
-
|
5990
|
-
RETURN_OK; /* Lumpensammler f�r Regel 20 */
|
5991
|
-
#endif
|
5992
|
-
|
5993
|
-
|
5994
5948
|
/* National-Bank AG */
|
5995
5949
|
case 21:
|
5996
5950
|
/* 1-5 stellige oder 8 stellige Konten sind ung�ltig */
|
@@ -8030,13 +7984,21 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8030
7984
|
|
8031
7985
|
/* Deutsche Bundesbank */
|
8032
7986
|
case 42:
|
7987
|
+
|
8033
7988
|
/* nur 8-stellige Konten sind zur IBAN-Berechnung freigegeben */
|
8034
7989
|
if(*kto!='0' || kto[1]!='0')return NO_IBAN_CALCULATION;
|
8035
7990
|
|
8036
7991
|
/* Konten ohne IBAN-Berechnung: nnn 0 0000 bis nnn 0 0999 */
|
8037
7992
|
if(kto[5]=='0' && kto[6]=='0')return NO_IBAN_CALCULATION;
|
8038
7993
|
|
8039
|
-
/* Die Kontonummer muss an der 4. Stelle immer gleich '0' sein
|
7994
|
+
/* Die Kontonummer muss an der 4. Stelle immer gleich '0' sein.
|
7995
|
+
*
|
7996
|
+
* Anm. (MP): die "4." Stelle bezieht sich hier auf die 4. Stelle
|
7997
|
+
* der 8-stelligen Kontonummer, nicht die der 10-stelligen; daher
|
7998
|
+
* wird kto[5] auf '0' getestet. Als Beispiel wird 100 0 1000
|
7999
|
+
* angegeben, wobei die 0 nach initialen 100 damit gemeint ist. Die
|
8000
|
+
* beiden f�hrenden Nullen werden nicht ber�cksichtigt.
|
8001
|
+
*/
|
8040
8002
|
if(kto[5]=='0')return OK;
|
8041
8003
|
|
8042
8004
|
/* au�erdem freigegeben: 50462000 bis 50463999 sowie 50469000 bis 50469999 */
|
@@ -8482,6 +8444,108 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8482
8444
|
}
|
8483
8445
|
else if(k1==17 && k2==61070000){strcpy(kto,"0176107000"); RETURN_OK_KTO_REPLACED;}
|
8484
8446
|
else if(k1==22 && k2==10531180){strcpy(kto,"0201053180"); RETURN_OK_KTO_REPLACED;}
|
8447
|
+
|
8448
|
+
if(version>0){ /* g�ltig ab 3.3.2014 */
|
8449
|
+
if(k1==0)switch(k2){
|
8450
|
+
case 624044: return OK_IBAN_WITHOUT_KC_TEST;
|
8451
|
+
case 4063060: return OK_IBAN_WITHOUT_KC_TEST;
|
8452
|
+
case 20111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8453
|
+
case 20211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8454
|
+
case 20311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8455
|
+
case 20411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8456
|
+
case 20511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8457
|
+
case 20611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8458
|
+
case 20711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8459
|
+
case 20811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8460
|
+
case 20911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8461
|
+
case 21111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8462
|
+
case 21211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8463
|
+
case 21311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8464
|
+
case 21411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8465
|
+
case 21511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8466
|
+
case 21611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8467
|
+
case 21711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8468
|
+
case 21811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8469
|
+
case 21911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8470
|
+
case 22111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8471
|
+
case 22211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8472
|
+
case 22311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8473
|
+
case 22411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8474
|
+
case 22511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8475
|
+
case 22611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8476
|
+
case 46211991: return OK_IBAN_WITHOUT_KC_TEST;
|
8477
|
+
case 50111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8478
|
+
case 50211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8479
|
+
case 50311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8480
|
+
case 50411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8481
|
+
case 50511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8482
|
+
case 50611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8483
|
+
case 50711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8484
|
+
case 50811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8485
|
+
case 50911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8486
|
+
case 51111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8487
|
+
case 51111991: return OK_IBAN_WITHOUT_KC_TEST;
|
8488
|
+
case 51211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8489
|
+
case 51211991: return OK_IBAN_WITHOUT_KC_TEST;
|
8490
|
+
case 51311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8491
|
+
case 51411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8492
|
+
case 51511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8493
|
+
case 51611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8494
|
+
case 51711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8495
|
+
case 51811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8496
|
+
case 51911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8497
|
+
case 52111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8498
|
+
case 52111991: return OK_IBAN_WITHOUT_KC_TEST;
|
8499
|
+
case 52211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8500
|
+
case 52211991: return OK_IBAN_WITHOUT_KC_TEST;
|
8501
|
+
case 52311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8502
|
+
case 52411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8503
|
+
case 52511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8504
|
+
case 52611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8505
|
+
case 52711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8506
|
+
case 52811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8507
|
+
case 52911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8508
|
+
case 53111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8509
|
+
case 53211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8510
|
+
case 53311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8511
|
+
case 57111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8512
|
+
case 58111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8513
|
+
case 58211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8514
|
+
case 58311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8515
|
+
case 58411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8516
|
+
case 58511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8517
|
+
case 80111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8518
|
+
case 80211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8519
|
+
case 80311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8520
|
+
case 80411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8521
|
+
case 80511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8522
|
+
case 80611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8523
|
+
case 80711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8524
|
+
case 80811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8525
|
+
case 80911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8526
|
+
case 81111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8527
|
+
case 81211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8528
|
+
case 81311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8529
|
+
case 81411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8530
|
+
case 81511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8531
|
+
case 81611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8532
|
+
case 81711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8533
|
+
case 81811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8534
|
+
case 81911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8535
|
+
case 82111908: return OK_IBAN_WITHOUT_KC_TEST;
|
8536
|
+
case 82211908: return OK_IBAN_WITHOUT_KC_TEST;
|
8537
|
+
case 82311908: return OK_IBAN_WITHOUT_KC_TEST;
|
8538
|
+
case 82411908: return OK_IBAN_WITHOUT_KC_TEST;
|
8539
|
+
case 82511908: return OK_IBAN_WITHOUT_KC_TEST;
|
8540
|
+
case 82611908: return OK_IBAN_WITHOUT_KC_TEST;
|
8541
|
+
case 82711908: return OK_IBAN_WITHOUT_KC_TEST;
|
8542
|
+
case 82811908: return OK_IBAN_WITHOUT_KC_TEST;
|
8543
|
+
case 82911908: return OK_IBAN_WITHOUT_KC_TEST;
|
8544
|
+
case 99624044: return OK_IBAN_WITHOUT_KC_TEST;
|
8545
|
+
}
|
8546
|
+
else
|
8547
|
+
if(k1==3 && k2==143869)return OK_IBAN_WITHOUT_KC_TEST;
|
8548
|
+
}
|
8485
8549
|
RETURN_OK;
|
8486
8550
|
|
8487
8551
|
/* BHW Kreditservice GmbH */
|
@@ -8495,46 +8559,52 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8495
8559
|
|
8496
8560
|
/* SEB AG */
|
8497
8561
|
case 56:
|
8498
|
-
/* Spendenkonten */
|
8562
|
+
/* Spendenkonten: nur mit festgelegten IBANs -> Konto und evl. BLZ/BIC anpassen */
|
8499
8563
|
if(k1==0)switch(k2){
|
8500
|
-
case 36: strcpy(kto,"1010240003"); return OK_KTO_REPLACED;
|
8501
|
-
case 50: strcpy(kto,"1328506100"); return OK_KTO_REPLACED;
|
8502
|
-
case 99: strcpy(kto,"1826063000"); return OK_KTO_REPLACED;
|
8503
|
-
case 110: strcpy(kto,"1015597802"); return OK_KTO_REPLACED;
|
8504
|
-
case 240: strcpy(kto,"1010240000"); return OK_KTO_REPLACED;
|
8505
|
-
case 333: strcpy(kto,"1011296100"); return OK_KTO_REPLACED;
|
8506
|
-
case 555: strcpy(kto,"1600220800"); return OK_KTO_REPLACED;
|
8507
|
-
case 556: strcpy(kto,"1000556100"); return OK_KTO_REPLACED;
|
8508
|
-
case 606: strcpy(kto,"1967153801"); return OK_KTO_REPLACED;
|
8509
|
-
case 700: strcpy(kto,"1070088000"); return OK_KTO_REPLACED;
|
8510
|
-
case 777: strcpy(kto,"1006015200"); return OK_KTO_REPLACED;
|
8511
|
-
case 999: strcpy(kto,"1010240001"); return OK_KTO_REPLACED;
|
8512
|
-
case 1234: strcpy(kto,"1369152400"); return OK_KTO_REPLACED;
|
8513
|
-
case 1313: strcpy(kto,"1017500000"); return OK_KTO_REPLACED;
|
8514
|
-
case 1888: strcpy(kto,"1241113000"); return OK_KTO_REPLACED;
|
8515
|
-
case 1953: strcpy(kto,"1026500901"); return OK_KTO_REPLACED;
|
8516
|
-
case 1998: strcpy(kto,"1547620500"); return OK_KTO_REPLACED;
|
8517
|
-
case 2007: strcpy(kto,"1026500907"); return OK_KTO_REPLACED;
|
8518
|
-
case 4004: strcpy(kto,"1635100100"); return OK_KTO_REPLACED;
|
8519
|
-
case 4444: strcpy(kto,"1304610900"); return OK_KTO_REPLACED;
|
8520
|
-
case 5000: strcpy(kto,"1395676000"); return OK_KTO_REPLACED;
|
8521
|
-
case 5510: strcpy(kto,"1611754300"); return OK_KTO_REPLACED;
|
8522
|
-
case 6060: strcpy(kto,"1000400200"); return OK_KTO_REPLACED;
|
8523
|
-
case 6800: strcpy(kto,"1296401301"); return OK_KTO_REPLACED;
|
8524
|
-
case 55555: strcpy(kto,"1027758200"); return OK_KTO_REPLACED;
|
8525
|
-
case 60000: strcpy(kto,"1005007001"); return OK_KTO_REPLACED;
|
8526
|
-
case 66666: strcpy(kto,"1299807801"); return OK_KTO_REPLACED;
|
8527
|
-
case 102030: strcpy(kto,"1837501600"); return OK_KTO_REPLACED;
|
8528
|
-
case 121212: strcpy(kto,"1249461502"); return OK_KTO_REPLACED;
|
8529
|
-
case 130500: strcpy(kto,"1413482100"); return OK_KTO_REPLACED;
|
8530
|
-
case 202020: strcpy(kto,"1213431002"); return OK_KTO_REPLACED;
|
8531
|
-
case 414141: strcpy(kto,"1010555101"); return OK_KTO_REPLACED;
|
8532
|
-
case 666666: strcpy(kto,"1798758900"); return OK_KTO_REPLACED;
|
8533
|
-
case 5000000: strcpy(kto,"1403124100"); return OK_KTO_REPLACED;
|
8564
|
+
case 36: strcpy(kto,"1010240003"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8565
|
+
case 50: strcpy(kto,"1328506100"); if(b!=48010111){strcpy(blz,"48010111"); *bicp="ESSEDE5F480"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8566
|
+
case 99: strcpy(kto,"1826063000"); if(b!=43010111){strcpy(blz,"43010111"); *bicp="ESSEDE5F430"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8567
|
+
case 110: strcpy(kto,"1015597802"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8568
|
+
case 240: strcpy(kto,"1010240000"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8569
|
+
case 333: strcpy(kto,"1011296100"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8570
|
+
case 555: strcpy(kto,"1600220800"); if(b!=10010111){strcpy(blz,"10010111"); *bicp="ESSEDE5F100"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8571
|
+
case 556: strcpy(kto,"1000556100"); if(b!=39010111){strcpy(blz,"39010111"); *bicp="ESSEDE5F390"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8572
|
+
case 606: strcpy(kto,"1967153801"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8573
|
+
case 700: strcpy(kto,"1070088000"); if(b!=26510111){strcpy(blz,"26510111"); *bicp="ESSEDE5F265"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8574
|
+
case 777: strcpy(kto,"1006015200"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8575
|
+
case 999: strcpy(kto,"1010240001"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8576
|
+
case 1234: strcpy(kto,"1369152400"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8577
|
+
case 1313: strcpy(kto,"1017500000"); if(b!=57010111){strcpy(blz,"57010111"); *bicp="ESSEDE5F570"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8578
|
+
case 1888: strcpy(kto,"1241113000"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8579
|
+
case 1953: strcpy(kto,"1026500901"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8580
|
+
case 1998: strcpy(kto,"1547620500"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8581
|
+
case 2007: strcpy(kto,"1026500907"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8582
|
+
case 4004: strcpy(kto,"1635100100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8583
|
+
case 4444: strcpy(kto,"1304610900"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8584
|
+
case 5000: strcpy(kto,"1395676000"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8585
|
+
case 5510: strcpy(kto,"1611754300"); if(b!=29010111){strcpy(blz,"29010111"); *bicp="ESSEDE5F290"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8586
|
+
case 6060: strcpy(kto,"1000400200"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8587
|
+
case 6800: strcpy(kto,"1296401301"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8588
|
+
case 55555: strcpy(kto,"1027758200"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8589
|
+
case 60000: strcpy(kto,"1005007001"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8590
|
+
case 66666: strcpy(kto,"1299807801"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8591
|
+
case 102030: strcpy(kto,"1837501600"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8592
|
+
case 121212: strcpy(kto,"1249461502"); if(b!=70010111){strcpy(blz,"70010111"); *bicp="ESSEDE5F700"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8593
|
+
case 130500: strcpy(kto,"1413482100"); if(b!=30010111){strcpy(blz,"30010111"); *bicp="ESSEDE5F300"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8594
|
+
case 202020: strcpy(kto,"1213431002"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8595
|
+
case 414141: strcpy(kto,"1010555101"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8596
|
+
case 666666: strcpy(kto,"1798758900"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8597
|
+
case 5000000: strcpy(kto,"1403124100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8534
8598
|
}
|
8535
8599
|
else if(k1==5 && k2==500500){
|
8536
8600
|
strcpy(kto,"1045720000");
|
8537
|
-
|
8601
|
+
if(b!=60010111){
|
8602
|
+
strcpy(blz,"60010111");
|
8603
|
+
*bicp="ESSEDE5F600";
|
8604
|
+
return OK_BLZ_KTO_REPLACED;
|
8605
|
+
}
|
8606
|
+
else
|
8607
|
+
return OK_KTO_REPLACED;
|
8538
8608
|
}
|
8539
8609
|
|
8540
8610
|
/* f�r die folgenden BLZs sind nur zehnstelllige Kontonummern erlaubt: */
|
@@ -8607,18 +8677,25 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8607
8677
|
default:
|
8608
8678
|
break;
|
8609
8679
|
}
|
8680
|
+
RETURN_OK;
|
8610
8681
|
|
8611
|
-
|
8682
|
+
/* Badenia Bausparkasse */
|
8683
|
+
case 57:
|
8684
|
+
if(b!=66010200){
|
8685
|
+
strcpy(blz,"66010200");
|
8686
|
+
*bicp="BBSPDE6KXXX";
|
8687
|
+
return OK_BLZ_REPLACED;
|
8688
|
+
}
|
8689
|
+
RETURN_OK;
|
8612
8690
|
|
8613
8691
|
|
8614
|
-
/* Lumpensammler f�r Regeln */
|
8692
|
+
/* Lumpensammler f�r unbekannte Regeln */
|
8615
8693
|
default:
|
8616
8694
|
return IBAN_RULE_UNKNOWN;
|
8617
8695
|
}
|
8618
8696
|
}
|
8619
8697
|
#endif
|
8620
8698
|
|
8621
|
-
#line 9155 "konto_check.lxx"
|
8622
8699
|
/* Funktion lut_multiple() +���2 */
|
8623
8700
|
/* ###########################################################################
|
8624
8701
|
* # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
|
@@ -8876,6 +8953,8 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8876
8953
|
}
|
8877
8954
|
FREE(zweigstelle_f);
|
8878
8955
|
FREE(zweigstelle_f1);
|
8956
|
+
FREE(sort_bic_h);
|
8957
|
+
FREE(bic_h);
|
8879
8958
|
FREE(sort_bic);
|
8880
8959
|
FREE(sort_name);
|
8881
8960
|
FREE(sort_name_kurz);
|
@@ -8884,7 +8963,6 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8884
8963
|
FREE(sort_pz_f);
|
8885
8964
|
FREE(sort_plz);
|
8886
8965
|
FREE(sort_iban_regel);
|
8887
|
-
#line 9415 "konto_check.lxx"
|
8888
8966
|
if(name_raw && name_data!=name_raw)
|
8889
8967
|
FREE(name_raw);
|
8890
8968
|
else
|
@@ -8914,6 +8992,7 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8914
8992
|
FREE(loeschung);
|
8915
8993
|
FREE(blz);
|
8916
8994
|
FREE(startidx);
|
8995
|
+
FREE(hs_idx);
|
8917
8996
|
FREE(plz);
|
8918
8997
|
FREE(filialen);
|
8919
8998
|
FREE(pan);
|
@@ -8947,7 +9026,6 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8947
9026
|
lut_cleanup(); /* neuer Versuch, aufzur�umen */
|
8948
9027
|
RETURN(INIT_FATAL_ERROR);
|
8949
9028
|
}
|
8950
|
-
#line 9483 "konto_check.lxx"
|
8951
9029
|
init_status&=1;
|
8952
9030
|
init_in_progress=0;
|
8953
9031
|
return OK;
|
@@ -9033,6 +9111,7 @@ static int read_lut(char *filename,int *cnt_blz)
|
|
9033
9111
|
/* zun�chst u.U. Speicher freigeben, damit keine Lecks entstehen */
|
9034
9112
|
FREE(blz);
|
9035
9113
|
FREE(startidx);
|
9114
|
+
FREE(hs_idx);
|
9036
9115
|
FREE(hash);
|
9037
9116
|
FREE(pz_methoden);
|
9038
9117
|
if(!(blz=calloc(j=cnt+100,sizeof(int))) || !(startidx=calloc(j,sizeof(int)))
|
@@ -9119,8 +9198,8 @@ static void init_atoi_table(void)
|
|
9119
9198
|
unsigned long l;
|
9120
9199
|
|
9121
9200
|
#if 1
|
9122
|
-
/* �nderungen zum
|
9123
|
-
if(time(NULL)>
|
9201
|
+
/* �nderungen zum 3.3.2014 aktivieren */
|
9202
|
+
if(time(NULL)>1393801200)pz_aenderungen_aktivieren=1;
|
9124
9203
|
#endif
|
9125
9204
|
|
9126
9205
|
/* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
|
@@ -9245,6 +9324,8 @@ static void init_atoi_table(void)
|
|
9245
9324
|
lut2_feld_namen[LUT2_2_IBAN_REGEL]="LUT2_2_IBAN_REGEL";
|
9246
9325
|
lut2_feld_namen[LUT2_IBAN_REGEL_SORT]="LUT2_IBAN_REGEL_SORT";
|
9247
9326
|
lut2_feld_namen[LUT2_2_IBAN_REGEL_SORT]="LUT2_2_IBAN_REGEL_SORT";
|
9327
|
+
lut2_feld_namen[LUT2_BIC_H_SORT]="LUT2_BIC_H_SORT";
|
9328
|
+
lut2_feld_namen[LUT2_2_BIC_H_SORT]="LUT2_2_BIC_H_SORT";
|
9248
9329
|
|
9249
9330
|
lut_block_idx[1]=0;
|
9250
9331
|
lut_block_idx[2]=0;
|
@@ -9272,6 +9353,7 @@ static void init_atoi_table(void)
|
|
9272
9353
|
lut_block_idx[24]=0;
|
9273
9354
|
lut_block_idx[25]=0;
|
9274
9355
|
lut_block_idx[26]=0;
|
9356
|
+
lut_block_idx[27]=0;
|
9275
9357
|
|
9276
9358
|
lut_block_name1[1]="BLZ";
|
9277
9359
|
lut_block_name1[2]="FILIALEN";
|
@@ -9299,6 +9381,7 @@ static void init_atoi_table(void)
|
|
9299
9381
|
lut_block_name1[24]="VOLLTEXT_IDX";
|
9300
9382
|
lut_block_name1[25]="IBAN_REGEL";
|
9301
9383
|
lut_block_name1[26]="IBAN_REGEL_SORT";
|
9384
|
+
lut_block_name1[27]="BIC_H_SORT";
|
9302
9385
|
lut_block_name1[101]="BLZ (2)";
|
9303
9386
|
lut_block_name1[102]="FILIALEN (2)";
|
9304
9387
|
lut_block_name1[103]="NAME (2)";
|
@@ -9325,6 +9408,7 @@ static void init_atoi_table(void)
|
|
9325
9408
|
lut_block_name1[124]="VOLLTEXT_IDX (2)";
|
9326
9409
|
lut_block_name1[125]="IBAN_REGEL (2)";
|
9327
9410
|
lut_block_name1[126]="IBAN_REGEL_SORT (2)";
|
9411
|
+
lut_block_name1[127]="BIC_H_SORT (2)";
|
9328
9412
|
|
9329
9413
|
lut_block_name2[1]="1. BLZ";
|
9330
9414
|
lut_block_name2[2]="1. Anzahl Fil.";
|
@@ -9352,6 +9436,7 @@ static void init_atoi_table(void)
|
|
9352
9436
|
lut_block_name2[24]="1. Volltext idx";
|
9353
9437
|
lut_block_name2[25]="1. IBAN Regel";
|
9354
9438
|
lut_block_name2[26]="1. IBAN Regel idx";
|
9439
|
+
lut_block_name2[27]="1. BIC Hauptst.idx";
|
9355
9440
|
lut_block_name2[101]="2. BLZ";
|
9356
9441
|
lut_block_name2[102]="2. Anzahl Fil.";
|
9357
9442
|
lut_block_name2[103]="2. Name";
|
@@ -9378,8 +9463,8 @@ static void init_atoi_table(void)
|
|
9378
9463
|
lut_block_name2[124]="2. Volltext idx";
|
9379
9464
|
lut_block_name2[125]="2. IBAN Regel";
|
9380
9465
|
lut_block_name2[126]="2. IBAN Regel idx";
|
9381
|
-
|
9382
|
-
|
9466
|
+
lut_block_name2[127]="2. BIC Hauptst.idx";
|
9467
|
+
lut_blocklen_max=453;
|
9383
9468
|
init_status|=1;
|
9384
9469
|
}
|
9385
9470
|
|
@@ -9439,7 +9524,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9439
9524
|
|
9440
9525
|
switch(pz_methode){
|
9441
9526
|
|
9442
|
-
#line 9786 "konto_check.lxx"
|
9443
9527
|
/* Berechnungsmethoden 00 bis 09 +���3
|
9444
9528
|
Berechnung nach der Methode 00 +���4 */
|
9445
9529
|
/*
|
@@ -9875,7 +9959,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9875
9959
|
retvals->methode="12";
|
9876
9960
|
retvals->pz_methode=12;
|
9877
9961
|
}
|
9878
|
-
#endif
|
9962
|
+
#endif
|
9879
9963
|
return NOT_DEFINED;
|
9880
9964
|
|
9881
9965
|
/* Berechnung nach der Methode 13 +���4 */
|
@@ -11768,7 +11852,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11768
11852
|
* ######################################################################
|
11769
11853
|
*/
|
11770
11854
|
|
11771
|
-
#line 11791 "konto_check.lxx"
|
11772
11855
|
case 51:
|
11773
11856
|
if(*(kto+2)=='9'){ /* Ausnahme */
|
11774
11857
|
|
@@ -12030,8 +12113,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12030
12113
|
else
|
12031
12114
|
return FALSE;
|
12032
12115
|
|
12033
|
-
#line 12005 "konto_check.lxx"
|
12034
|
-
#line 12007 "konto_check.lxx"
|
12035
12116
|
/* Berechnung nach der Methode 53 +���4 */
|
12036
12117
|
/*
|
12037
12118
|
* ######################################################################
|
@@ -12112,7 +12193,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12112
12193
|
kto_alt[5]=kto[3];
|
12113
12194
|
for(ptr=kto+4;*ptr=='0' && *ptr;ptr++);
|
12114
12195
|
for(dptr=kto_alt+6;(*dptr= *ptr++);dptr++);
|
12115
|
-
kto=kto_alt;
|
12116
12196
|
p1=kto_alt[5]; /* Pr�fziffer merken */
|
12117
12197
|
kto_alt[5]='0';
|
12118
12198
|
for(pz=0,ptr=kto_alt+strlen(kto_alt)-1,i=0;ptr>=kto_alt;ptr--,i++)
|
@@ -12133,7 +12213,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12133
12213
|
if(retvals)retvals->pz=pz;
|
12134
12214
|
#endif
|
12135
12215
|
INVALID_PZ10;
|
12136
|
-
if(*(
|
12216
|
+
if(*(kto_alt+5)-'0'==pz)
|
12137
12217
|
return ok;
|
12138
12218
|
else
|
12139
12219
|
return FALSE;
|
@@ -12331,8 +12411,13 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12331
12411
|
* # bewerten. #
|
12332
12412
|
* ######################################################################
|
12333
12413
|
*/
|
12334
|
-
#line 12277 "konto_check.lxx"
|
12335
12414
|
case 57:
|
12415
|
+
#if DEBUG>0
|
12416
|
+
if(retvals){
|
12417
|
+
retvals->methode="57";
|
12418
|
+
retvals->pz_methode=57;
|
12419
|
+
}
|
12420
|
+
#endif
|
12336
12421
|
#if DEBUG>0
|
12337
12422
|
case 1057: /* die Untermethoden werden in einem eigenen switch abgearbeitet, daher alle hier zusammen */
|
12338
12423
|
case 2057:
|
@@ -12940,7 +13025,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12940
13025
|
/* Berechnung nach der Methode 66 +���4 */
|
12941
13026
|
/*
|
12942
13027
|
* ######################################################################
|
12943
|
-
* #
|
13028
|
+
* # Berechnung nach der Methode 66 (ge�ndert zum 3.3.2014) #
|
12944
13029
|
* ######################################################################
|
12945
13030
|
* # Aufbau der 9-stelligen Kontonummer (innerhalb des #
|
12946
13031
|
* # zwischenbetrieblich 10-stelligen Feldes) #
|
@@ -12964,13 +13049,27 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12964
13049
|
* # von 0 ist die Pr�fziffer 1. Bei einem Rest von 1 ist die #
|
12965
13050
|
* # Pr�fziffer 0 Verbleibt ein Rest von 2 bis 10, so wird dieser vom #
|
12966
13051
|
* # Divison (11) subtrahiert. Die Differenz ist dann die Pr�fziffer. #
|
13052
|
+
* # #
|
13053
|
+
* # Ausnahme: #
|
13054
|
+
* # Ist die Stelle 2 der Kontonummer der Wert = 9, ist die Kontonummer #
|
13055
|
+
* # nicht pr�fziffergesichert; es gilt die Methode 09 (keine #
|
13056
|
+
* # Pr�fzifferberechnung) #
|
12967
13057
|
* ######################################################################
|
12968
13058
|
*/
|
12969
13059
|
case 66:
|
12970
13060
|
#if DEBUG>0
|
13061
|
+
case 2066:
|
12971
13062
|
if(retvals){
|
12972
|
-
retvals->methode="
|
12973
|
-
retvals->pz_methode=
|
13063
|
+
retvals->methode="66b";
|
13064
|
+
retvals->pz_methode=2066;
|
13065
|
+
}
|
13066
|
+
#endif
|
13067
|
+
if(pz_aenderungen_aktivieren && kto[1]=='9')return OK_NO_CHK;
|
13068
|
+
#if DEBUG>0
|
13069
|
+
case 1066:
|
13070
|
+
if(retvals){
|
13071
|
+
retvals->methode="66a";
|
13072
|
+
retvals->pz_methode=1066;
|
12974
13073
|
}
|
12975
13074
|
#endif
|
12976
13075
|
if(*kto!='0')return INVALID_KTO;
|
@@ -17429,7 +17528,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
17429
17528
|
kto_alt[5]=kto[3];
|
17430
17529
|
for(ptr=kto+4;*ptr=='0' && *ptr;ptr++);
|
17431
17530
|
for(dptr=kto_alt+6;(*dptr= *ptr++);dptr++);
|
17432
|
-
kto=kto_alt;
|
17433
17531
|
p1=kto_alt[5]; /* Pr�fziffer merken */
|
17434
17532
|
kto_alt[5]='0';
|
17435
17533
|
for(pz=0,ptr=kto_alt+strlen(kto_alt)-1,i=0;ptr>=kto_alt;ptr--,i++)
|
@@ -17450,7 +17548,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
17450
17548
|
if(retvals)retvals->pz=pz;
|
17451
17549
|
#endif
|
17452
17550
|
INVALID_PZ10;
|
17453
|
-
if(*(
|
17551
|
+
if(*(kto_alt+5)-'0'==pz)
|
17454
17552
|
return ok;
|
17455
17553
|
else
|
17456
17554
|
return FALSE;
|
@@ -18509,7 +18607,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
18509
18607
|
* 7-stellige Nummern (Hinweis T.F.); stimmt auch mit
|
18510
18608
|
* http://www.kontonummern.de/check.php �berein.
|
18511
18609
|
*/
|
18512
|
-
|
18610
|
+
#if DEBUG>0
|
18513
18611
|
case 3127:
|
18514
18612
|
if(retvals){
|
18515
18613
|
retvals->methode="C7c";
|
@@ -18535,7 +18633,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
18535
18633
|
CHECK_PZX10;
|
18536
18634
|
}
|
18537
18635
|
/* hier darf kein else-Zweig hin, damit nach 63c auch 63a gepr�ft wird */
|
18538
|
-
|
18636
|
+
#if DEBUG>0
|
18539
18637
|
case 1127:
|
18540
18638
|
if(retvals){
|
18541
18639
|
retvals->methode="C7a";
|
@@ -19826,8 +19924,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
19826
19924
|
* # #
|
19827
19925
|
* # Anmerkung (M.P.): nach der Multiplikation wird ein Wert von 2442 #
|
19828
19926
|
* # subtrahiert; dies ist ein Vielfaches von 11, das sich bei der #
|
19829
|
-
* # "Kontonummer"
|
19830
|
-
* # Ergebnis nur unn�tig vergr��ert; die Subtraktion �ndert das
|
19927
|
+
* # "Kontonummer" 00000000 ergibt. Durch die ASCII-Darstellung wird #
|
19928
|
+
* # das Ergebnis nur unn�tig vergr��ert; die Subtraktion �ndert das #
|
19831
19929
|
* # Endergebnis nicht, bringt aber die Summe in einen Bereich, der f�r #
|
19832
19930
|
* # das Makros MOD_11_352 akzeptabel ist. #
|
19833
19931
|
* ######################################################################
|
@@ -19877,7 +19975,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
19877
19975
|
return NOT_IMPLEMENTED;
|
19878
19976
|
}
|
19879
19977
|
}
|
19880
|
-
#line 18644 "konto_check.lxx"
|
19881
19978
|
|
19882
19979
|
/*
|
19883
19980
|
* ######################################################################
|
@@ -20118,7 +20215,6 @@ DLL_EXPORT int kto_check_pz(char *pz,char *kto,char *blz)
|
|
20118
20215
|
* ###########################################################################
|
20119
20216
|
*/
|
20120
20217
|
|
20121
|
-
#line 18885 "konto_check.lxx"
|
20122
20218
|
static int kto_check_blz_x(char *blz,char *kto,int *uk_cnt)
|
20123
20219
|
{
|
20124
20220
|
char *ptr,*dptr,xkto[32];
|
@@ -20455,7 +20551,6 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
|
|
20455
20551
|
* # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
|
20456
20552
|
* ###########################################################################
|
20457
20553
|
*/
|
20458
|
-
#line 19222 "konto_check.lxx"
|
20459
20554
|
DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
|
20460
20555
|
{
|
20461
20556
|
int untermethode,pz_methode;
|
@@ -20619,7 +20714,6 @@ DLL_EXPORT int kto_check(char *pz_or_blz,char *kto,char *lut_name)
|
|
20619
20714
|
}
|
20620
20715
|
}
|
20621
20716
|
|
20622
|
-
#line 19386 "konto_check.lxx"
|
20623
20717
|
/* Funktion bic_check() +���1 */
|
20624
20718
|
/* ###########################################################################
|
20625
20719
|
* # Die Funktion bic_check() testet ob ein BIC g�ltig ist. Falls ja, wird #
|
@@ -20660,9 +20754,11 @@ DLL_EXPORT const char *kto_check_retval2txt(int retval)
|
|
20660
20754
|
DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
20661
20755
|
{
|
20662
20756
|
switch(retval){
|
20757
|
+
case IBAN_ONLY_GERMAN: return "Es werden nur deutsche IBANs unterst�tzt";
|
20758
|
+
case INVALID_PARAMETER_TYPE: return "Falscher Parametertyp f�r die Funktion";
|
20663
20759
|
case BIC_ONLY_GERMAN: return "Es werden nur deutsche BICs unterst�tzt";
|
20664
20760
|
case INVALID_BIC_LENGTH: return "Die L�nge des BIC mu� genau 8 oder 11 Zeichen sein";
|
20665
|
-
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "Die IBAN-Pr�fsumme stimmt,
|
20761
|
+
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "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";
|
20666
20762
|
case IBAN_CHKSUM_OK_KC_NOT_INITIALIZED: return "Die IBAN-Pr�fsumme stimmt, konto_check wurde jedoch noch nicht initialisiert (Kontopr�fung nicht m�glich)";
|
20667
20763
|
case IBAN_CHKSUM_OK_BLZ_INVALID: return "Die IBAN-Pr�fsumme stimmt, die BLZ ist allerdings ung�ltig";
|
20668
20764
|
case IBAN_CHKSUM_OK_NACHFOLGE_BLZ_DEFINED: return "Die IBAN-Pr�fsumme stimmt, f�r die Bank gibt es allerdings eine (andere) Nachfolge-BLZ";
|
@@ -20674,7 +20770,7 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
20674
20770
|
case BLZ_BLACKLISTED: return "Die BLZ findet sich in der Ausschlussliste f�r IBAN-Berechnungen";
|
20675
20771
|
case BLZ_MARKED_AS_DELETED: return "Die BLZ ist in der Bundesbank-Datei als gel�scht markiert und somit ung�ltig";
|
20676
20772
|
case IBAN_CHKSUM_OK_SOMETHING_WRONG: return "Die IBAN-Pr�fsumme stimmt, es gibt allerdings einen Fehler in der eigenen IBAN-Bestimmung (wahrscheinlich falsch)";
|
20677
|
-
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "Die IBAN-Pr�fsumme stimmt,
|
20773
|
+
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "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";
|
20678
20774
|
case IBAN_CHKSUM_OK_RULE_IGNORED: return "Die IBAN-Pr�fsumme stimmt, es wurde allerdings eine IBAN-Regel nicht beachtet (wahrscheinlich falsch)";
|
20679
20775
|
case IBAN_CHKSUM_OK_UNTERKTO_MISSING: return "Die IBAN-Pr�fsumme stimmt, es fehlt aber ein Unterkonto (wahrscheinlich falsch)";
|
20680
20776
|
case IBAN_INVALID_RULE: return "Die BLZ passt nicht zur angegebenen IBAN-Regel";
|
@@ -20689,11 +20785,11 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
20689
20785
|
case LUT2_VOLLTEXT_INVALID_CHAR: return "Ung�ltiges Zeichen ( ()+-/&.,\' ) f�r die Volltextsuche gefunden";
|
20690
20786
|
case LUT2_VOLLTEXT_SINGLE_WORD_ONLY: return "Die Volltextsuche sucht jeweils nur ein einzelnes Wort, benutzen Sie lut_suche_multiple() zur Suche nach mehreren Worten";
|
20691
20787
|
case LUT_SUCHE_INVALID_RSC: return "die angegebene Suchresource ist ung�ltig";
|
20692
|
-
case LUT_SUCHE_INVALID_CMD: return "Suche
|
20693
|
-
case LUT_SUCHE_INVALID_CNT: return "Suche
|
20788
|
+
case LUT_SUCHE_INVALID_CMD: return "bei der Suche sind im Verkn�pfungsstring nur die Zeichen a-z sowie + und - erlaubt";
|
20789
|
+
case LUT_SUCHE_INVALID_CNT: return "bei der Suche m�ssen zwischen 1 und 26 Suchmuster angegeben werden";
|
20694
20790
|
case LUT2_VOLLTEXT_NOT_INITIALIZED: return "Das Feld Volltext wurde nicht initialisiert";
|
20695
20791
|
case NO_OWN_IBAN_CALCULATION: return "das Institut erlaubt keine eigene IBAN-Berechnung";
|
20696
|
-
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek
|
20792
|
+
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden";
|
20697
20793
|
case KTO_CHECK_INVALID_COMPRESSION_LIB: return "der angegebene Wert f�r die Default-Kompression ist ung�ltig";
|
20698
20794
|
case OK_UNTERKONTO_ATTACHED_OLD: return "(nicht mehr als Fehler, sondern positive Ausgabe - Dummy f�r den alten Wert)";
|
20699
20795
|
case KTO_CHECK_DEFAULT_BLOCK_INVALID: return "Ung�ltige Signatur im Default-Block";
|
@@ -20749,7 +20845,7 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
20749
20845
|
case LUT2_NOT_YET_VALID: return "Der Datensatz ist noch nicht g�ltig";
|
20750
20846
|
case LUT2_NO_LONGER_VALID: return "Der Datensatz ist nicht mehr g�ltig";
|
20751
20847
|
case LUT2_GUELTIGKEIT_SWAPPED: return "Im G�ltigkeitsdatum sind Anfangs- und Enddatum vertauscht";
|
20752
|
-
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene G�ltigkeitsdatum ist ung�ltig (
|
20848
|
+
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene G�ltigkeitsdatum ist ung�ltig (Sollformat ist JJJJMMTT-JJJJMMTT)";
|
20753
20849
|
case LUT2_INDEX_OUT_OF_RANGE: return "Der Index f�r die Filiale ist ung�ltig";
|
20754
20850
|
case LUT2_INIT_IN_PROGRESS: return "Die Bibliothek wird gerade neu initialisiert";
|
20755
20851
|
case LUT2_BLZ_NOT_INITIALIZED: return "Das Feld BLZ wurde nicht initialisiert";
|
@@ -20826,14 +20922,14 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
20826
20922
|
case OK_NACHFOLGE_BLZ_USED: return "ok, f�r die BLZ wurde allerdings die Nachfolge-BLZ eingesetzt";
|
20827
20923
|
case OK_KTO_REPLACED: return "ok, die Kontonummer wurde allerdings ersetzt";
|
20828
20924
|
case OK_BLZ_REPLACED: return "ok, die Bankleitzahl wurde allerdings ersetzt";
|
20829
|
-
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer
|
20925
|
+
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer wurden allerdings ersetzt";
|
20830
20926
|
case OK_IBAN_WITHOUT_KC_TEST: return "ok, die Bankverbindung ist (ohne Test) als richtig anzusehen";
|
20831
|
-
case OK_INVALID_FOR_IBAN: return "ok, f�r IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
20927
|
+
case OK_INVALID_FOR_IBAN: return "ok, f�r die die IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
20832
20928
|
case OK_HYPO_REQUIRES_KTO: return "ok, f�r die BIC-Bestimmung der ehemaligen Hypo-Bank f�r IBAN wird i.A. zus�tzlich die Kontonummer ben�tigt";
|
20833
20929
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Pr�fziffer";
|
20834
20930
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angef�gt";
|
20931
|
+
case OK_SHORT_BIC_USED: return "ok, f�r den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
20835
20932
|
default: return "ung�ltiger R�ckgabewert";
|
20836
|
-
#line 19428 "konto_check.lxx"
|
20837
20933
|
}
|
20838
20934
|
}
|
20839
20935
|
|
@@ -20849,9 +20945,11 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
20849
20945
|
DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
20850
20946
|
{
|
20851
20947
|
switch(retval){
|
20948
|
+
case IBAN_ONLY_GERMAN: return "Es werden nur deutsche IBANs unterst�tzt";
|
20949
|
+
case INVALID_PARAMETER_TYPE: return "Falscher Parametertyp f�r die Funktion";
|
20852
20950
|
case BIC_ONLY_GERMAN: return "Es werden nur deutsche BICs unterst�tzt";
|
20853
20951
|
case INVALID_BIC_LENGTH: return "Die L� nge des BIC mu� genau 8 oder 11 Zeichen sein";
|
20854
|
-
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "Die IBAN-Pr�fsumme stimmt,
|
20952
|
+
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "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";
|
20855
20953
|
case IBAN_CHKSUM_OK_KC_NOT_INITIALIZED: return "Die IBAN-Pr�fsumme stimmt, konto_check wurde jedoch noch nicht initialisiert (Kontopr�fung nicht m�glich)";
|
20856
20954
|
case IBAN_CHKSUM_OK_BLZ_INVALID: return "Die IBAN-Pr�fsumme stimmt, die BLZ ist allerdings ung�ltig";
|
20857
20955
|
case IBAN_CHKSUM_OK_NACHFOLGE_BLZ_DEFINED: return "Die IBAN-Pr�fsumme stimmt, f�r die Bank gibt es allerdings eine (andere) Nachfolge-BLZ";
|
@@ -20863,7 +20961,7 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
20863
20961
|
case BLZ_BLACKLISTED: return "Die BLZ findet sich in der Ausschlussliste f�r IBAN-Berechnungen";
|
20864
20962
|
case BLZ_MARKED_AS_DELETED: return "Die BLZ ist in der Bundesbank-Datei als gel�scht markiert und somit ung�ltig";
|
20865
20963
|
case IBAN_CHKSUM_OK_SOMETHING_WRONG: return "Die IBAN-Pr�fsumme stimmt, es gibt allerdings einen Fehler in der eigenen IBAN-Bestimmung (wahrscheinlich falsch)";
|
20866
|
-
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "Die IBAN-Pr�fsumme stimmt,
|
20964
|
+
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "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";
|
20867
20965
|
case IBAN_CHKSUM_OK_RULE_IGNORED: return "Die IBAN-Pr�fsumme stimmt, es wurde allerdings eine IBAN-Regel nicht beachtet (wahrscheinlich falsch)";
|
20868
20966
|
case IBAN_CHKSUM_OK_UNTERKTO_MISSING: return "Die IBAN-Pr�fsumme stimmt, es fehlt aber ein Unterkonto (wahrscheinlich falsch)";
|
20869
20967
|
case IBAN_INVALID_RULE: return "Die BLZ passt nicht zur angegebenen IBAN-Regel";
|
@@ -20878,11 +20976,11 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
20878
20976
|
case LUT2_VOLLTEXT_INVALID_CHAR: return "Ung�ltiges Zeichen ( ()+-/&.,\' ) f�r die Volltextsuche gefunden";
|
20879
20977
|
case LUT2_VOLLTEXT_SINGLE_WORD_ONLY: return "Die Volltextsuche sucht jeweils nur ein einzelnes Wort, benutzen Sie lut_suche_multiple() zur Suche nach mehreren Worten";
|
20880
20978
|
case LUT_SUCHE_INVALID_RSC: return "die angegebene Suchresource ist ung�ltig";
|
20881
|
-
case LUT_SUCHE_INVALID_CMD: return "Suche
|
20882
|
-
case LUT_SUCHE_INVALID_CNT: return "Suche
|
20979
|
+
case LUT_SUCHE_INVALID_CMD: return "bei der Suche sind im Verkn�pfungsstring nur die Zeichen a-z sowie + und - erlaubt";
|
20980
|
+
case LUT_SUCHE_INVALID_CNT: return "bei der Suche m�ssen zwischen 1 und 26 Suchmuster angegeben werden";
|
20883
20981
|
case LUT2_VOLLTEXT_NOT_INITIALIZED: return "Das Feld Volltext wurde nicht initialisiert";
|
20884
20982
|
case NO_OWN_IBAN_CALCULATION: return "das Institut erlaubt keine eigene IBAN-Berechnung";
|
20885
|
-
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek
|
20983
|
+
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden";
|
20886
20984
|
case KTO_CHECK_INVALID_COMPRESSION_LIB: return "der angegebene Wert f�r die Default-Kompression ist ung�ltig";
|
20887
20985
|
case OK_UNTERKONTO_ATTACHED_OLD: return "(nicht mehr als Fehler, sondern positive Ausgabe - Dummy f�r den alten Wert)";
|
20888
20986
|
case KTO_CHECK_DEFAULT_BLOCK_INVALID: return "Ung�ltige Signatur im Default-Block";
|
@@ -20938,7 +21036,7 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
20938
21036
|
case LUT2_NOT_YET_VALID: return "Der Datensatz ist noch nicht g�ltig";
|
20939
21037
|
case LUT2_NO_LONGER_VALID: return "Der Datensatz ist nicht mehr g�ltig";
|
20940
21038
|
case LUT2_GUELTIGKEIT_SWAPPED: return "Im G�ltigkeitsdatum sind Anfangs- und Enddatum vertauscht";
|
20941
|
-
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene G�ltigkeitsdatum ist ung�ltig (
|
21039
|
+
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene G�ltigkeitsdatum ist ung�ltig (Sollformat ist JJJJMMTT-JJJJMMTT)";
|
20942
21040
|
case LUT2_INDEX_OUT_OF_RANGE: return "Der Index f�r die Filiale ist ung�ltig";
|
20943
21041
|
case LUT2_INIT_IN_PROGRESS: return "Die Bibliothek wird gerade neu initialisiert";
|
20944
21042
|
case LUT2_BLZ_NOT_INITIALIZED: return "Das Feld BLZ wurde nicht initialisiert";
|
@@ -21015,14 +21113,14 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
21015
21113
|
case OK_NACHFOLGE_BLZ_USED: return "ok, f�r die BLZ wurde allerdings die Nachfolge-BLZ eingesetzt";
|
21016
21114
|
case OK_KTO_REPLACED: return "ok, die Kontonummer wurde allerdings ersetzt";
|
21017
21115
|
case OK_BLZ_REPLACED: return "ok, die Bankleitzahl wurde allerdings ersetzt";
|
21018
|
-
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer
|
21116
|
+
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer wurden allerdings ersetzt";
|
21019
21117
|
case OK_IBAN_WITHOUT_KC_TEST: return "ok, die Bankverbindung ist (ohne Test) als richtig anzusehen";
|
21020
|
-
case OK_INVALID_FOR_IBAN: return "ok, f�r IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
21118
|
+
case OK_INVALID_FOR_IBAN: return "ok, f�r die die IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
21021
21119
|
case OK_HYPO_REQUIRES_KTO: return "ok, f�r die BIC-Bestimmung der ehemaligen Hypo-Bank f�r IBAN wird i.A. zus� tzlich die Kontonummer ben�tigt";
|
21022
21120
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Pr�fziffer";
|
21023
21121
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angef�gt";
|
21122
|
+
case OK_SHORT_BIC_USED: return "ok, f�r den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
21024
21123
|
default: return "ung�ltiger R�ckgabewert";
|
21025
|
-
#line 19445 "konto_check.lxx"
|
21026
21124
|
}
|
21027
21125
|
}
|
21028
21126
|
|
@@ -21038,9 +21136,11 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
21038
21136
|
DLL_EXPORT const char *kto_check_retval2html(int retval)
|
21039
21137
|
{
|
21040
21138
|
switch(retval){
|
21139
|
+
case IBAN_ONLY_GERMAN: return "Es werden nur deutsche IBANs unterstützt";
|
21140
|
+
case INVALID_PARAMETER_TYPE: return "Falscher Parametertyp für die Funktion";
|
21041
21141
|
case BIC_ONLY_GERMAN: return "Es werden nur deutsche BICs unterstützt";
|
21042
21142
|
case INVALID_BIC_LENGTH: return "Die Länge des BIC muß genau 8 oder 11 Zeichen sein";
|
21043
|
-
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "Die IBAN-Prüfsumme stimmt,
|
21143
|
+
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "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";
|
21044
21144
|
case IBAN_CHKSUM_OK_KC_NOT_INITIALIZED: return "Die IBAN-Prüfsumme stimmt, konto_check wurde jedoch noch nicht initialisiert (Kontoprüfung nicht möglich)";
|
21045
21145
|
case IBAN_CHKSUM_OK_BLZ_INVALID: return "Die IBAN-Prüfsumme stimmt, die BLZ ist allerdings ungültig";
|
21046
21146
|
case IBAN_CHKSUM_OK_NACHFOLGE_BLZ_DEFINED: return "Die IBAN-Prüfsumme stimmt, für die Bank gibt es allerdings eine (andere) Nachfolge-BLZ";
|
@@ -21052,7 +21152,7 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
21052
21152
|
case BLZ_BLACKLISTED: return "Die BLZ findet sich in der Ausschlussliste für IBAN-Berechnungen";
|
21053
21153
|
case BLZ_MARKED_AS_DELETED: return "Die BLZ ist in der Bundesbank-Datei als gelöscht markiert und somit ungültig";
|
21054
21154
|
case IBAN_CHKSUM_OK_SOMETHING_WRONG: return "Die IBAN-Prüfsumme stimmt, es gibt allerdings einen Fehler in der eigenen IBAN-Bestimmung (wahrscheinlich falsch)";
|
21055
|
-
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "Die IBAN-Prüfsumme stimmt,
|
21155
|
+
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "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";
|
21056
21156
|
case IBAN_CHKSUM_OK_RULE_IGNORED: return "Die IBAN-Prüfsumme stimmt, es wurde allerdings eine IBAN-Regel nicht beachtet (wahrscheinlich falsch)";
|
21057
21157
|
case IBAN_CHKSUM_OK_UNTERKTO_MISSING: return "Die IBAN-Prüfsumme stimmt, es fehlt aber ein Unterkonto (wahrscheinlich falsch)";
|
21058
21158
|
case IBAN_INVALID_RULE: return "Die BLZ passt nicht zur angegebenen IBAN-Regel";
|
@@ -21064,14 +21164,14 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
21064
21164
|
case LUT2_IBAN_REGEL_NOT_INITIALIZED: return "Das Feld IBAN-Regel wurde nicht initialisiert";
|
21065
21165
|
case INVALID_IBAN_LENGTH: return "Die Länge der IBAN für das angegebene Länderkürzel ist falsch";
|
21066
21166
|
case LUT2_NO_ACCOUNT_GIVEN: return "Keine Bankverbindung/IBAN angegeben";
|
21067
|
-
case LUT2_VOLLTEXT_INVALID_CHAR: return "Ungültiges Zeichen ( ()
|
21167
|
+
case LUT2_VOLLTEXT_INVALID_CHAR: return "Ungültiges Zeichen ( ()+-/&.,\' ) für die Volltextsuche gefunden";
|
21068
21168
|
case LUT2_VOLLTEXT_SINGLE_WORD_ONLY: return "Die Volltextsuche sucht jeweils nur ein einzelnes Wort, benutzen Sie lut_suche_multiple() zur Suche nach mehreren Worten";
|
21069
21169
|
case LUT_SUCHE_INVALID_RSC: return "die angegebene Suchresource ist ungültig";
|
21070
|
-
case LUT_SUCHE_INVALID_CMD: return "Suche
|
21071
|
-
case LUT_SUCHE_INVALID_CNT: return "Suche
|
21170
|
+
case LUT_SUCHE_INVALID_CMD: return "bei der Suche sind im Verknüpfungsstring nur die Zeichen a-z sowie + und - erlaubt";
|
21171
|
+
case LUT_SUCHE_INVALID_CNT: return "bei der Suche müssen zwischen 1 und 26 Suchmuster angegeben werden";
|
21072
21172
|
case LUT2_VOLLTEXT_NOT_INITIALIZED: return "Das Feld Volltext wurde nicht initialisiert";
|
21073
21173
|
case NO_OWN_IBAN_CALCULATION: return "das Institut erlaubt keine eigene IBAN-Berechnung";
|
21074
|
-
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek
|
21174
|
+
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden";
|
21075
21175
|
case KTO_CHECK_INVALID_COMPRESSION_LIB: return "der angegebene Wert für die Default-Kompression ist ungültig";
|
21076
21176
|
case OK_UNTERKONTO_ATTACHED_OLD: return "(nicht mehr als Fehler, sondern positive Ausgabe - Dummy für den alten Wert)";
|
21077
21177
|
case KTO_CHECK_DEFAULT_BLOCK_INVALID: return "Ungültige Signatur im Default-Block";
|
@@ -21127,7 +21227,7 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
21127
21227
|
case LUT2_NOT_YET_VALID: return "Der Datensatz ist noch nicht gültig";
|
21128
21228
|
case LUT2_NO_LONGER_VALID: return "Der Datensatz ist nicht mehr gültig";
|
21129
21229
|
case LUT2_GUELTIGKEIT_SWAPPED: return "Im Gültigkeitsdatum sind Anfangs- und Enddatum vertauscht";
|
21130
|
-
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene Gültigkeitsdatum ist ungültig (
|
21230
|
+
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene Gültigkeitsdatum ist ungültig (Sollformat ist JJJJMMTT-JJJJMMTT)";
|
21131
21231
|
case LUT2_INDEX_OUT_OF_RANGE: return "Der Index für die Filiale ist ungültig";
|
21132
21232
|
case LUT2_INIT_IN_PROGRESS: return "Die Bibliothek wird gerade neu initialisiert";
|
21133
21233
|
case LUT2_BLZ_NOT_INITIALIZED: return "Das Feld BLZ wurde nicht initialisiert";
|
@@ -21204,14 +21304,14 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
21204
21304
|
case OK_NACHFOLGE_BLZ_USED: return "ok, für die BLZ wurde allerdings die Nachfolge-BLZ eingesetzt";
|
21205
21305
|
case OK_KTO_REPLACED: return "ok, die Kontonummer wurde allerdings ersetzt";
|
21206
21306
|
case OK_BLZ_REPLACED: return "ok, die Bankleitzahl wurde allerdings ersetzt";
|
21207
|
-
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer
|
21307
|
+
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer wurden allerdings ersetzt";
|
21208
21308
|
case OK_IBAN_WITHOUT_KC_TEST: return "ok, die Bankverbindung ist (ohne Test) als richtig anzusehen";
|
21209
|
-
case OK_INVALID_FOR_IBAN: return "ok, für IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
21309
|
+
case OK_INVALID_FOR_IBAN: return "ok, für die die IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
21210
21310
|
case OK_HYPO_REQUIRES_KTO: return "ok, für die BIC-Bestimmung der ehemaligen Hypo-Bank für IBAN wird i.A. zusätzlich die Kontonummer benötigt";
|
21211
21311
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Prüfziffer";
|
21212
21312
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angefügt";
|
21313
|
+
case OK_SHORT_BIC_USED: return "ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
21213
21314
|
default: return "ungültiger Rückgabewert";
|
21214
|
-
#line 19462 "konto_check.lxx"
|
21215
21315
|
}
|
21216
21316
|
}
|
21217
21317
|
|
@@ -21227,9 +21327,11 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
21227
21327
|
DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
21228
21328
|
{
|
21229
21329
|
switch(retval){
|
21330
|
+
case IBAN_ONLY_GERMAN: return "Es werden nur deutsche IBANs unterstützt";
|
21331
|
+
case INVALID_PARAMETER_TYPE: return "Falscher Parametertyp für die Funktion";
|
21230
21332
|
case BIC_ONLY_GERMAN: return "Es werden nur deutsche BICs unterstützt";
|
21231
21333
|
case INVALID_BIC_LENGTH: return "Die Länge des BIC muß genau 8 oder 11 Zeichen sein";
|
21232
|
-
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "Die IBAN-Prüfsumme stimmt,
|
21334
|
+
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "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";
|
21233
21335
|
case IBAN_CHKSUM_OK_KC_NOT_INITIALIZED: return "Die IBAN-Prüfsumme stimmt, konto_check wurde jedoch noch nicht initialisiert (Kontoprüfung nicht möglich)";
|
21234
21336
|
case IBAN_CHKSUM_OK_BLZ_INVALID: return "Die IBAN-Prüfsumme stimmt, die BLZ ist allerdings ungültig";
|
21235
21337
|
case IBAN_CHKSUM_OK_NACHFOLGE_BLZ_DEFINED: return "Die IBAN-Prüfsumme stimmt, für die Bank gibt es allerdings eine (andere) Nachfolge-BLZ";
|
@@ -21241,7 +21343,7 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
21241
21343
|
case BLZ_BLACKLISTED: return "Die BLZ findet sich in der Ausschlussliste für IBAN-Berechnungen";
|
21242
21344
|
case BLZ_MARKED_AS_DELETED: return "Die BLZ ist in der Bundesbank-Datei als gelöscht markiert und somit ungültig";
|
21243
21345
|
case IBAN_CHKSUM_OK_SOMETHING_WRONG: return "Die IBAN-Prüfsumme stimmt, es gibt allerdings einen Fehler in der eigenen IBAN-Bestimmung (wahrscheinlich falsch)";
|
21244
|
-
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "Die IBAN-Prüfsumme stimmt,
|
21346
|
+
case IBAN_CHKSUM_OK_NO_IBAN_CALCULATION: return "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";
|
21245
21347
|
case IBAN_CHKSUM_OK_RULE_IGNORED: return "Die IBAN-Prüfsumme stimmt, es wurde allerdings eine IBAN-Regel nicht beachtet (wahrscheinlich falsch)";
|
21246
21348
|
case IBAN_CHKSUM_OK_UNTERKTO_MISSING: return "Die IBAN-Prüfsumme stimmt, es fehlt aber ein Unterkonto (wahrscheinlich falsch)";
|
21247
21349
|
case IBAN_INVALID_RULE: return "Die BLZ passt nicht zur angegebenen IBAN-Regel";
|
@@ -21256,11 +21358,11 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
21256
21358
|
case LUT2_VOLLTEXT_INVALID_CHAR: return "Ungültiges Zeichen ( ()+-/&.,\' ) für die Volltextsuche gefunden";
|
21257
21359
|
case LUT2_VOLLTEXT_SINGLE_WORD_ONLY: return "Die Volltextsuche sucht jeweils nur ein einzelnes Wort, benutzen Sie lut_suche_multiple() zur Suche nach mehreren Worten";
|
21258
21360
|
case LUT_SUCHE_INVALID_RSC: return "die angegebene Suchresource ist ungültig";
|
21259
|
-
case LUT_SUCHE_INVALID_CMD: return "Suche
|
21260
|
-
case LUT_SUCHE_INVALID_CNT: return "Suche
|
21361
|
+
case LUT_SUCHE_INVALID_CMD: return "bei der Suche sind im Verknüpfungsstring nur die Zeichen a-z sowie + und - erlaubt";
|
21362
|
+
case LUT_SUCHE_INVALID_CNT: return "bei der Suche müssen zwischen 1 und 26 Suchmuster angegeben werden";
|
21261
21363
|
case LUT2_VOLLTEXT_NOT_INITIALIZED: return "Das Feld Volltext wurde nicht initialisiert";
|
21262
21364
|
case NO_OWN_IBAN_CALCULATION: return "das Institut erlaubt keine eigene IBAN-Berechnung";
|
21263
|
-
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek
|
21365
|
+
case KTO_CHECK_UNSUPPORTED_COMPRESSION: return "die notwendige Kompressions-Bibliothek wurde beim Kompilieren nicht eingebunden";
|
21264
21366
|
case KTO_CHECK_INVALID_COMPRESSION_LIB: return "der angegebene Wert für die Default-Kompression ist ungültig";
|
21265
21367
|
case OK_UNTERKONTO_ATTACHED_OLD: return "(nicht mehr als Fehler, sondern positive Ausgabe - Dummy für den alten Wert)";
|
21266
21368
|
case KTO_CHECK_DEFAULT_BLOCK_INVALID: return "Ungültige Signatur im Default-Block";
|
@@ -21316,7 +21418,7 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
21316
21418
|
case LUT2_NOT_YET_VALID: return "Der Datensatz ist noch nicht gültig";
|
21317
21419
|
case LUT2_NO_LONGER_VALID: return "Der Datensatz ist nicht mehr gültig";
|
21318
21420
|
case LUT2_GUELTIGKEIT_SWAPPED: return "Im Gültigkeitsdatum sind Anfangs- und Enddatum vertauscht";
|
21319
|
-
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene Gültigkeitsdatum ist ungültig (
|
21421
|
+
case LUT2_INVALID_GUELTIGKEIT: return "Das angegebene Gültigkeitsdatum ist ungültig (Sollformat ist JJJJMMTT-JJJJMMTT)";
|
21320
21422
|
case LUT2_INDEX_OUT_OF_RANGE: return "Der Index für die Filiale ist ungültig";
|
21321
21423
|
case LUT2_INIT_IN_PROGRESS: return "Die Bibliothek wird gerade neu initialisiert";
|
21322
21424
|
case LUT2_BLZ_NOT_INITIALIZED: return "Das Feld BLZ wurde nicht initialisiert";
|
@@ -21393,14 +21495,14 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
21393
21495
|
case OK_NACHFOLGE_BLZ_USED: return "ok, für die BLZ wurde allerdings die Nachfolge-BLZ eingesetzt";
|
21394
21496
|
case OK_KTO_REPLACED: return "ok, die Kontonummer wurde allerdings ersetzt";
|
21395
21497
|
case OK_BLZ_REPLACED: return "ok, die Bankleitzahl wurde allerdings ersetzt";
|
21396
|
-
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer
|
21498
|
+
case OK_BLZ_KTO_REPLACED: return "ok, die Bankleitzahl und Kontonummer wurden allerdings ersetzt";
|
21397
21499
|
case OK_IBAN_WITHOUT_KC_TEST: return "ok, die Bankverbindung ist (ohne Test) als richtig anzusehen";
|
21398
|
-
case OK_INVALID_FOR_IBAN: return "ok, für IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
21500
|
+
case OK_INVALID_FOR_IBAN: return "ok, für die die IBAN ist (durch eine Regel) allerdings ein anderer BIC definiert";
|
21399
21501
|
case OK_HYPO_REQUIRES_KTO: return "ok, für die BIC-Bestimmung der ehemaligen Hypo-Bank für IBAN wird i.A. zusätzlich die Kontonummer benötigt";
|
21400
21502
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Prüfziffer";
|
21401
21503
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angefügt";
|
21504
|
+
case OK_SHORT_BIC_USED: return "ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
21402
21505
|
default: return "ungültiger Rückgabewert";
|
21403
|
-
#line 19479 "konto_check.lxx"
|
21404
21506
|
}
|
21405
21507
|
}
|
21406
21508
|
|
@@ -21416,6 +21518,8 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
21416
21518
|
DLL_EXPORT const char *kto_check_retval2txt_short(int retval)
|
21417
21519
|
{
|
21418
21520
|
switch(retval){
|
21521
|
+
case IBAN_ONLY_GERMAN: return "IBAN_ONLY_GERMAN";
|
21522
|
+
case INVALID_PARAMETER_TYPE: return "INVALID_PARAMETER_TYPE";
|
21419
21523
|
case BIC_ONLY_GERMAN: return "BIC_ONLY_GERMAN";
|
21420
21524
|
case INVALID_BIC_LENGTH: return "INVALID_BIC_LENGTH";
|
21421
21525
|
case IBAN_CHKSUM_OK_RULE_IGNORED_BLZ: return "IBAN_CHKSUM_OK_RULE_IGNORED_BLZ";
|
@@ -21588,8 +21692,8 @@ DLL_EXPORT const char *kto_check_retval2txt_short(int retval)
|
|
21588
21692
|
case OK_HYPO_REQUIRES_KTO: return "OK_HYPO_REQUIRES_KTO";
|
21589
21693
|
case OK_KTO_REPLACED_NO_PZ: return "OK_KTO_REPLACED_NO_PZ";
|
21590
21694
|
case OK_UNTERKONTO_ATTACHED: return "OK_UNTERKONTO_ATTACHED";
|
21695
|
+
case OK_SHORT_BIC_USED: return "OK_SHORT_BIC_USED";
|
21591
21696
|
default: return "UNDEFINED_RETVAL";
|
21592
|
-
#line 19496 "konto_check.lxx"
|
21593
21697
|
}
|
21594
21698
|
}
|
21595
21699
|
|
@@ -21645,7 +21749,6 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
|
|
21645
21749
|
}
|
21646
21750
|
else
|
21647
21751
|
**user_info_p=0;
|
21648
|
-
#line 19537 "konto_check.lxx"
|
21649
21752
|
FREE(prolog);
|
21650
21753
|
return OK;
|
21651
21754
|
}
|
@@ -21765,6 +21868,9 @@ DLL_EXPORT const char *get_kto_check_version(void)
|
|
21765
21868
|
|
21766
21869
|
DLL_EXPORT const char *get_kto_check_version_x(int mode)
|
21767
21870
|
{
|
21871
|
+
/* Arrays initialisieren, falls noch nicht gemacht */
|
21872
|
+
if(!(init_status&1))init_atoi_table();
|
21873
|
+
|
21768
21874
|
switch(mode){
|
21769
21875
|
default: /* 0 bzw. Default ist wie get_kto_check_version(), die Werte geben einzelne Felder zur�ck */
|
21770
21876
|
case 0:
|
@@ -21776,27 +21882,20 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
|
|
21776
21882
|
case 3:
|
21777
21883
|
return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
|
21778
21884
|
case 4: /* Datum der Pr�fziffermethode */
|
21779
|
-
#if
|
21885
|
+
#if 1
|
21780
21886
|
if(pz_aenderungen_aktivieren)
|
21781
|
-
return "
|
21887
|
+
return "03.03.2014";
|
21782
21888
|
else
|
21783
|
-
return "
|
21889
|
+
return "09.12.2013 (Aenderungen vom 03.03.2014 enthalten aber noch nicht aktiviert)";
|
21784
21890
|
#else
|
21785
|
-
return "
|
21891
|
+
return "03.03.2014";
|
21786
21892
|
#endif
|
21787
21893
|
case 5:
|
21788
|
-
|
21789
|
-
if(pz_aenderungen_aktivieren)
|
21790
|
-
return "09.12.2013"; /* Datum der IBAN-Regeln */
|
21791
|
-
else
|
21792
|
-
return "09.12.2013 (Regel 20 / Deutsche Bank: Version 1.6 aus der Bundesbank-Mail vom 30.8.2013)"; /* Datum der IBAN-Regeln */
|
21793
|
-
#else
|
21794
|
-
return "09.12.2013";
|
21795
|
-
#endif
|
21894
|
+
return "03.03.2014";
|
21796
21895
|
case 6:
|
21797
|
-
return "
|
21896
|
+
return "3. M�rz 2014"; /* Klartext-Datum der Bibliotheksversion */
|
21798
21897
|
case 7:
|
21799
|
-
return "
|
21898
|
+
return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
|
21800
21899
|
}
|
21801
21900
|
}
|
21802
21901
|
|
@@ -21942,7 +22041,6 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
|
|
21942
22041
|
default:
|
21943
22042
|
break;
|
21944
22043
|
}
|
21945
|
-
#line 19773 "konto_check.lxx"
|
21946
22044
|
fputc('\n',out);
|
21947
22045
|
while(--i)fputc('=',out);
|
21948
22046
|
fputc('\n',out);
|
@@ -22219,7 +22317,7 @@ DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto)
|
|
22219
22317
|
for(ptr=papier,dptr=iban2;*ptr;ptr++)if(*ptr!=' ')*dptr++=*ptr;
|
22220
22318
|
*dptr=0;
|
22221
22319
|
FREE(papier);
|
22222
|
-
if(
|
22320
|
+
if(strcasecmp(iban,iban2) && retval){
|
22223
22321
|
if(regel>0)
|
22224
22322
|
*retval=IBAN_CHKSUM_OK_RULE_IGNORED;
|
22225
22323
|
else /* bei Regel==0 kann nur ein Unterkonto fehlen */
|
@@ -22309,7 +22407,6 @@ DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto)
|
|
22309
22407
|
* ###########################################################################
|
22310
22408
|
*/
|
22311
22409
|
|
22312
|
-
#line 20140 "konto_check.lxx"
|
22313
22410
|
DLL_EXPORT char *iban_gen(char *blz,char *kto,int *retval)
|
22314
22411
|
{
|
22315
22412
|
return iban_bic_gen(blz,kto,NULL,NULL,NULL,retval);
|
@@ -22357,32 +22454,6 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
|
|
22357
22454
|
/* BLZ numerisch darstellen */
|
22358
22455
|
blz_i=b8[I blz[0]]+b7[I blz[1]]+b6[I blz[2]]+b5[I blz[3]]+b4[I blz[4]]+b3[I blz[5]]+b2[I blz[6]]+b1[I blz[7]];
|
22359
22456
|
|
22360
|
-
/* Alle BLZs der Flessa-Bank werden f�r die IBAN-Generierung auf 79330111
|
22361
|
-
* umgesetzt (siehe dazu http://www.flessabank.de/aktuell.php?akt=149). In
|
22362
|
-
* konto_check.h findet sich ein Auszug von dieser Seite.
|
22363
|
-
*
|
22364
|
-
* In CONFIG.INI sind die BLZs der der Flessa-Bank auskommentiert (d.h.
|
22365
|
-
* sie sind f�r die Selbstgenerierung zugelassen); dabei steht allerdings
|
22366
|
-
* noch die Anmerkung "Flessa Sonderfall implementiert ab 19.4.2012" (das
|
22367
|
-
* bezieht sich wohl auch auf das Umsetzen der BLZ). Wenn die neue
|
22368
|
-
* CONFIG.INI mit einer alten konto_check-Version ohne diese Korrektur
|
22369
|
-
* eingesetzt wird, werden f�r die BLZs der Flessa-Bank (au�er 79330111)
|
22370
|
-
* syntaktisch richtige, aber ansonsten falsche IBANs erzeugt.
|
22371
|
-
*
|
22372
|
-
* Die Kontonummern der Flessa-Bank bleiben trotz der Umstellung erhalten.
|
22373
|
-
* (siehe dazu die angegebene Webseite).
|
22374
|
-
*
|
22375
|
-
* Ab dem 9. September 2013 sind die Daten als gel�scht markiert, und die BLZ
|
22376
|
-
* 79330111 ist als Nachfolge-BLZ eingetragen. Damit ist diese Korrektur hinf�llig
|
22377
|
-
* und das Makro kann auf 0 gesetzt werden (bzw. bald verschwinden).
|
22378
|
-
*/
|
22379
|
-
#if FLESSA_KORREKTUR
|
22380
|
-
if(blz_i==70030111 || blz_i==76330111 || blz_i==77030111 || blz_i==78330111 || blz_i==84030111){
|
22381
|
-
blz=(char*)"79330111";
|
22382
|
-
blz_i=79330111;
|
22383
|
-
}
|
22384
|
-
#endif
|
22385
|
-
|
22386
22457
|
/* BLZ und Kontonummer in eigenen Speicherbereich kopieren, Konto links mit Nullen f�llen */
|
22387
22458
|
#if USE_IBAN_RULES
|
22388
22459
|
for(ptr=blz,dptr=blz_n;(*dptr++=*ptr++););
|
@@ -22690,7 +22761,7 @@ DLL_EXPORT int ci_check(char *ci)
|
|
22690
22761
|
DLL_EXPORT int iban_check(char *iban,int *retval)
|
22691
22762
|
{
|
22692
22763
|
char c,check[128],*papier2,iban1[64],iban2[24],*blz2,*kto2,*ptr,*dptr;
|
22693
|
-
int j,test,ret,ret_kc,iban_len,regel,uk,nachfolge;
|
22764
|
+
int j,test,ret,ret_kc=0,iban_len,regel,uk,nachfolge;
|
22694
22765
|
UINT4 zahl,rest;
|
22695
22766
|
|
22696
22767
|
if(!iban || !*iban){
|
@@ -22897,11 +22968,13 @@ DLL_EXPORT int iban_check(char *iban,int *retval)
|
|
22897
22968
|
for(ptr=papier2,dptr=iban2;*ptr;ptr++)if(*ptr!=' ')*dptr++=*ptr;
|
22898
22969
|
*dptr=0;
|
22899
22970
|
FREE(papier2);
|
22900
|
-
if(
|
22971
|
+
if(strcasecmp(iban,iban2)){
|
22901
22972
|
if(regel>0){
|
22902
|
-
|
22973
|
+
#if EXTRA_BLZ_REGEL
|
22974
|
+
if(!strcmp(iban+12,iban2+12)) /* nur BLZ ge�ndert */
|
22903
22975
|
return IBAN_CHKSUM_OK_RULE_IGNORED_BLZ;
|
22904
22976
|
else
|
22977
|
+
#endif
|
22905
22978
|
return IBAN_CHKSUM_OK_RULE_IGNORED;
|
22906
22979
|
}
|
22907
22980
|
else if(nachfolge)
|
@@ -23077,7 +23150,6 @@ DLL_EXPORT int ipi_check(char *zweck)
|
|
23077
23150
|
* # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
|
23078
23151
|
* ###########################################################################
|
23079
23152
|
*/
|
23080
|
-
#line 20908 "konto_check.lxx"
|
23081
23153
|
|
23082
23154
|
/* Funktion volltext_zeichen() +���2 */
|
23083
23155
|
/* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
|
@@ -23910,7 +23982,19 @@ static int qcmp_sortc(const void *ap,const void *bp)
|
|
23910
23982
|
return a-b;
|
23911
23983
|
}
|
23912
23984
|
|
23913
|
-
|
23985
|
+
/* Funktion qcmp_bic_h() +���3 */
|
23986
|
+
static int qcmp_bic_h(const void *ap,const void *bp)
|
23987
|
+
{
|
23988
|
+
int a,b,r;
|
23989
|
+
|
23990
|
+
a=*((int *)ap);
|
23991
|
+
b=*((int *)bp);
|
23992
|
+
if((r=stri_cmp(bic_h[a],bic_h[b])))
|
23993
|
+
return r;
|
23994
|
+
else
|
23995
|
+
return a-b;
|
23996
|
+
}
|
23997
|
+
|
23914
23998
|
|
23915
23999
|
/* Funktion qcmp_bic() +���3 */
|
23916
24000
|
static int qcmp_bic(const void *ap,const void *bp)
|
@@ -24015,7 +24099,6 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
|
|
24015
24099
|
else
|
24016
24100
|
return a-b;
|
24017
24101
|
}
|
24018
|
-
#line 21756 "konto_check.lxx"
|
24019
24102
|
|
24020
24103
|
/* Funktion init_blzf() +���2
|
24021
24104
|
* Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
|
@@ -24083,7 +24166,6 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
|
|
24083
24166
|
}
|
24084
24167
|
|
24085
24168
|
/* Funktion suche_int1() +���2 */
|
24086
|
-
#line 21824 "konto_check.lxx"
|
24087
24169
|
static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
24088
24170
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
|
24089
24171
|
{
|
@@ -24134,7 +24216,6 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
|
|
24134
24216
|
}
|
24135
24217
|
|
24136
24218
|
/* Funktion suche_int2() +���2 */
|
24137
|
-
#line 21875 "konto_check.lxx"
|
24138
24219
|
static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
24139
24220
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
|
24140
24221
|
{
|
@@ -24410,6 +24491,9 @@ DLL_EXPORT int lut_suche_set(int such_id,int idx,int typ,int i1,int i2,char *txt
|
|
24410
24491
|
case LUT_SUCHE_BIC:
|
24411
24492
|
if((ret=lut_suche_bic(txt,NULL,NULL,NULL,NULL,NULL))<0 && ret!=KEY_NOT_FOUND)return ret;
|
24412
24493
|
break;
|
24494
|
+
case LUT_SUCHE_BIC_H:
|
24495
|
+
if((ret=lut_suche_bic_h(txt,NULL,NULL,NULL,NULL,NULL))<0 && ret!=KEY_NOT_FOUND)return ret;
|
24496
|
+
break;
|
24413
24497
|
case LUT_SUCHE_NAMEN:
|
24414
24498
|
if((ret=lut_suche_namen(txt,NULL,NULL,NULL,NULL,NULL))<0 && ret!=KEY_NOT_FOUND)return ret;
|
24415
24499
|
break;
|
@@ -24478,6 +24562,10 @@ DLL_EXPORT int lut_suche(int such_id,char *such_cmd,UINT4 *such_cnt,UINT4 **fili
|
|
24478
24562
|
if((ret=lut_suche_bic(such_array[i].suche_str,
|
24479
24563
|
&(ergebnis[i].cnt),&(ergebnis[i].start_idx),NULL,NULL,NULL))<0 && ret!=KEY_NOT_FOUND)return ret;
|
24480
24564
|
break;
|
24565
|
+
case LUT_SUCHE_BIC_H:
|
24566
|
+
if((ret=lut_suche_bic_h(such_array[i].suche_str,
|
24567
|
+
&(ergebnis[i].cnt),&(ergebnis[i].start_idx),NULL,NULL,NULL))<0 && ret!=KEY_NOT_FOUND)return ret;
|
24568
|
+
break;
|
24481
24569
|
case LUT_SUCHE_NAMEN:
|
24482
24570
|
if((ret=lut_suche_namen(such_array[i].suche_str,
|
24483
24571
|
&(ergebnis[i].cnt),&(ergebnis[i].start_idx),NULL,NULL,NULL))<0 && ret!=KEY_NOT_FOUND)return ret;
|
@@ -24625,6 +24713,8 @@ DLL_EXPORT int lut_suche_multiple(char *such_str,int uniq,char *such_cmd,UINT4 *
|
|
24625
24713
|
typ=LUT_SUCHE_BLZ;
|
24626
24714
|
else if(tolower(*ptr)=='i')
|
24627
24715
|
typ=LUT_SUCHE_BIC;
|
24716
|
+
else if(tolower(*ptr)=='h')
|
24717
|
+
typ=LUT_SUCHE_BIC_H;
|
24628
24718
|
break;
|
24629
24719
|
|
24630
24720
|
case 'k':
|
@@ -24703,7 +24793,6 @@ static int cmp_suche_sort(const void *ap,const void *bp)
|
|
24703
24793
|
DLL_EXPORT int lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_op,int uniq)
|
24704
24794
|
{
|
24705
24795
|
int i,j,last_idx,*idx_a,*cnt_o;
|
24706
|
-
#line 22445 "konto_check.lxx"
|
24707
24796
|
|
24708
24797
|
if(idx_op)*idx_op=NULL;
|
24709
24798
|
if(cnt_op)*cnt_op=NULL;
|
@@ -24914,7 +25003,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24914
25003
|
return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
|
24915
25004
|
}
|
24916
25005
|
|
24917
|
-
#line
|
25006
|
+
#line 22783 "konto_check.lxx"
|
24918
25007
|
/* Funktion lut_suche_bic() +���2 */
|
24919
25008
|
DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
24920
25009
|
char ***base_name,int **blz_base)
|
@@ -24968,7 +25057,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24968
25057
|
{
|
24969
25058
|
int retval;
|
24970
25059
|
|
24971
|
-
|
24972
25060
|
if(anzahl)*anzahl=0;
|
24973
25061
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24974
25062
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24982,7 +25070,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24982
25070
|
/* Funktion lut_suche_plz() +���2 */
|
24983
25071
|
DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
|
24984
25072
|
{
|
24985
|
-
|
24986
25073
|
if(anzahl)*anzahl=0;
|
24987
25074
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24988
25075
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24995,7 +25082,6 @@ DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24995
25082
|
/* Funktion lut_suche_regel() +���2 */
|
24996
25083
|
DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
|
24997
25084
|
{
|
24998
|
-
|
24999
25085
|
if(anzahl)*anzahl=0;
|
25000
25086
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
25001
25087
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -25005,7 +25091,579 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
|
|
25005
25091
|
return suche_int2(such1*100,such2*100+99,anzahl,start_idx,zweigstellen_base,blz_base,&iban_regel,&sort_iban_regel,qcmp_iban_regel,LUT2_IBAN_REGEL_SORT,0);
|
25006
25092
|
}
|
25007
25093
|
|
25008
|
-
|
25094
|
+
|
25095
|
+
/* Funktion lut_suche_bic_h() +���2 */
|
25096
|
+
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
25097
|
+
char ***base_name,int **blz_base)
|
25098
|
+
{
|
25099
|
+
if(anzahl)*anzahl=0;
|
25100
|
+
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
25101
|
+
if(lut_id_status==FALSE)return LUT1_FILE_USED;
|
25102
|
+
if(!bic_h)return LUT2_BIC_NOT_INITIALIZED;
|
25103
|
+
if(base_name)*base_name=bic_h;
|
25104
|
+
return suche_str(such_name,anzahl,start_idx,zweigstellen_base,blz_base,&bic_h,&sort_bic_h,qcmp_bic_h,LUT2_BIC_H_SORT);
|
25105
|
+
}
|
25106
|
+
|
25107
|
+
/* Funktion bic_info() +���2
|
25108
|
+
* Die Funktion bic_info() sucht Banken mit einem bestimmten BIC und gibt
|
25109
|
+
* die gefundene Anzahl sowie den Startindex in den internen Arrays zur�ck.
|
25110
|
+
* Sie ist f�r die Funktionsgruppe biq_* gedacht, falls mehrere Werte aus der
|
25111
|
+
* BLZ-Datei bestimmt werden sollen (z.B. verschiedene Felder oder Werte f�r
|
25112
|
+
* mehrere Zweigstellen einer Bank). So erspart man sich die relativ aufwendige
|
25113
|
+
* Suche; sie ist nur einmal notwendig.
|
25114
|
+
*
|
25115
|
+
* Parameter:
|
25116
|
+
* bic1: BIC zu dem die Banken bestimmt werden sollen (komplett oder teilweise)
|
25117
|
+
* mode: Suchmodus; er kann die folgenden Werte annehmen:
|
25118
|
+
* mode=1: Suche in allen BICs der BLZ-Datei (Haupt- und Nebenstellen)
|
25119
|
+
* mode=2: Suche nur in den BICs der Hauptstellen
|
25120
|
+
* mode=0: zun�chst Suche bei den Hauptstellen, dann bei Haupt- und Nebenstellen;
|
25121
|
+
* falls dann noch nichts gefunden wurde, werden die drei letzten Stellen
|
25122
|
+
* (Filialcode) mit XXX gef�llt und noch einmal eine Suche gemacht.
|
25123
|
+
* anzahl: in diesem Parameter wird die Anahl der gefundenen Banken zur�ckgegeben
|
25124
|
+
* start_idx: Startindex in den internen Arrays, positiv f�r das Hauptstellen-Array,
|
25125
|
+
* negativ f�r das allgemeine BIC-Array. Dieser Index wird als Parameter f�r
|
25126
|
+
* die Funktionsgruppe biq_* benutzt.
|
25127
|
+
*/
|
25128
|
+
DLL_EXPORT int bic_info(char *bic1,int mode,int *anzahl,int *start_idx)
|
25129
|
+
{
|
25130
|
+
char *ptr,bic2[12];
|
25131
|
+
int *s_idx,retval,cnt;
|
25132
|
+
|
25133
|
+
switch(mode){
|
25134
|
+
case 0:
|
25135
|
+
default:
|
25136
|
+
retval=lut_suche_bic_h(bic1,&cnt,&s_idx,NULL,NULL,NULL);
|
25137
|
+
if(start_idx)*start_idx=(s_idx-sort_bic_h);
|
25138
|
+
if(!cnt){ /* Suche bei allen BICs (inklusive Nebenstellen) */
|
25139
|
+
retval=lut_suche_bic(bic1,&cnt,&s_idx,NULL,NULL,NULL);
|
25140
|
+
if(start_idx)*start_idx=(sort_bic-s_idx); /* negativer Startindex */
|
25141
|
+
}
|
25142
|
+
if(!cnt){ /* noch nichts gefunden, Zweigstellenteil des BIC mit XXX auff�llen (z.B. f�r Postbank) */
|
25143
|
+
memcpy(bic2,bic1,8); /* Hauptstellenteil kopieren */
|
25144
|
+
*(ptr=bic2+8)='X'; /* Nebenstellenteil mit 'X' f�llen */
|
25145
|
+
*++ptr='X';
|
25146
|
+
*++ptr='X';
|
25147
|
+
*++ptr=0;
|
25148
|
+
retval=lut_suche_bic(bic2,&cnt,&s_idx,NULL,NULL,NULL);
|
25149
|
+
if(retval>=OK)retval=OK_SHORT_BIC_USED;
|
25150
|
+
if(start_idx)*start_idx=(sort_bic-s_idx); /* negativer Startindex */
|
25151
|
+
}
|
25152
|
+
break;
|
25153
|
+
case 1:
|
25154
|
+
retval=lut_suche_bic(bic1,&cnt,&s_idx,NULL,NULL,NULL);
|
25155
|
+
if(start_idx)*start_idx=(sort_bic-s_idx); /* negativer Startindex */
|
25156
|
+
break;
|
25157
|
+
case 2:
|
25158
|
+
retval=lut_suche_bic_h(bic1,&cnt,&s_idx,NULL,NULL,NULL);
|
25159
|
+
if(start_idx)*start_idx=(s_idx-sort_bic_h);
|
25160
|
+
break;
|
25161
|
+
}
|
25162
|
+
if(anzahl)*anzahl=cnt;
|
25163
|
+
if(start_idx && !cnt)*start_idx=0;
|
25164
|
+
return retval;
|
25165
|
+
}
|
25166
|
+
|
25167
|
+
/* Funktion bic_\bic_*(), biq_* und iban_* +���2 */
|
25168
|
+
/* Diese Funktionen entsprechen weitgehend den Funktionen lut_*; sie k�nnen
|
25169
|
+
* benutzt werden, um Daten zu einem BIC oder einer IBAN zu bestimmen.
|
25170
|
+
*
|
25171
|
+
* Die Funktionen bic_*() bestimmen die Felder der BLZ-Datei zu einem BIC.
|
25172
|
+
* Der Parameter mode bestimmt dabei, wie der BIC gesucht wird (s.o. bei der
|
25173
|
+
* Funktion bic_info()). Zu einem BIC werden �blicherweise mehrere Banken gefunden;
|
25174
|
+
* diese werden nach BIC sortiert ausgegeben.
|
25175
|
+
*
|
25176
|
+
* Da der BIC nur ein sehr grobes Merkmal ist (bei der Postbank ist z.B. der Filialteil bei
|
25177
|
+
* allen Filialen auf XXX gesetzt, so da� alle Postbanken sich einen BIC teilen), wurden
|
25178
|
+
* zus�tzlich noch die Funktion iban_*() implementiert. Diese entsprechen den vorhergehenden
|
25179
|
+
* Funktionen, bestimmen allerdings aus der IBAN die BLZ und werten diese dann aus.
|
25180
|
+
*/
|
25181
|
+
/* Funktion bic_aenderung(), biq_aenderung und iban_aenderung +���3 */
|
25182
|
+
/* ###############################################################################
|
25183
|
+
* # Diese Funktionen bestimmen das �nderungsflag zu einem BIC bzw. einer IBAN #
|
25184
|
+
* # #
|
25185
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25186
|
+
* ###############################################################################
|
25187
|
+
*/
|
25188
|
+
|
25189
|
+
DLL_EXPORT int bic_aenderung(char *bic1,int mode,int filiale,int*retval)
|
25190
|
+
{
|
25191
|
+
return bic_fkt_c(bic1,mode,filiale,retval,aenderung);
|
25192
|
+
}
|
25193
|
+
|
25194
|
+
DLL_EXPORT int biq_aenderung(int idx,int*retval)
|
25195
|
+
{
|
25196
|
+
return biq_fkt_c(idx,retval,aenderung);
|
25197
|
+
}
|
25198
|
+
|
25199
|
+
DLL_EXPORT int iban_aenderung(char *iban,int filiale,int*retval)
|
25200
|
+
{
|
25201
|
+
return iban_fkt_c(iban,filiale,retval,lut_aenderung);
|
25202
|
+
}
|
25203
|
+
|
25204
|
+
/* Funktion bic_loeschung(), biq_loeschung und iban_loeschung +���3 */
|
25205
|
+
/* ###############################################################################
|
25206
|
+
* # Diese Funktionen bestimmen das L�schflag zu einem BIC bzw. einer IBAN #
|
25207
|
+
* # #
|
25208
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25209
|
+
* ###############################################################################
|
25210
|
+
*/
|
25211
|
+
|
25212
|
+
DLL_EXPORT int bic_loeschung(char *bic1,int mode,int filiale,int*retval)
|
25213
|
+
{
|
25214
|
+
return bic_fkt_c(bic1,mode,filiale,retval,loeschung);
|
25215
|
+
}
|
25216
|
+
|
25217
|
+
DLL_EXPORT int biq_loeschung(int idx,int*retval)
|
25218
|
+
{
|
25219
|
+
return biq_fkt_c(idx,retval,loeschung);
|
25220
|
+
}
|
25221
|
+
|
25222
|
+
DLL_EXPORT int iban_loeschung(char *iban,int filiale,int*retval)
|
25223
|
+
{
|
25224
|
+
return iban_fkt_c(iban,filiale,retval,lut_loeschung);
|
25225
|
+
}
|
25226
|
+
|
25227
|
+
/* Funktion bic_iban_regel(), biq_iban_regel und iban_iban_regel +���3 */
|
25228
|
+
/* ###############################################################################
|
25229
|
+
* # Diese Funktionen bestimmen die IBAN-Regel zu einem BIC bzw. einer IBAN #
|
25230
|
+
* # #
|
25231
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25232
|
+
* ###############################################################################
|
25233
|
+
*/
|
25234
|
+
|
25235
|
+
DLL_EXPORT int bic_iban_regel(char *bic1,int mode,int filiale,int*retval)
|
25236
|
+
{
|
25237
|
+
return bic_fkt_i(bic1,mode,filiale,retval,iban_regel);
|
25238
|
+
}
|
25239
|
+
|
25240
|
+
DLL_EXPORT int biq_iban_regel(int idx,int*retval)
|
25241
|
+
{
|
25242
|
+
return biq_fkt_i(idx,retval,iban_regel);
|
25243
|
+
}
|
25244
|
+
|
25245
|
+
DLL_EXPORT int iban_iban_regel(char *iban,int filiale,int*retval)
|
25246
|
+
{
|
25247
|
+
return iban_fkt_i(iban,filiale,retval,lut_iban_regel);
|
25248
|
+
}
|
25249
|
+
|
25250
|
+
/* Funktion bic_nachfolge_blz(), biq_nachfolge_blz und iban_nachfolge_blz +���3 */
|
25251
|
+
/* ###############################################################################
|
25252
|
+
* # Diese Funktionen bestimmen die Nachfolge-BLZ zu einem BIC bzw. einer IBAN #
|
25253
|
+
* # #
|
25254
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25255
|
+
* ###############################################################################
|
25256
|
+
*/
|
25257
|
+
|
25258
|
+
DLL_EXPORT int bic_nachfolge_blz(char *bic1,int mode,int filiale,int*retval)
|
25259
|
+
{
|
25260
|
+
return bic_fkt_i(bic1,mode,filiale,retval,nachfolge_blz);
|
25261
|
+
}
|
25262
|
+
|
25263
|
+
DLL_EXPORT int biq_nachfolge_blz(int idx,int*retval)
|
25264
|
+
{
|
25265
|
+
return biq_fkt_i(idx,retval,nachfolge_blz);
|
25266
|
+
}
|
25267
|
+
|
25268
|
+
DLL_EXPORT int iban_nachfolge_blz(char *iban,int filiale,int*retval)
|
25269
|
+
{
|
25270
|
+
return iban_fkt_i(iban,filiale,retval,lut_nachfolge_blz);
|
25271
|
+
}
|
25272
|
+
|
25273
|
+
/* Funktion bic_nr(), biq_nr und iban_nr +���3 */
|
25274
|
+
/* ###############################################################################
|
25275
|
+
* # Diese Funktionen bestimmen die Laufende Nr. zu einem BIC bzw. einer IBAN #
|
25276
|
+
* # #
|
25277
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25278
|
+
* ###############################################################################
|
25279
|
+
*/
|
25280
|
+
|
25281
|
+
DLL_EXPORT int bic_nr(char *bic1,int mode,int filiale,int*retval)
|
25282
|
+
{
|
25283
|
+
return bic_fkt_i(bic1,mode,filiale,retval,bank_nr);
|
25284
|
+
}
|
25285
|
+
|
25286
|
+
DLL_EXPORT int biq_nr(int idx,int*retval)
|
25287
|
+
{
|
25288
|
+
return biq_fkt_i(idx,retval,bank_nr);
|
25289
|
+
}
|
25290
|
+
|
25291
|
+
DLL_EXPORT int iban_nr(char *iban,int filiale,int*retval)
|
25292
|
+
{
|
25293
|
+
return iban_fkt_i(iban,filiale,retval,lut_nr);
|
25294
|
+
}
|
25295
|
+
|
25296
|
+
/* Funktion bic_pan(), biq_pan und iban_pan +���3 */
|
25297
|
+
/* ###############################################################################
|
25298
|
+
* # Diese Funktionen bestimmen den PAN zu einem BIC bzw. einer IBAN #
|
25299
|
+
* # #
|
25300
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25301
|
+
* ###############################################################################
|
25302
|
+
*/
|
25303
|
+
|
25304
|
+
DLL_EXPORT int bic_pan(char *bic1,int mode,int filiale,int*retval)
|
25305
|
+
{
|
25306
|
+
return bic_fkt_i(bic1,mode,filiale,retval,pan);
|
25307
|
+
}
|
25308
|
+
|
25309
|
+
DLL_EXPORT int biq_pan(int idx,int*retval)
|
25310
|
+
{
|
25311
|
+
return biq_fkt_i(idx,retval,pan);
|
25312
|
+
}
|
25313
|
+
|
25314
|
+
DLL_EXPORT int iban_pan(char *iban,int filiale,int*retval)
|
25315
|
+
{
|
25316
|
+
return iban_fkt_i(iban,filiale,retval,lut_pan);
|
25317
|
+
}
|
25318
|
+
|
25319
|
+
/* Funktion bic_plz(), biq_plz und iban_plz +���3 */
|
25320
|
+
/* ###############################################################################
|
25321
|
+
* # Diese Funktionen bestimmen die PLZ der Bank zu einem BIC bzw. einer IBAN #
|
25322
|
+
* # #
|
25323
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25324
|
+
* ###############################################################################
|
25325
|
+
*/
|
25326
|
+
|
25327
|
+
DLL_EXPORT int bic_plz(char *bic1,int mode,int filiale,int*retval)
|
25328
|
+
{
|
25329
|
+
return bic_fkt_i(bic1,mode,filiale,retval,plz);
|
25330
|
+
}
|
25331
|
+
|
25332
|
+
DLL_EXPORT int biq_plz(int idx,int*retval)
|
25333
|
+
{
|
25334
|
+
return biq_fkt_i(idx,retval,plz);
|
25335
|
+
}
|
25336
|
+
|
25337
|
+
DLL_EXPORT int iban_plz(char *iban,int filiale,int*retval)
|
25338
|
+
{
|
25339
|
+
return iban_fkt_i(iban,filiale,retval,lut_plz);
|
25340
|
+
}
|
25341
|
+
|
25342
|
+
/* Funktion bic_pz(), biq_pz und iban_pz +���3 */
|
25343
|
+
/* ###############################################################################
|
25344
|
+
* # Diese Funktionen bestimmen die Pr�fziffer zu einem BIC bzw. einer IBAN #
|
25345
|
+
* # #
|
25346
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25347
|
+
* ###############################################################################
|
25348
|
+
*/
|
25349
|
+
|
25350
|
+
DLL_EXPORT int bic_pz(char *bic1,int mode,int filiale,int*retval)
|
25351
|
+
{
|
25352
|
+
return bic_fkt_i(bic1,mode,filiale,retval,pz_methoden);
|
25353
|
+
}
|
25354
|
+
|
25355
|
+
DLL_EXPORT int biq_pz(int idx,int*retval)
|
25356
|
+
{
|
25357
|
+
return biq_fkt_i(idx,retval,pz_methoden);
|
25358
|
+
}
|
25359
|
+
|
25360
|
+
DLL_EXPORT int iban_pz(char *iban,int filiale,int*retval)
|
25361
|
+
{
|
25362
|
+
return iban_fkt_i(iban,filiale,retval,lut_pz);
|
25363
|
+
}
|
25364
|
+
|
25365
|
+
/* Funktion bic_bic(), biq_bic und iban_bic +���3 */
|
25366
|
+
/* ###############################################################################
|
25367
|
+
* # Diese Funktionen bestimmen den BIC zu einem BIC bzw. einer IBAN #
|
25368
|
+
* # #
|
25369
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25370
|
+
* ###############################################################################
|
25371
|
+
*/
|
25372
|
+
|
25373
|
+
DLL_EXPORT const char *bic_bic(char *bic1,int mode,int filiale,int*retval)
|
25374
|
+
{
|
25375
|
+
return bic_fkt_s(bic1,mode,filiale,retval,bic);
|
25376
|
+
}
|
25377
|
+
|
25378
|
+
DLL_EXPORT const char *biq_bic(int idx,int*retval)
|
25379
|
+
{
|
25380
|
+
return biq_fkt_s(idx,retval,bic);
|
25381
|
+
}
|
25382
|
+
|
25383
|
+
DLL_EXPORT const char *iban_bic(char *iban,int filiale,int*retval)
|
25384
|
+
{
|
25385
|
+
return iban_fkt_s(iban,filiale,retval,lut_bic);
|
25386
|
+
}
|
25387
|
+
|
25388
|
+
/* Funktion bic_bic_h(), biq_bic_h und iban_bic_h +���3 */
|
25389
|
+
/* ###############################################################################
|
25390
|
+
* # Diese Funktionen bestimmen den BIC der Hauptstelle zu einem BIC bzw. einer IBAN#
|
25391
|
+
* # #
|
25392
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25393
|
+
* ###############################################################################
|
25394
|
+
*/
|
25395
|
+
|
25396
|
+
DLL_EXPORT const char *bic_bic_h(char *bic1,int mode,int filiale,int*retval)
|
25397
|
+
{
|
25398
|
+
return bic_fkt_s(bic1,mode,filiale,retval,bic_h);
|
25399
|
+
}
|
25400
|
+
|
25401
|
+
DLL_EXPORT const char *biq_bic_h(int idx,int*retval)
|
25402
|
+
{
|
25403
|
+
return biq_fkt_s(idx,retval,bic_h);
|
25404
|
+
}
|
25405
|
+
|
25406
|
+
DLL_EXPORT const char *iban_bic_h(char *iban,int filiale,int*retval)
|
25407
|
+
{
|
25408
|
+
return iban_fkt_s(iban,filiale,retval,lut_bic_h);
|
25409
|
+
}
|
25410
|
+
|
25411
|
+
/* Funktion bic_name(), biq_name und iban_name +���3 */
|
25412
|
+
/* ###############################################################################
|
25413
|
+
* # Diese Funktionen bestimmen den Name der Bank zu einem BIC bzw. einer IBAN #
|
25414
|
+
* # #
|
25415
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25416
|
+
* ###############################################################################
|
25417
|
+
*/
|
25418
|
+
|
25419
|
+
DLL_EXPORT const char *bic_name(char *bic1,int mode,int filiale,int*retval)
|
25420
|
+
{
|
25421
|
+
return bic_fkt_s(bic1,mode,filiale,retval,name);
|
25422
|
+
}
|
25423
|
+
|
25424
|
+
DLL_EXPORT const char *biq_name(int idx,int*retval)
|
25425
|
+
{
|
25426
|
+
return biq_fkt_s(idx,retval,name);
|
25427
|
+
}
|
25428
|
+
|
25429
|
+
DLL_EXPORT const char *iban_name(char *iban,int filiale,int*retval)
|
25430
|
+
{
|
25431
|
+
return iban_fkt_s(iban,filiale,retval,lut_name);
|
25432
|
+
}
|
25433
|
+
|
25434
|
+
/* Funktion bic_name_kurz(), biq_name_kurz und iban_name_kurz +���3 */
|
25435
|
+
/* ###############################################################################
|
25436
|
+
* # Diese Funktionen bestimmen den Kurzname der Bank zu einem BIC bzw. einer IBAN#
|
25437
|
+
* # #
|
25438
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25439
|
+
* ###############################################################################
|
25440
|
+
*/
|
25441
|
+
|
25442
|
+
DLL_EXPORT const char *bic_name_kurz(char *bic1,int mode,int filiale,int*retval)
|
25443
|
+
{
|
25444
|
+
return bic_fkt_s(bic1,mode,filiale,retval,name_kurz);
|
25445
|
+
}
|
25446
|
+
|
25447
|
+
DLL_EXPORT const char *biq_name_kurz(int idx,int*retval)
|
25448
|
+
{
|
25449
|
+
return biq_fkt_s(idx,retval,name_kurz);
|
25450
|
+
}
|
25451
|
+
|
25452
|
+
DLL_EXPORT const char *iban_name_kurz(char *iban,int filiale,int*retval)
|
25453
|
+
{
|
25454
|
+
return iban_fkt_s(iban,filiale,retval,lut_name_kurz);
|
25455
|
+
}
|
25456
|
+
|
25457
|
+
/* Funktion bic_ort(), biq_ort und iban_ort +���3 */
|
25458
|
+
/* ###############################################################################
|
25459
|
+
* # Diese Funktionen bestimmen den Ort einer Bank zu einem BIC bzw. einer IBAN #
|
25460
|
+
* # #
|
25461
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
25462
|
+
* ###############################################################################
|
25463
|
+
*/
|
25464
|
+
|
25465
|
+
DLL_EXPORT const char *bic_ort(char *bic1,int mode,int filiale,int*retval)
|
25466
|
+
{
|
25467
|
+
return bic_fkt_s(bic1,mode,filiale,retval,ort);
|
25468
|
+
}
|
25469
|
+
|
25470
|
+
DLL_EXPORT const char *biq_ort(int idx,int*retval)
|
25471
|
+
{
|
25472
|
+
return biq_fkt_s(idx,retval,ort);
|
25473
|
+
}
|
25474
|
+
|
25475
|
+
DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
|
25476
|
+
{
|
25477
|
+
return iban_fkt_s(iban,filiale,retval,lut_ort);
|
25478
|
+
}
|
25479
|
+
|
25480
|
+
static int bic_fkt_c(char *bic1,int mode,int filiale,int*retval,char *base)
|
25481
|
+
{
|
25482
|
+
int cnt,start_idx,rv,ret1,ret2;
|
25483
|
+
|
25484
|
+
if((ret1=bic_info(bic1,mode,&cnt,&start_idx))<0){
|
25485
|
+
if(retval)*retval=ret1;
|
25486
|
+
return -1;
|
25487
|
+
}
|
25488
|
+
if(filiale>=cnt){
|
25489
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25490
|
+
return -1;
|
25491
|
+
}
|
25492
|
+
rv=biq_fkt_c(start_idx+filiale,&ret2,base);
|
25493
|
+
if(retval){
|
25494
|
+
if(ret2<0)
|
25495
|
+
*retval=ret2;
|
25496
|
+
else
|
25497
|
+
*retval=ret1;
|
25498
|
+
}
|
25499
|
+
return rv;
|
25500
|
+
}
|
25501
|
+
|
25502
|
+
static int biq_fkt_c(int idx,int*retval,char *base)
|
25503
|
+
{
|
25504
|
+
if(idx>0){
|
25505
|
+
if(idx>lut2_cnt){ /* der Test ist nur sehr grob, aber es gibt an dieser Stelle nicht mehr Infos */
|
25506
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25507
|
+
return -1;
|
25508
|
+
}
|
25509
|
+
if(retval)*retval=OK;
|
25510
|
+
return (int)base[sort_bic_h[idx]];
|
25511
|
+
}
|
25512
|
+
else{
|
25513
|
+
idx=-idx;
|
25514
|
+
if(idx>lut2_cnt){
|
25515
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25516
|
+
return -1;
|
25517
|
+
}
|
25518
|
+
if(retval)*retval=OK;
|
25519
|
+
return (int)base[sort_bic[idx]];
|
25520
|
+
}
|
25521
|
+
}
|
25522
|
+
|
25523
|
+
static int iban_fkt_c(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int*))
|
25524
|
+
{
|
25525
|
+
char blz[9];
|
25526
|
+
|
25527
|
+
/* nur zwei kleine Tests */
|
25528
|
+
if((*iban!='d' && *iban!='D') || (iban[1]!='e' && iban[1]!='E')){
|
25529
|
+
if(retval)*retval= IBAN_ONLY_GERMAN;
|
25530
|
+
return -1;
|
25531
|
+
}
|
25532
|
+
if(strlen(iban)!=22){
|
25533
|
+
if(retval)*retval=INVALID_IBAN_LENGTH;
|
25534
|
+
return -1;
|
25535
|
+
}
|
25536
|
+
|
25537
|
+
memcpy(blz,iban+4,8);
|
25538
|
+
*(blz+8)=0;
|
25539
|
+
return fkt(iban,filiale,retval);
|
25540
|
+
}
|
25541
|
+
|
25542
|
+
static int bic_fkt_i(char *bic1,int mode,int filiale,int*retval,int *base)
|
25543
|
+
{
|
25544
|
+
int cnt,start_idx,rv,ret1,ret2;
|
25545
|
+
|
25546
|
+
if((ret1=bic_info(bic1,mode,&cnt,&start_idx))<0){
|
25547
|
+
if(retval)*retval=ret1;
|
25548
|
+
return -1;
|
25549
|
+
}
|
25550
|
+
if(filiale>=cnt){
|
25551
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25552
|
+
return -1;
|
25553
|
+
}
|
25554
|
+
rv=biq_fkt_i(start_idx+filiale,&ret2,base);
|
25555
|
+
if(retval){
|
25556
|
+
if(ret2<0)
|
25557
|
+
*retval=ret2;
|
25558
|
+
else
|
25559
|
+
*retval=ret1;
|
25560
|
+
}
|
25561
|
+
return rv;
|
25562
|
+
}
|
25563
|
+
|
25564
|
+
static int biq_fkt_i(int idx,int*retval,int *base)
|
25565
|
+
{
|
25566
|
+
if(idx>0){
|
25567
|
+
if(idx>lut2_cnt){ /* der Test ist nur sehr grob, aber es gibt an dieser Stelle nicht mehr Infos */
|
25568
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25569
|
+
return -1;
|
25570
|
+
}
|
25571
|
+
if(retval)*retval=OK;
|
25572
|
+
return base[sort_bic_h[idx]];
|
25573
|
+
}
|
25574
|
+
else{
|
25575
|
+
idx=-idx;
|
25576
|
+
if(idx>lut2_cnt){
|
25577
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25578
|
+
return -1;
|
25579
|
+
}
|
25580
|
+
if(retval)*retval=OK;
|
25581
|
+
return base[sort_bic[idx]];
|
25582
|
+
}
|
25583
|
+
}
|
25584
|
+
|
25585
|
+
static int iban_fkt_i(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int*))
|
25586
|
+
{
|
25587
|
+
char blz[9];
|
25588
|
+
|
25589
|
+
/* nur zwei kleine Tests */
|
25590
|
+
if((*iban!='d' && *iban!='D') || (iban[1]!='e' && iban[1]!='E')){
|
25591
|
+
if(retval)*retval= IBAN_ONLY_GERMAN;
|
25592
|
+
return -1;
|
25593
|
+
}
|
25594
|
+
if(strlen(iban)!=22){
|
25595
|
+
if(retval)*retval=INVALID_IBAN_LENGTH;
|
25596
|
+
return -1;
|
25597
|
+
}
|
25598
|
+
|
25599
|
+
memcpy(blz,iban+4,8);
|
25600
|
+
*(blz+8)=0;
|
25601
|
+
return fkt(iban,filiale,retval);
|
25602
|
+
}
|
25603
|
+
|
25604
|
+
static const char *bic_fkt_s(char *bic1,int mode,int filiale,int*retval,char **base)
|
25605
|
+
{
|
25606
|
+
const char *rv;
|
25607
|
+
int cnt,start_idx,ret1,ret2;
|
25608
|
+
|
25609
|
+
if((ret1=bic_info(bic1,mode,&cnt,&start_idx))<0){
|
25610
|
+
if(retval)*retval=ret1;
|
25611
|
+
return NULL;
|
25612
|
+
}
|
25613
|
+
if(filiale>=cnt){
|
25614
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25615
|
+
return NULL;
|
25616
|
+
}
|
25617
|
+
rv=biq_fkt_s(start_idx+filiale,&ret2,base);
|
25618
|
+
if(retval){
|
25619
|
+
if(ret2<0)
|
25620
|
+
*retval=ret2;
|
25621
|
+
else
|
25622
|
+
*retval=ret1;
|
25623
|
+
}
|
25624
|
+
return rv;
|
25625
|
+
}
|
25626
|
+
|
25627
|
+
static const char *biq_fkt_s(int idx,int*retval,char **base)
|
25628
|
+
{
|
25629
|
+
if(idx>0){
|
25630
|
+
if(idx>lut2_cnt){ /* der Test ist nur sehr grob, aber es gibt an dieser Stelle nicht mehr Infos */
|
25631
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25632
|
+
return NULL;
|
25633
|
+
}
|
25634
|
+
if(retval)*retval=OK;
|
25635
|
+
return base[sort_bic_h[idx]];
|
25636
|
+
}
|
25637
|
+
else{
|
25638
|
+
idx=-idx;
|
25639
|
+
if(idx>lut2_cnt){
|
25640
|
+
if(retval)*retval=LUT2_INDEX_OUT_OF_RANGE;
|
25641
|
+
return NULL;
|
25642
|
+
}
|
25643
|
+
if(retval)*retval=OK;
|
25644
|
+
return base[sort_bic[idx]];
|
25645
|
+
}
|
25646
|
+
}
|
25647
|
+
|
25648
|
+
static const char *iban_fkt_s(char *iban,int filiale,int *retval,const char*(*fkt)(char*,int,int*))
|
25649
|
+
{
|
25650
|
+
char blz[9];
|
25651
|
+
|
25652
|
+
/* nur zwei kleine Tests f�r die IBAN, dann die BLZ kopieren und die Funktion aufrufen */
|
25653
|
+
if((*iban!='d' && *iban!='D') || (iban[1]!='e' && iban[1]!='E')){
|
25654
|
+
if(retval)*retval= IBAN_ONLY_GERMAN;
|
25655
|
+
return NULL;
|
25656
|
+
}
|
25657
|
+
if(strlen(iban)!=22){
|
25658
|
+
if(retval)*retval=INVALID_IBAN_LENGTH;
|
25659
|
+
return NULL;
|
25660
|
+
}
|
25661
|
+
|
25662
|
+
memcpy(blz,iban+4,8);
|
25663
|
+
*(blz+8)=0;
|
25664
|
+
return fkt(blz,filiale,retval);
|
25665
|
+
}
|
25666
|
+
|
25009
25667
|
|
25010
25668
|
/* Funktion kto_check_set_default() und kto_check_set_default_bin() +���1 */
|
25011
25669
|
/* ###########################################################################
|
@@ -25314,6 +25972,9 @@ DLL_EXPORT int kto_check_encoding(int mode)
|
|
25314
25972
|
|
25315
25973
|
lut_encoding=encoding%10;
|
25316
25974
|
switch(mode){
|
25975
|
+
case 0:
|
25976
|
+
return current_encoding;
|
25977
|
+
|
25317
25978
|
case 1:
|
25318
25979
|
case 'i':
|
25319
25980
|
case 'I':
|
@@ -25659,7 +26320,7 @@ static int convert_encoding(char **data,UINT4 *len)
|
|
25659
26320
|
DLL_EXPORT const char *pz2str(int pz,int *ret)
|
25660
26321
|
{
|
25661
26322
|
if(ret){
|
25662
|
-
if(pz>=142)
|
26323
|
+
if(pz%1000>=142)
|
25663
26324
|
*ret=NOT_DEFINED;
|
25664
26325
|
else
|
25665
26326
|
*ret=OK;
|
@@ -25807,228 +26468,190 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
|
|
25807
26468
|
case 139: return "D9";
|
25808
26469
|
case 140: return "E0";
|
25809
26470
|
case 141: return "E1";
|
25810
|
-
case
|
25811
|
-
case
|
25812
|
-
case
|
25813
|
-
case
|
25814
|
-
case
|
25815
|
-
case
|
25816
|
-
case
|
25817
|
-
case
|
25818
|
-
case
|
25819
|
-
case
|
25820
|
-
case
|
25821
|
-
case
|
25822
|
-
case
|
25823
|
-
case
|
25824
|
-
case
|
25825
|
-
case
|
25826
|
-
case
|
25827
|
-
case
|
25828
|
-
case
|
25829
|
-
case
|
25830
|
-
case
|
25831
|
-
case
|
25832
|
-
case
|
25833
|
-
case
|
25834
|
-
case
|
25835
|
-
case
|
25836
|
-
case
|
25837
|
-
case
|
25838
|
-
case
|
25839
|
-
case
|
25840
|
-
case
|
25841
|
-
case
|
25842
|
-
case
|
25843
|
-
case
|
25844
|
-
case
|
25845
|
-
case
|
25846
|
-
case
|
25847
|
-
case
|
25848
|
-
case
|
25849
|
-
case
|
25850
|
-
case
|
25851
|
-
case
|
25852
|
-
case
|
25853
|
-
case
|
25854
|
-
case
|
25855
|
-
case
|
25856
|
-
case
|
25857
|
-
case
|
25858
|
-
case
|
25859
|
-
case
|
25860
|
-
case
|
25861
|
-
case
|
25862
|
-
case
|
25863
|
-
case
|
25864
|
-
case
|
25865
|
-
case
|
25866
|
-
case
|
25867
|
-
case
|
25868
|
-
case
|
25869
|
-
case
|
25870
|
-
case
|
25871
|
-
case
|
25872
|
-
case
|
25873
|
-
case
|
25874
|
-
case
|
25875
|
-
case
|
25876
|
-
case
|
25877
|
-
case
|
25878
|
-
case
|
25879
|
-
case
|
25880
|
-
case
|
25881
|
-
case
|
25882
|
-
case
|
25883
|
-
case
|
25884
|
-
case
|
25885
|
-
case
|
25886
|
-
case
|
25887
|
-
case
|
25888
|
-
case
|
25889
|
-
case
|
25890
|
-
case
|
25891
|
-
case
|
25892
|
-
case
|
25893
|
-
case
|
25894
|
-
case
|
25895
|
-
case
|
25896
|
-
case
|
25897
|
-
case
|
25898
|
-
case
|
25899
|
-
case
|
25900
|
-
case
|
25901
|
-
case
|
25902
|
-
case
|
25903
|
-
case
|
25904
|
-
case
|
25905
|
-
case
|
25906
|
-
case
|
25907
|
-
case
|
25908
|
-
case
|
25909
|
-
case
|
25910
|
-
case
|
25911
|
-
case
|
25912
|
-
case
|
25913
|
-
case
|
25914
|
-
case
|
25915
|
-
case
|
25916
|
-
case
|
25917
|
-
case
|
25918
|
-
case
|
25919
|
-
case
|
25920
|
-
case
|
25921
|
-
case
|
25922
|
-
case
|
25923
|
-
case
|
25924
|
-
case
|
25925
|
-
case
|
25926
|
-
case
|
25927
|
-
case
|
25928
|
-
case
|
25929
|
-
case
|
25930
|
-
case
|
25931
|
-
case
|
25932
|
-
case
|
25933
|
-
case
|
25934
|
-
case
|
25935
|
-
case
|
25936
|
-
case
|
25937
|
-
case
|
25938
|
-
case
|
25939
|
-
case
|
25940
|
-
case
|
25941
|
-
case
|
25942
|
-
case
|
25943
|
-
case
|
25944
|
-
case
|
25945
|
-
case
|
25946
|
-
case
|
25947
|
-
case
|
25948
|
-
case
|
25949
|
-
case
|
25950
|
-
case
|
25951
|
-
case
|
25952
|
-
case
|
25953
|
-
case
|
25954
|
-
case
|
25955
|
-
case
|
25956
|
-
case
|
25957
|
-
case
|
25958
|
-
case
|
25959
|
-
case
|
25960
|
-
case
|
25961
|
-
case
|
25962
|
-
case
|
25963
|
-
case
|
25964
|
-
case
|
25965
|
-
case
|
25966
|
-
case
|
25967
|
-
case
|
25968
|
-
case
|
25969
|
-
case
|
25970
|
-
case
|
25971
|
-
case
|
25972
|
-
case
|
25973
|
-
case
|
25974
|
-
case
|
25975
|
-
case
|
25976
|
-
case
|
25977
|
-
case
|
25978
|
-
case
|
25979
|
-
case
|
25980
|
-
case
|
25981
|
-
case
|
25982
|
-
case
|
25983
|
-
case
|
25984
|
-
case
|
25985
|
-
case
|
25986
|
-
case
|
25987
|
-
case
|
25988
|
-
case
|
25989
|
-
case
|
25990
|
-
case
|
25991
|
-
|
25992
|
-
case 324: return "W4";
|
25993
|
-
case 325: return "W5";
|
25994
|
-
case 326: return "W6";
|
25995
|
-
case 327: return "W7";
|
25996
|
-
case 328: return "W8";
|
25997
|
-
case 329: return "W9";
|
25998
|
-
case 330: return "X0";
|
25999
|
-
case 331: return "X1";
|
26000
|
-
case 332: return "X2";
|
26001
|
-
case 333: return "X3";
|
26002
|
-
case 334: return "X4";
|
26003
|
-
case 335: return "X5";
|
26004
|
-
case 336: return "X6";
|
26005
|
-
case 337: return "X7";
|
26006
|
-
case 338: return "X8";
|
26007
|
-
case 339: return "X9";
|
26008
|
-
case 340: return "Y0";
|
26009
|
-
case 341: return "Y1";
|
26010
|
-
case 342: return "Y2";
|
26011
|
-
case 343: return "Y3";
|
26012
|
-
case 344: return "Y4";
|
26013
|
-
case 345: return "Y5";
|
26014
|
-
case 346: return "Y6";
|
26015
|
-
case 347: return "Y7";
|
26016
|
-
case 348: return "Y8";
|
26017
|
-
case 349: return "Y9";
|
26018
|
-
case 350: return "Z0";
|
26019
|
-
case 351: return "Z1";
|
26020
|
-
case 352: return "Z2";
|
26021
|
-
case 353: return "Z3";
|
26022
|
-
case 354: return "Z4";
|
26023
|
-
case 355: return "Z5";
|
26024
|
-
case 356: return "Z6";
|
26025
|
-
case 357: return "Z7";
|
26026
|
-
case 358: return "Z8";
|
26027
|
-
case 359: return "Z9";
|
26028
|
-
default: return "??";
|
26471
|
+
case 1013: return "13a";
|
26472
|
+
case 1049: return "49a";
|
26473
|
+
case 1050: return "50a";
|
26474
|
+
case 1051: return "51a";
|
26475
|
+
case 1052: return "52a";
|
26476
|
+
case 1053: return "53a";
|
26477
|
+
case 1057: return "57a";
|
26478
|
+
case 1061: return "61a";
|
26479
|
+
case 1063: return "63a";
|
26480
|
+
case 1066: return "66a";
|
26481
|
+
case 1068: return "68a";
|
26482
|
+
case 1069: return "69a";
|
26483
|
+
case 1073: return "73a";
|
26484
|
+
case 1074: return "74a";
|
26485
|
+
case 1075: return "75a";
|
26486
|
+
case 1076: return "76a";
|
26487
|
+
case 1077: return "77a";
|
26488
|
+
case 1080: return "80a";
|
26489
|
+
case 1081: return "81a";
|
26490
|
+
case 1082: return "82a";
|
26491
|
+
case 1083: return "83a";
|
26492
|
+
case 1084: return "84a";
|
26493
|
+
case 1085: return "85a";
|
26494
|
+
case 1086: return "86a";
|
26495
|
+
case 1087: return "87a";
|
26496
|
+
case 1089: return "89a";
|
26497
|
+
case 1090: return "90a";
|
26498
|
+
case 1091: return "91a";
|
26499
|
+
case 1093: return "93a";
|
26500
|
+
case 1096: return "96a";
|
26501
|
+
case 1098: return "98a";
|
26502
|
+
case 1102: return "A2a";
|
26503
|
+
case 1103: return "A3a";
|
26504
|
+
case 1104: return "A4a";
|
26505
|
+
case 1105: return "A5a";
|
26506
|
+
case 1106: return "A6a";
|
26507
|
+
case 1107: return "A7a";
|
26508
|
+
case 1108: return "A8a";
|
26509
|
+
case 1109: return "A9a";
|
26510
|
+
case 1110: return "B0a";
|
26511
|
+
case 1111: return "B1a";
|
26512
|
+
case 1112: return "B2a";
|
26513
|
+
case 1113: return "B3a";
|
26514
|
+
case 1114: return "B4a";
|
26515
|
+
case 1115: return "B5a";
|
26516
|
+
case 1116: return "B6a";
|
26517
|
+
case 1117: return "B7a";
|
26518
|
+
case 1118: return "B8a";
|
26519
|
+
case 1119: return "B9a";
|
26520
|
+
case 1120: return "C0a";
|
26521
|
+
case 1121: return "C1a";
|
26522
|
+
case 1122: return "C2a";
|
26523
|
+
case 1123: return "C3a";
|
26524
|
+
case 1124: return "C4a";
|
26525
|
+
case 1125: return "C5a";
|
26526
|
+
case 1127: return "C7a";
|
26527
|
+
case 1128: return "C8a";
|
26528
|
+
case 1129: return "C9a";
|
26529
|
+
case 1130: return "D0a";
|
26530
|
+
case 1132: return "D2a";
|
26531
|
+
case 1133: return "D3a";
|
26532
|
+
case 1135: return "D5a";
|
26533
|
+
case 1136: return "D6a";
|
26534
|
+
case 1138: return "D8a";
|
26535
|
+
case 1139: return "D9a";
|
26536
|
+
case 2013: return "13b";
|
26537
|
+
case 2049: return "49b";
|
26538
|
+
case 2050: return "50b";
|
26539
|
+
case 2051: return "51b";
|
26540
|
+
case 2052: return "52b";
|
26541
|
+
case 2053: return "53b";
|
26542
|
+
case 2057: return "57b";
|
26543
|
+
case 2061: return "61b";
|
26544
|
+
case 2063: return "63b";
|
26545
|
+
case 2066: return "66b";
|
26546
|
+
case 2068: return "68b";
|
26547
|
+
case 2069: return "69b";
|
26548
|
+
case 2073: return "73b";
|
26549
|
+
case 2074: return "74b";
|
26550
|
+
case 2075: return "75b";
|
26551
|
+
case 2076: return "76b";
|
26552
|
+
case 2077: return "77b";
|
26553
|
+
case 2080: return "80b";
|
26554
|
+
case 2081: return "81b";
|
26555
|
+
case 2082: return "82b";
|
26556
|
+
case 2083: return "83b";
|
26557
|
+
case 2084: return "84b";
|
26558
|
+
case 2085: return "85b";
|
26559
|
+
case 2086: return "86b";
|
26560
|
+
case 2087: return "87b";
|
26561
|
+
case 2089: return "89b";
|
26562
|
+
case 2090: return "90b";
|
26563
|
+
case 2091: return "91b";
|
26564
|
+
case 2093: return "93b";
|
26565
|
+
case 2096: return "96b";
|
26566
|
+
case 2098: return "98b";
|
26567
|
+
case 2102: return "A2b";
|
26568
|
+
case 2103: return "A3b";
|
26569
|
+
case 2104: return "A4b";
|
26570
|
+
case 2105: return "A5b";
|
26571
|
+
case 2106: return "A6b";
|
26572
|
+
case 2107: return "A7b";
|
26573
|
+
case 2108: return "A8b";
|
26574
|
+
case 2109: return "A9b";
|
26575
|
+
case 2110: return "B0b";
|
26576
|
+
case 2111: return "B1b";
|
26577
|
+
case 2112: return "B2b";
|
26578
|
+
case 2113: return "B3b";
|
26579
|
+
case 2114: return "B4b";
|
26580
|
+
case 2115: return "B5b";
|
26581
|
+
case 2116: return "B6b";
|
26582
|
+
case 2117: return "B7b";
|
26583
|
+
case 2118: return "B8b";
|
26584
|
+
case 2119: return "B9b";
|
26585
|
+
case 2120: return "C0b";
|
26586
|
+
case 2121: return "C1b";
|
26587
|
+
case 2122: return "C2b";
|
26588
|
+
case 2123: return "C3b";
|
26589
|
+
case 2124: return "C4b";
|
26590
|
+
case 2125: return "C5b";
|
26591
|
+
case 2127: return "C7b";
|
26592
|
+
case 2128: return "C8b";
|
26593
|
+
case 2129: return "C9b";
|
26594
|
+
case 2130: return "D0b";
|
26595
|
+
case 2132: return "D2b";
|
26596
|
+
case 2133: return "D3b";
|
26597
|
+
case 2135: return "D5b";
|
26598
|
+
case 2136: return "D6b";
|
26599
|
+
case 2138: return "D8b";
|
26600
|
+
case 2139: return "D9b";
|
26601
|
+
case 3051: return "51c";
|
26602
|
+
case 3057: return "57c";
|
26603
|
+
case 3068: return "68c";
|
26604
|
+
case 3073: return "73c";
|
26605
|
+
case 3075: return "75c";
|
26606
|
+
case 3080: return "80c";
|
26607
|
+
case 3081: return "81c";
|
26608
|
+
case 3083: return "83c";
|
26609
|
+
case 3084: return "84c";
|
26610
|
+
case 3085: return "85c";
|
26611
|
+
case 3086: return "86c";
|
26612
|
+
case 3087: return "87c";
|
26613
|
+
case 3089: return "89c";
|
26614
|
+
case 3090: return "90c";
|
26615
|
+
case 3091: return "91c";
|
26616
|
+
case 3093: return "93c";
|
26617
|
+
case 3096: return "96c";
|
26618
|
+
case 3104: return "A4c";
|
26619
|
+
case 3108: return "A8c";
|
26620
|
+
case 3118: return "B8c";
|
26621
|
+
case 3125: return "C5c";
|
26622
|
+
case 3127: return "C7c";
|
26623
|
+
case 3128: return "C8c";
|
26624
|
+
case 3132: return "D2c";
|
26625
|
+
case 3135: return "D5c";
|
26626
|
+
case 3136: return "D6c";
|
26627
|
+
case 3139: return "D9c";
|
26628
|
+
case 4051: return "51d";
|
26629
|
+
case 4057: return "57d";
|
26630
|
+
case 4073: return "73d";
|
26631
|
+
case 4080: return "80d";
|
26632
|
+
case 4083: return "83d";
|
26633
|
+
case 4084: return "84d";
|
26634
|
+
case 4085: return "85d";
|
26635
|
+
case 4086: return "86d";
|
26636
|
+
case 4087: return "87d";
|
26637
|
+
case 4090: return "90d";
|
26638
|
+
case 4091: return "91d";
|
26639
|
+
case 4093: return "93d";
|
26640
|
+
case 4104: return "A4d";
|
26641
|
+
case 4108: return "A8d";
|
26642
|
+
case 4125: return "C5d";
|
26643
|
+
case 4135: return "D5d";
|
26644
|
+
case 5051: return "51e";
|
26645
|
+
case 5073: return "73e";
|
26646
|
+
case 5084: return "84e";
|
26647
|
+
case 5087: return "87e";
|
26648
|
+
case 5090: return "90e";
|
26649
|
+
case 5104: return "A4e";
|
26650
|
+
case 6051: return "51f";
|
26651
|
+
case 6090: return "90f";
|
26652
|
+
default: return "???";
|
26029
26653
|
}
|
26030
26654
|
}
|
26031
|
-
#line 23376 "konto_check.lxx"
|
26032
26655
|
|
26033
26656
|
/* Funktion lut_keine_iban_berechnung() +���1 */
|
26034
26657
|
/*
|
@@ -26223,6 +26846,7 @@ XI lut_filialen(char *b,int *retval)EXCLUDED
|
|
26223
26846
|
XI dump_lutfile(char *outputname,UINT4 *required)EXCLUDED
|
26224
26847
|
XI dump_lutfile_p(char *outputname,UINT4 felder)EXCLUDED
|
26225
26848
|
XI lut_blz(char *b,int zweigstelle)EXCLUDED
|
26849
|
+
XI lut_blz_i(int b,int zweigstelle);
|
26226
26850
|
XCC lut_name(char *b,int zweigstelle,int *retval)EXCLUDED_S
|
26227
26851
|
XCC lut_name_i(int b,int zweigstelle,int *retval)EXCLUDED_S
|
26228
26852
|
XCC lut_name_kurz(char *b,int zweigstelle,int *retval)EXCLUDED_S
|
@@ -26248,6 +26872,45 @@ XI lut_nachfolge_blz_i(int b,int zweigstelle,int *retval)EXCLUDED
|
|
26248
26872
|
XI lut_iban_regel(char *b,int zweigstelle,int *retval)EXCLUDED
|
26249
26873
|
XI lut_iban_regel_i(int b,int zweigstelle,int *retval)EXCLUDED
|
26250
26874
|
XI lut_cleanup(void)EXCLUDED
|
26875
|
+
XI bic_aenderung(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26876
|
+
XI biq_aenderung(int idx,int*retval)EXCLUDED
|
26877
|
+
XI iban_aenderung(char *iban,int filiale,int*retval)EXCLUDED
|
26878
|
+
XI bic_loeschung(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26879
|
+
XI biq_loeschung(int idx,int*retval)EXCLUDED
|
26880
|
+
XI iban_loeschung(char *iban,int filiale,int*retval)EXCLUDED
|
26881
|
+
XI bic_iban_regel(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26882
|
+
XI biq_iban_regel(int idx,int*retval)EXCLUDED
|
26883
|
+
XI iban_iban_regel(char *iban,int filiale,int*retval)EXCLUDED
|
26884
|
+
XI bic_nachfolge_blz(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26885
|
+
XI biq_nachfolge_blz(int idx,int*retval)EXCLUDED
|
26886
|
+
XI iban_nachfolge_blz(char *iban,int filiale,int*retval)EXCLUDED
|
26887
|
+
XI bic_nr(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26888
|
+
XI biq_nr(int idx,int*retval)EXCLUDED
|
26889
|
+
XI iban_nr(char *iban,int filiale,int*retval)EXCLUDED
|
26890
|
+
XI bic_pan(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26891
|
+
XI biq_pan(int idx,int*retval)EXCLUDED
|
26892
|
+
XI iban_pan(char *iban,int filiale,int*retval)EXCLUDED
|
26893
|
+
XI bic_plz(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26894
|
+
XI biq_plz(int idx,int*retval)EXCLUDED
|
26895
|
+
XI iban_plz(char *iban,int filiale,int*retval)EXCLUDED
|
26896
|
+
XI bic_pz(char *bic_name,int mode,int filiale,int*retval)EXCLUDED
|
26897
|
+
XI biq_pz(int idx,int*retval)EXCLUDED
|
26898
|
+
XI iban_pz(char *iban,int filiale,int*retval)EXCLUDED
|
26899
|
+
XCC bic_bic(char *bic_name,int mode,int filiale,int*retval)EXCLUDED_S
|
26900
|
+
XCC biq_bic(int idx,int*retval)EXCLUDED_S
|
26901
|
+
XCC iban_bic(char *iban,int filiale,int*retval)EXCLUDED_S
|
26902
|
+
XCC bic_bic_h(char *bic_name,int mode,int filiale,int*retval)EXCLUDED_S
|
26903
|
+
XCC biq_bic_h(int idx,int*retval)EXCLUDED_S
|
26904
|
+
XCC iban_bic_h(char *iban,int filiale,int*retval)EXCLUDED_S
|
26905
|
+
XCC bic_name(char *bic_name,int mode,int filiale,int*retval)EXCLUDED_S
|
26906
|
+
XCC biq_name(int idx,int*retval)EXCLUDED_S
|
26907
|
+
XCC iban_name(char *iban,int filiale,int*retval)EXCLUDED_S
|
26908
|
+
XCC bic_name_kurz(char *bic_name,int mode,int filiale,int*retval)EXCLUDED_S
|
26909
|
+
XCC biq_name_kurz(int idx,int*retval)EXCLUDED_S
|
26910
|
+
XCC iban_name_kurz(char *iban,int filiale,int*retval)EXCLUDED_S
|
26911
|
+
XCC bic_ort(char *bic_name,int mode,int filiale,int*retval)EXCLUDED_S
|
26912
|
+
XCC biq_ort(int idx,int*retval)EXCLUDED_S
|
26913
|
+
XCC iban_ort(char *iban,int filiale,int*retval)EXCLUDED_S
|
26251
26914
|
XI kto_check_encoding(int mode)EXCLUDED
|
26252
26915
|
XI keep_raw_data(int mode)EXCLUDED
|
26253
26916
|
XCC kto_check_encoding_str(int mode)EXCLUDED_S
|
@@ -26258,6 +26921,7 @@ XCC kto_check_retval2dos(int retval)EXCLUDED_S
|
|
26258
26921
|
XCC kto_check_retval2utf8(int retval)EXCLUDED_S
|
26259
26922
|
XI rebuild_blzfile(char *inputname,char *outputname,UINT4 set)EXCLUDED
|
26260
26923
|
XI ci_check(char *ci)EXCLUDED
|
26924
|
+
XI bic_check(char *search_bic,int *cnt)EXCLUDED
|
26261
26925
|
XI iban_check(char *iban,int *retval)EXCLUDED
|
26262
26926
|
XCC iban2bic(char *iban,int *retval,char *blz,char *kto)EXCLUDED_S
|
26263
26927
|
XC iban_gen(char *kto,char *blz,int *retval)EXCLUDED_S
|