konto_check 5.2.1 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|