konto_check 6.08.0 → 6.13.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.
- checksums.yaml +4 -4
- data/ext/konto_check_raw/konto_check.c +126 -106
- data/ext/konto_check_raw/konto_check.h +17 -13
- data/ext/konto_check_raw/konto_check_raw_ruby.c +528 -2
- data/lib/konto_check.rb +216 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa869ca84203c2f9c627a8ed8c9c2fd6da6d8a1c8cb6450ad8954fffb9ca89b3
|
4
|
+
data.tar.gz: b35b73763d3f4234753263a757151a6e0de9332b6305c4bad39fe7cb18e9a1ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dcf2deacd64ad3dd65632079d387e32658bb844042b568650b7a333d6cf1f7c20bba4a459bf03750337621a0259988ac9679539a16b4b97c0b56585db3e7448
|
7
|
+
data.tar.gz: b5e6a983283ec282981a28cb4d5c0c453353c5965d0c2053fe3d2af006e034e792601978e7fb02f058b553f77a2109f330fd901c8603fe87c5c002890c5d15e6
|
@@ -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-2020 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,15 +45,14 @@
|
|
45
45
|
* # im Internet herunterladen. #
|
46
46
|
* ##########################################################################
|
47
47
|
*/
|
48
|
-
#line 332 "konto_check.lxx"
|
49
48
|
|
50
49
|
/* Definitionen und Includes */
|
51
50
|
#ifndef VERSION
|
52
|
-
#define VERSION "6.
|
51
|
+
#define VERSION "6.13 (final)"
|
53
52
|
#define VERSION_MAJOR 6
|
54
|
-
#define VERSION_MINOR
|
53
|
+
#define VERSION_MINOR 13
|
55
54
|
#endif
|
56
|
-
#define VERSION_DATE "
|
55
|
+
#define VERSION_DATE "2020-12-16"
|
57
56
|
|
58
57
|
#ifndef INCLUDE_KONTO_CHECK_DE
|
59
58
|
#define INCLUDE_KONTO_CHECK_DE 1
|
@@ -104,8 +103,8 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
|
|
104
103
|
#define KONTO_CHECK_VARS
|
105
104
|
#include "konto_check.h"
|
106
105
|
|
107
|
-
/* Flag, um die �nderungen zum Dezember
|
108
|
-
static int
|
106
|
+
/* Flag, um die �nderungen zum Dezember 2019 zu aktivieren */
|
107
|
+
static int pz_aenderungen_aktivieren_2019_12;
|
109
108
|
|
110
109
|
/* falls die Variable verbose_debug gesetzt wird, werden bei einigen
|
111
110
|
* Funktionen mittels perror() zus�tzliche Debuginfos ausgegeben. Die
|
@@ -249,7 +248,6 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
249
248
|
#define free(ptr) efree(ptr)
|
250
249
|
#endif
|
251
250
|
|
252
|
-
#line 777 "konto_check.lxx"
|
253
251
|
|
254
252
|
/* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
|
255
253
|
#define BLZ_FEHLER 100000000
|
@@ -385,7 +383,6 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
385
383
|
*/
|
386
384
|
#define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
|
387
385
|
#define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
|
388
|
-
#line 918 "konto_check.lxx"
|
389
386
|
|
390
387
|
/* einige Makros zur Umwandlung zwischen unsigned int und char */
|
391
388
|
#define UCP (unsigned char*)
|
@@ -505,7 +502,6 @@ int pz=-777;
|
|
505
502
|
|
506
503
|
#define E_START(x)
|
507
504
|
#define E_END(x)
|
508
|
-
#line 1043 "konto_check.lxx"
|
509
505
|
|
510
506
|
/* Variable f�r die Methoden 27, 29 und 69 */
|
511
507
|
static const int m10h_digits[4][10]={
|
@@ -954,7 +950,6 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
|
|
954
950
|
* ###########################################################################
|
955
951
|
*/
|
956
952
|
|
957
|
-
#line 1492 "konto_check.lxx"
|
958
953
|
DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
959
954
|
{
|
960
955
|
char buffer[SLOT_BUFFER],*ptr;
|
@@ -992,7 +987,6 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
|
992
987
|
* #############################################################################
|
993
988
|
*/
|
994
989
|
|
995
|
-
#line 1530 "konto_check.lxx"
|
996
990
|
static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
997
991
|
{
|
998
992
|
char buffer[SLOT_BUFFER],*ptr,*cptr;
|
@@ -1128,7 +1122,6 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
|
1128
1122
|
* ###########################################################################
|
1129
1123
|
*/
|
1130
1124
|
|
1131
|
-
#line 1666 "konto_check.lxx"
|
1132
1125
|
DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
|
1133
1126
|
{
|
1134
1127
|
int retval;
|
@@ -1151,7 +1144,6 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
|
|
1151
1144
|
* ###########################################################################
|
1152
1145
|
*/
|
1153
1146
|
|
1154
|
-
#line 1690 "konto_check.lxx"
|
1155
1147
|
DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
1156
1148
|
{
|
1157
1149
|
int retval;
|
@@ -1173,7 +1165,6 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
|
1173
1165
|
* ###########################################################################
|
1174
1166
|
*/
|
1175
1167
|
|
1176
|
-
#line 1713 "konto_check.lxx"
|
1177
1168
|
static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
|
1178
1169
|
{
|
1179
1170
|
char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
|
@@ -1263,7 +1254,6 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
|
|
1263
1254
|
FREE(sbuffer);
|
1264
1255
|
RETURN(ERROR_MALLOC);
|
1265
1256
|
}
|
1266
|
-
#line 1818 "konto_check.lxx"
|
1267
1257
|
|
1268
1258
|
if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
|
1269
1259
|
FREE(sbuffer);
|
@@ -2742,6 +2732,38 @@ DLL_EXPORT int lut_valid(void)
|
|
2742
2732
|
RETURN(LUT2_NO_LONGER_VALID);
|
2743
2733
|
}
|
2744
2734
|
|
2735
|
+
DLL_EXPORT int lut_valid_date(char *lut_name,int *v11,int *v12,int *v21,int *v22)
|
2736
|
+
{
|
2737
|
+
char *ptr,*info1,*info2;
|
2738
|
+
int retval,v1,v2;
|
2739
|
+
|
2740
|
+
*v11=*v12=*v21=*v22=0;
|
2741
|
+
if((retval=lut_info(lut_name,&info1,&info2,&v1,&v2))!=OK)return retval;
|
2742
|
+
if(info1){
|
2743
|
+
for(ptr=info1;*ptr && *ptr!='\n' && !isdigit(*ptr);ptr++);
|
2744
|
+
if(*ptr && *ptr!='\n'){
|
2745
|
+
*v11=strtoul(ptr,NULL,10); /* Anfangsdatum der G�ltigkeit */
|
2746
|
+
if(*ptr && *ptr!='\n'){
|
2747
|
+
while(*ptr && *ptr!='\n' && *ptr++!='-'); /* Endedatum suchen */
|
2748
|
+
if(*ptr)*v12=strtoul(ptr,NULL,10); /* Endedatum der G�ltigkeit */
|
2749
|
+
}
|
2750
|
+
}
|
2751
|
+
free(info1);
|
2752
|
+
}
|
2753
|
+
if(info2){
|
2754
|
+
for(ptr=info2;*ptr && *ptr!='\n' && !isdigit(*ptr);ptr++);
|
2755
|
+
if(*ptr && *ptr!='\n'){
|
2756
|
+
*v21=strtoul(ptr,NULL,10); /* Anfangsdatum der G�ltigkeit */
|
2757
|
+
if(*ptr && *ptr!='\n'){
|
2758
|
+
while(*ptr && *ptr!='\n' && *ptr++!='-'); /* Endedatum suchen */
|
2759
|
+
if(*ptr)*v22=strtoul(ptr,NULL,10); /* Endedatum der G�ltigkeit */
|
2760
|
+
}
|
2761
|
+
}
|
2762
|
+
free(info2);
|
2763
|
+
}
|
2764
|
+
return OK;
|
2765
|
+
}
|
2766
|
+
|
2745
2767
|
|
2746
2768
|
/* Funktion lut_info_b() +���1 */
|
2747
2769
|
/* ###########################################################################
|
@@ -2856,7 +2878,6 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
|
|
2856
2878
|
* ###########################################################################
|
2857
2879
|
*/
|
2858
2880
|
|
2859
|
-
#line 3411 "konto_check.lxx"
|
2860
2881
|
DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
|
2861
2882
|
{
|
2862
2883
|
char *ptr,*ptr1,buffer[128];
|
@@ -2944,7 +2965,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2944
2965
|
|
2945
2966
|
/* Infoblocks lesen: 1. Infoblock */
|
2946
2967
|
if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
|
2947
|
-
#line 3500 "konto_check.lxx"
|
2948
2968
|
*(ptr+cnt)=0;
|
2949
2969
|
if(valid1){
|
2950
2970
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -2992,7 +3012,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2992
3012
|
|
2993
3013
|
/* Infoblocks lesen: 2. Infoblock */
|
2994
3014
|
if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
|
2995
|
-
#line 3549 "konto_check.lxx"
|
2996
3015
|
*(ptr+cnt)=0;
|
2997
3016
|
if(valid2){
|
2998
3017
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -3211,7 +3230,6 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
|
|
3211
3230
|
qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
|
3212
3231
|
for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
|
3213
3232
|
read_lut_block_int(lut1,0,typ,&len,&data);
|
3214
|
-
#line 3769 "konto_check.lxx"
|
3215
3233
|
write_lut_block_int(lut2,typ,len,data);
|
3216
3234
|
FREE(data);
|
3217
3235
|
last_slot=typ;
|
@@ -3441,7 +3459,6 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
|
|
3441
3459
|
* # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
|
3442
3460
|
* ###########################################################################
|
3443
3461
|
*/
|
3444
|
-
#line 3999 "konto_check.lxx"
|
3445
3462
|
DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
|
3446
3463
|
{
|
3447
3464
|
char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
|
@@ -3669,7 +3686,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3669
3686
|
typ1=typ;
|
3670
3687
|
if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
|
3671
3688
|
retval=read_lut_block_int(lut,0,typ,&len,&data);
|
3672
|
-
#line 4228 "konto_check.lxx"
|
3673
3689
|
|
3674
3690
|
switch(retval){
|
3675
3691
|
case LUT_CRC_ERROR:
|
@@ -3757,7 +3773,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3757
3773
|
if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
|
3758
3774
|
FREE(data);
|
3759
3775
|
i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
|
3760
|
-
#line 4320 "konto_check.lxx"
|
3761
3776
|
if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
|
3762
3777
|
typ=LUT2_2_NAME_NAME_KURZ;
|
3763
3778
|
typ1=LUT2_NAME_NAME_KURZ;
|
@@ -4363,7 +4378,6 @@ DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *
|
|
4363
4378
|
* ###########################################################################
|
4364
4379
|
*/
|
4365
4380
|
|
4366
|
-
#line 4926 "konto_check.lxx"
|
4367
4381
|
DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
|
4368
4382
|
{
|
4369
4383
|
if(init_status<7 || !current_lutfile){
|
@@ -5118,7 +5132,6 @@ static int iban_init(void)
|
|
5118
5132
|
* ###########################################################################
|
5119
5133
|
*/
|
5120
5134
|
|
5121
|
-
#line 5681 "konto_check.lxx"
|
5122
5135
|
static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
|
5123
5136
|
{
|
5124
5137
|
char tmp_buffer[16];
|
@@ -5961,9 +5974,9 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5961
5974
|
return OK_BLZ_REPLACED;
|
5962
5975
|
|
5963
5976
|
|
5964
|
-
/* Iban-Regel 0020.
|
5977
|
+
/* Iban-Regel 0020.02 +���3 */
|
5965
5978
|
/* Deutsche Bank AG
|
5966
|
-
* Neuimplementierung nach der Regel-Version 1.
|
5979
|
+
* Neuimplementierung nach der Regel-Version 1.51 der Deutschen Bank vom 19.9.2013
|
5967
5980
|
*/
|
5968
5981
|
case 20:
|
5969
5982
|
|
@@ -8058,21 +8071,29 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8058
8071
|
*bicp="VONEDE33XXX";
|
8059
8072
|
return OK_BLZ_REPLACED;
|
8060
8073
|
|
8061
|
-
/* Iban-Regel 0049.
|
8062
|
-
/*
|
8074
|
+
/* Iban-Regel 0049.01 +���3 */
|
8075
|
+
/* DZ Bank */
|
8063
8076
|
case 49:
|
8064
8077
|
|
8065
|
-
/*
|
8066
|
-
|
8067
|
-
|
8068
|
-
|
8069
|
-
|
8070
|
-
|
8071
|
-
|
8072
|
-
|
8078
|
+
/* Bei der Ermittlung von IBAN und BIC aus Kontonummer und BLZ sind in Abwei-
|
8079
|
+
* chung zu der Standard IBAN-Regel folgende Besonderheiten zu beachten:
|
8080
|
+
*
|
8081
|
+
* 1. F�r die Bankleitzahlen 300 600 10, 400 600 00 und 570 600 00 der DZ BANK ist die
|
8082
|
+
* IBAN-Ermittlung f�r Kontonummern mit der 1.-2. Stelle ungleich '92-99' (standardm��ig
|
8083
|
+
* links mit Nullen auf 10 Stellen aufgef�llt) mit der Standard-IBAN-Regel m�glich.
|
8084
|
+
*
|
8085
|
+
* 2. Kontonummern mit einer '92-99' an der 1.-2. Stelle haben keine Pr�fziffer, die daher
|
8086
|
+
* nicht gepr�ft werden darf. Auch f�r diese Konten kann die IBAN nach der Standard-
|
8087
|
+
* IBAN-Regel ermittelt werden.
|
8088
|
+
*
|
8089
|
+
* [etwas vereinfacht ausgedr�ckt, k�nnen Konten einfach nach der Standard-Regel konvertiert werden :-) ]
|
8090
|
+
*/
|
8073
8091
|
|
8074
|
-
/*
|
8075
|
-
*
|
8092
|
+
/* (der folgende Teil wurde nicht gel�scht, da er auch aus realen Kontodaten stammt;
|
8093
|
+
* die ehemaligen Sonderkonten tauchen nicht mehr auf und wurden entfernt)
|
8094
|
+
*
|
8095
|
+
* F�r Kontonummern mit einer '9' an der 5. Stelle muss die Kontonummer, auf deren Basis
|
8096
|
+
* die IBAN ermittelt wird, abweichend berechnet werden. Die ersten 4 Stellen (inkl.
|
8076
8097
|
* aufgef�llter Nullen) m�ssen ans Ende gestellt werden, so dass die Kontonummer dann
|
8077
8098
|
* immer mit der '9' anf�ngt.
|
8078
8099
|
*
|
@@ -8279,7 +8300,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8279
8300
|
}
|
8280
8301
|
}
|
8281
8302
|
|
8282
|
-
#line 8842 "konto_check.lxx"
|
8283
8303
|
/* Funktion lut_multiple() +���2 */
|
8284
8304
|
/* ###########################################################################
|
8285
8305
|
* # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
|
@@ -8547,7 +8567,6 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8547
8567
|
FREE(sort_pz_f);
|
8548
8568
|
FREE(sort_plz);
|
8549
8569
|
FREE(sort_iban_regel);
|
8550
|
-
#line 9104 "konto_check.lxx"
|
8551
8570
|
if(name_raw && name_data!=name_raw)
|
8552
8571
|
FREE(name_raw);
|
8553
8572
|
else
|
@@ -8624,7 +8643,6 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8624
8643
|
lut_cleanup(); /* neuer Versuch, aufzur�umen */
|
8625
8644
|
RETURN(INIT_FATAL_ERROR);
|
8626
8645
|
}
|
8627
|
-
#line 9186 "konto_check.lxx"
|
8628
8646
|
init_status&=1;
|
8629
8647
|
init_in_progress=0;
|
8630
8648
|
return OK;
|
@@ -8797,8 +8815,8 @@ static void init_atoi_table(void)
|
|
8797
8815
|
int i,ziffer;
|
8798
8816
|
unsigned long l;
|
8799
8817
|
|
8800
|
-
/* �nderungen zum
|
8801
|
-
if(time(NULL)>
|
8818
|
+
/* �nderungen zum 09.12.2019 aktivieren */
|
8819
|
+
if(time(NULL)>1575846000 ||0)pz_aenderungen_aktivieren_2019_12=1;
|
8802
8820
|
|
8803
8821
|
/* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
|
8804
8822
|
* angesehen(!), da die Stellenzuordnung sonst nicht mehr stimmt. Ausnahme:
|
@@ -9091,7 +9109,6 @@ static void init_atoi_table(void)
|
|
9091
9109
|
lut_block_name2[130]="2. SCL Banknamen";
|
9092
9110
|
lut_block_name2[131]="2. SCL Flags";
|
9093
9111
|
lut_blocklen_max=521;
|
9094
|
-
#line 9426 "konto_check.lxx"
|
9095
9112
|
init_status|=1;
|
9096
9113
|
}
|
9097
9114
|
|
@@ -9151,7 +9168,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9151
9168
|
|
9152
9169
|
switch(pz_methode){
|
9153
9170
|
|
9154
|
-
#line 9489 "konto_check.lxx"
|
9155
9171
|
/* Berechnungsmethoden 00 bis 09 +���3
|
9156
9172
|
Berechnung nach der Methode 00 +���4 */
|
9157
9173
|
/*
|
@@ -10988,6 +11004,10 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
10988
11004
|
* # Stellennr.: 1 2 3 4 5 6 7 8 9 10 #
|
10989
11005
|
* # Kontonr.: x x x x x x x x x P #
|
10990
11006
|
* # Gewichtung: 0 0 0 0 A 5 8 4 2 (A = 10) #
|
11007
|
+
* # #
|
11008
|
+
* # Es gibt noch einen Sonderfall, der in der IBAN-Regel 49 angegeben #
|
11009
|
+
* # ist: Konten mit 9 an der ersten oder 5. Stelle enthalten keine #
|
11010
|
+
* # Pr�fziffer. sondern sind ohne Pr�fung als richtig anzusehen. #
|
10991
11011
|
* ######################################################################
|
10992
11012
|
*/
|
10993
11013
|
case 44:
|
@@ -11486,7 +11506,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11486
11506
|
* ######################################################################
|
11487
11507
|
*/
|
11488
11508
|
|
11489
|
-
#line 11500 "konto_check.lxx"
|
11490
11509
|
case 51:
|
11491
11510
|
if(*(kto+2)=='9'){ /* Ausnahme */
|
11492
11511
|
|
@@ -11748,8 +11767,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11748
11767
|
else
|
11749
11768
|
return FALSE;
|
11750
11769
|
|
11751
|
-
#line 11714 "konto_check.lxx"
|
11752
|
-
#line 11716 "konto_check.lxx"
|
11753
11770
|
/* Berechnung nach der Methode 53 +���4 */
|
11754
11771
|
/*
|
11755
11772
|
* ######################################################################
|
@@ -12048,7 +12065,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12048
12065
|
* # bewerten. #
|
12049
12066
|
* ######################################################################
|
12050
12067
|
*/
|
12051
|
-
#line 11985 "konto_check.lxx"
|
12052
12068
|
case 57:
|
12053
12069
|
#if DEBUG>0
|
12054
12070
|
if(retvals){
|
@@ -12694,7 +12710,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12694
12710
|
* # Pr�fzifferberechnung) #
|
12695
12711
|
* ######################################################################
|
12696
12712
|
*/
|
12697
|
-
#line 12565 "konto_check.lxx"
|
12698
12713
|
case 66:
|
12699
12714
|
#if DEBUG>0
|
12700
12715
|
case 2066:
|
@@ -20103,7 +20118,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
20103
20118
|
return NOT_IMPLEMENTED;
|
20104
20119
|
}
|
20105
20120
|
}
|
20106
|
-
#line 18777 "konto_check.lxx"
|
20107
20121
|
|
20108
20122
|
/*
|
20109
20123
|
* ######################################################################
|
@@ -20201,7 +20215,6 @@ DLL_EXPORT int kto_check_blz(char *blz,char *kto)
|
|
20201
20215
|
#if DEBUG>0 /* es werden einige Funktionen benutzt, die nur in der Debug-Variante enthalten sind */
|
20202
20216
|
DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,const char **bic,int *regel,RETVAL *retvals)
|
20203
20217
|
{
|
20204
|
-
#line 18875 "konto_check.lxx"
|
20205
20218
|
char *blz_o,buffer[32],kto_o[16],*blz_n,*kto_n,*ptr,*dptr;
|
20206
20219
|
const char *bicp;
|
20207
20220
|
int ret,ret_regel,r,i;
|
@@ -20250,7 +20263,6 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
|
|
20250
20263
|
}
|
20251
20264
|
else /* BLZ und Kto gleich */
|
20252
20265
|
return ret;
|
20253
|
-
#line 18924 "konto_check.lxx"
|
20254
20266
|
}
|
20255
20267
|
|
20256
20268
|
#else /* !DEBUG */
|
@@ -20401,7 +20413,6 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
|
|
20401
20413
|
* # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
|
20402
20414
|
* ###########################################################################
|
20403
20415
|
*/
|
20404
|
-
#line 19075 "konto_check.lxx"
|
20405
20416
|
DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
|
20406
20417
|
{
|
20407
20418
|
int untermethode,pz_methode;
|
@@ -20637,7 +20648,6 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
|
|
20637
20648
|
}
|
20638
20649
|
else
|
20639
20650
|
**user_info_p=0;
|
20640
|
-
#line 19296 "konto_check.lxx"
|
20641
20651
|
FREE(prolog);
|
20642
20652
|
return OK;
|
20643
20653
|
}
|
@@ -20772,20 +20782,20 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
|
|
20772
20782
|
case 3:
|
20773
20783
|
return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
|
20774
20784
|
case 4: /* Datum der Pr�fziffermethode */
|
20775
|
-
if(
|
20776
|
-
return "
|
20785
|
+
if(pz_aenderungen_aktivieren_2019_12)
|
20786
|
+
return "09.12.2019";
|
20777
20787
|
else
|
20778
|
-
return "
|
20788
|
+
return "09.09.2019 (Aenderungen vom 09.12.2019 enthalten aber noch nicht aktiviert)";
|
20779
20789
|
case 5:
|
20780
|
-
return "
|
20790
|
+
return "09.09.2019";
|
20781
20791
|
case 6:
|
20782
|
-
return "
|
20792
|
+
return "16. Dezember 2020"; /* Klartext-Datum der Bibliotheksversion */
|
20783
20793
|
case 7:
|
20784
20794
|
return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
|
20785
20795
|
case 8:
|
20786
20796
|
return "6"; /* Hauptversionszahl */
|
20787
20797
|
case 9:
|
20788
|
-
return "
|
20798
|
+
return "13"; /* Unterversionszahl */
|
20789
20799
|
}
|
20790
20800
|
}
|
20791
20801
|
|
@@ -20931,7 +20941,6 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
|
|
20931
20941
|
default:
|
20932
20942
|
break;
|
20933
20943
|
}
|
20934
|
-
#line 19529 "konto_check.lxx"
|
20935
20944
|
fputc('\n',out);
|
20936
20945
|
while(--i)fputc('=',out);
|
20937
20946
|
fputc('\n',out);
|
@@ -21256,7 +21265,6 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
|
|
21256
21265
|
return iban2bic(iban,retval,b,k);
|
21257
21266
|
}
|
21258
21267
|
|
21259
|
-
#line 19854 "konto_check.lxx"
|
21260
21268
|
/* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
|
21261
21269
|
/* ###########################################################################
|
21262
21270
|
* # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
|
@@ -22089,7 +22097,6 @@ DLL_EXPORT int ipi_check(char *zweck)
|
|
22089
22097
|
* # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
|
22090
22098
|
* ###########################################################################
|
22091
22099
|
*/
|
22092
|
-
#line 20687 "konto_check.lxx"
|
22093
22100
|
|
22094
22101
|
/* Funktion volltext_zeichen() +���2 */
|
22095
22102
|
/* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
|
@@ -22936,7 +22943,6 @@ static int qcmp_bic_h(const void *ap,const void *bp)
|
|
22936
22943
|
return a-b;
|
22937
22944
|
}
|
22938
22945
|
|
22939
|
-
#line 21534 "konto_check.lxx"
|
22940
22946
|
|
22941
22947
|
/* Funktion qcmp_bic() +���3 */
|
22942
22948
|
static int qcmp_bic(const void *ap,const void *bp)
|
@@ -23041,7 +23047,6 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
|
|
23041
23047
|
else
|
23042
23048
|
return a-b;
|
23043
23049
|
}
|
23044
|
-
#line 21549 "konto_check.lxx"
|
23045
23050
|
|
23046
23051
|
/* Funktion init_blzf() +���2
|
23047
23052
|
* Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
|
@@ -23109,7 +23114,6 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
|
|
23109
23114
|
}
|
23110
23115
|
|
23111
23116
|
/* Funktion suche_int1() +���2 */
|
23112
|
-
#line 21617 "konto_check.lxx"
|
23113
23117
|
static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23114
23118
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
|
23115
23119
|
{
|
@@ -23160,7 +23164,6 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
|
|
23160
23164
|
}
|
23161
23165
|
|
23162
23166
|
/* Funktion suche_int2() +���2 */
|
23163
|
-
#line 21668 "konto_check.lxx"
|
23164
23167
|
static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23165
23168
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
|
23166
23169
|
{
|
@@ -23775,7 +23778,6 @@ static int cmp_suche_sort(const void *ap,const void *bp)
|
|
23775
23778
|
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)
|
23776
23779
|
{
|
23777
23780
|
int i,j,last_idx,*idx_a,*cnt_o;
|
23778
|
-
#line 22284 "konto_check.lxx"
|
23779
23781
|
|
23780
23782
|
if(idx_op)*idx_op=NULL;
|
23781
23783
|
if(cnt_op)*cnt_op=NULL;
|
@@ -23857,7 +23859,6 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
|
|
23857
23859
|
return OK;
|
23858
23860
|
}
|
23859
23861
|
|
23860
|
-
#line 22367 "konto_check.lxx"
|
23861
23862
|
/* Funktion lut_suche_volltext() +���2 */
|
23862
23863
|
DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
|
23863
23864
|
int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
|
@@ -23987,7 +23988,6 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
23987
23988
|
return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
|
23988
23989
|
}
|
23989
23990
|
|
23990
|
-
#line 22517 "konto_check.lxx"
|
23991
23991
|
/* Funktion lut_suche_bic() +���2 */
|
23992
23992
|
DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
23993
23993
|
char ***base_name,int **blz_base)
|
@@ -24078,7 +24078,6 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
|
|
24078
24078
|
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);
|
24079
24079
|
}
|
24080
24080
|
|
24081
|
-
#line 22550 "konto_check.lxx"
|
24082
24081
|
|
24083
24082
|
/* Funktion lut_suche_bic_h() +���2 */
|
24084
24083
|
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
@@ -24464,7 +24463,6 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
|
|
24464
24463
|
{
|
24465
24464
|
return iban_fkt_s(iban,filiale,retval,lut_ort);
|
24466
24465
|
}
|
24467
|
-
#line 22639 "konto_check.lxx"
|
24468
24466
|
|
24469
24467
|
static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
|
24470
24468
|
{
|
@@ -25753,7 +25751,6 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
|
|
25753
25751
|
default: return "???";
|
25754
25752
|
}
|
25755
25753
|
}
|
25756
|
-
#line 23594 "konto_check.lxx"
|
25757
25754
|
|
25758
25755
|
/* Funktion lut_keine_iban_berechnung() +���1 */
|
25759
25756
|
/*
|
@@ -25868,7 +25865,7 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
25868
25865
|
/* Funktion pz_aenderungen_enable() +���1 */
|
25869
25866
|
/* ###########################################################################
|
25870
25867
|
* # Die Funktion pz_aenderungen_enable() dient dazu, den Status des Flags #
|
25871
|
-
* #
|
25868
|
+
* # pz_aenderungen_aktivieren_2019_12 abzufragen bzw. zu setzen. Falls die Variable #
|
25872
25869
|
* # set 1 ist, werden die �nderungen aktiviert, falls sie 0 ist, werden #
|
25873
25870
|
* # die �nderungen deaktiviert. Bei allen anderen Werten wird das aktuelle #
|
25874
25871
|
* # Flag nicht ver�ndert, sondern nur der Status zur�ckgegeben. #
|
@@ -25884,8 +25881,8 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
25884
25881
|
|
25885
25882
|
DLL_EXPORT int pz_aenderungen_enable(int set)
|
25886
25883
|
{
|
25887
|
-
if(set==0 || set==1)
|
25888
|
-
return
|
25884
|
+
if(set==0 || set==1)pz_aenderungen_aktivieren_2019_12=set;
|
25885
|
+
return pz_aenderungen_aktivieren_2019_12;
|
25889
25886
|
}
|
25890
25887
|
|
25891
25888
|
#if DEBUG>0
|
@@ -25917,7 +25914,6 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
|
|
25917
25914
|
#endif
|
25918
25915
|
|
25919
25916
|
|
25920
|
-
#line 23758 "konto_check.lxx"
|
25921
25917
|
/* Funktionen *_id() +���1 */
|
25922
25918
|
/* ###########################################################################
|
25923
25919
|
* # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
|
@@ -26241,38 +26237,62 @@ static int scl_idx(const char *bic,int *retval)
|
|
26241
26237
|
strcpy(such_bic,bic);
|
26242
26238
|
for(i=0;i<11 && such_bic[i];i++)such_bic[i]=toupper(such_bic[i]);
|
26243
26239
|
|
26244
|
-
|
26245
|
-
|
26240
|
+
/*
|
26241
|
+
* Auszug aus dem SCL Directory Notice (Seite 13):
|
26242
|
+
*
|
26243
|
+
* The SCL Directory contains 11-character and 8-character BICs. The following convention
|
26244
|
+
* applies.
|
26245
|
+
*
|
26246
|
+
* - An 8-character BIC is a wild card and represents the reachability of any 11-character
|
26247
|
+
* BIC with the same first eight characters, as well as the reachability of the 8-character
|
26248
|
+
* BIC itself.
|
26249
|
+
*
|
26250
|
+
* - An 11-character BIC with the branch code extension "XXX" represents itself as well
|
26251
|
+
* as the reachability of the corresponding 8-character BIC. But it is not a wild card.
|
26252
|
+
*
|
26253
|
+
* - All other 11-character BICs represent the reachability of the respective individual
|
26254
|
+
* 11-character BIC only.
|
26255
|
+
*
|
26256
|
+
* https://www.bundesbank.de/resource/blob/626738/8f82d10dd08993a1941e8441cf5a9fd4/mL/scl-directory-notice-ab-nov2018-data.pdf
|
26257
|
+
*
|
26258
|
+
* Punkt 2 hat eine h�here Priorit�t als Punkt 1, denn eine 8-stellige BIC ist mit selbiger
|
26259
|
+
* um 'XXX' erweiterten BIC identisch.
|
26260
|
+
*
|
26261
|
+
*/
|
26262
|
+
|
26263
|
+
if(such_bic[8]==0){ /* Such-BIC 8-stellig angegeben; BIC zuerst mit XXX extension suchen */
|
26264
|
+
such_bic[8]=such_bic[9]=such_bic[10]='X';
|
26265
|
+
such_bic[11]=0;
|
26266
|
+
idx=bic_binsearch(0,scl_cnt-1,such_bic);
|
26267
|
+
if(idx>=0){
|
26268
|
+
if(retval)*retval=OK_SCL_EXTENSION_BIC_USED;
|
26269
|
+
return idx;
|
26270
|
+
}
|
26271
|
+
else
|
26272
|
+
such_bic[8]=0; /* wieder zur�cksetzen */
|
26273
|
+
}
|
26274
|
+
|
26275
|
+
/* nun den BIC suchen wie angegeben */
|
26276
|
+
idx=bic_binsearch(0,scl_cnt-1,such_bic);
|
26246
26277
|
if(idx>=0){
|
26247
26278
|
if(retval)*retval=OK;
|
26248
26279
|
return idx;
|
26249
26280
|
}
|
26281
|
+
else if(such_bic[8]==0){
|
26282
|
+
if(retval)*retval=SCL_BIC_NOT_FOUND;
|
26283
|
+
return -1;
|
26284
|
+
}
|
26250
26285
|
else{
|
26251
|
-
|
26252
|
-
|
26253
|
-
|
26254
|
-
|
26255
|
-
if(
|
26256
|
-
|
26257
|
-
return idx;
|
26258
|
-
}
|
26259
|
-
else{
|
26260
|
-
if(retval)*retval=SCL_BIC_NOT_FOUND;
|
26261
|
-
return -1;
|
26262
|
-
}
|
26286
|
+
/* Wildcard-BIC suchen, nur noch bei 11-stelligen BICs */
|
26287
|
+
such_bic[8]=0;
|
26288
|
+
idx=bic_binsearch(0,scl_cnt-1,such_bic);
|
26289
|
+
if(idx>=0){
|
26290
|
+
if(retval)*retval=OK_SCL_WILDCARD_BIC_USED;
|
26291
|
+
return idx;
|
26263
26292
|
}
|
26264
26293
|
else{
|
26265
|
-
|
26266
|
-
|
26267
|
-
idx=bic_binsearch(0,scl_cnt,such_bic);
|
26268
|
-
if(idx>=0){
|
26269
|
-
if(retval)*retval=OK_SCL_WILDCARD_BIC_USED;
|
26270
|
-
return idx;
|
26271
|
-
}
|
26272
|
-
else{
|
26273
|
-
if(retval)*retval=SCL_BIC_NOT_FOUND;
|
26274
|
-
return -1;
|
26275
|
-
}
|
26294
|
+
if(retval)*retval=SCL_BIC_NOT_FOUND;
|
26295
|
+
return -1;
|
26276
26296
|
}
|
26277
26297
|
}
|
26278
26298
|
}
|
@@ -26381,7 +26401,7 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
|
|
26381
26401
|
if(!(lut=fopen(lutfile,"rb+")))RETURN(FILE_WRITE_ERROR);
|
26382
26402
|
|
26383
26403
|
/* zun�chst mal testen ob es auch eine LUT2 Datei ist */
|
26384
|
-
if(!(ptr=fgets(buffer,
|
26404
|
+
if(!(ptr=fgets(buffer,512,lut)))RETURN(FILE_READ_ERROR);
|
26385
26405
|
while(*ptr && *ptr!='\n')ptr++;
|
26386
26406
|
*--ptr=0;
|
26387
26407
|
if(!strcmp(buffer,"BLZ Lookup Table/Format 1."))RETURN(LUT1_FILE_USED); /* alte LUT-Datei */
|
@@ -26426,7 +26446,6 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
|
|
26426
26446
|
RETURN(OK);
|
26427
26447
|
}
|
26428
26448
|
|
26429
|
-
#line 24267 "konto_check.lxx"
|
26430
26449
|
/* Funktion lut_scl_init() +���3 */
|
26431
26450
|
/* ###########################################################################
|
26432
26451
|
* # Die Funktion lut_scl_init() liest die SCL-Blocks aus einer LUT-Datei #
|
@@ -26960,6 +26979,7 @@ XI lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)EXC
|
|
26960
26979
|
XI lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)EXCLUDED
|
26961
26980
|
XI lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int *valid2)EXCLUDED
|
26962
26981
|
XI lut_valid(void)EXCLUDED
|
26982
|
+
XI lut_valid_date(char *lut_name,int *v11,int *v12,int *v21,int *v22)EXCLUDED
|
26963
26983
|
XI lut_multiple(char *b,int *cnt,int **p_blz,char ***p_name,char ***p_name_kurz,int **p_plz,char ***p_ort,
|
26964
26984
|
int **p_pan,char ***p_bic,int *p_pz,int **p_nr,char **p_aenderung,char **p_loeschung,int **p_nachfolge_blz,
|
26965
26985
|
int *id,int *cnt_all,int **start_idx)EXCLUDED
|