konto_check 6.02.1 → 6.05.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/ext/konto_check_raw/konto_check.c +991 -209
- data/ext/konto_check_raw/konto_check.h +37 -1
- data/ext/konto_check_raw/konto_check_raw_ruby.c +18 -1
- data/ext/konto_check_raw/retvals.h +40 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2bbda9625a71554feb4b1834746537e6373bd980152cd99d3aa05e9f359fd0c9
|
4
|
+
data.tar.gz: 2849168f603246056457c218eba379ef13da2e9b9c5bd5dd0ff32b21acd8296b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 809f73dffcc5cc227c0d82615ba00ae957b4758cdff6a7189b3bc5a41270a736cc25046acb5819f4d852a65ec00002787e74784c41b23410c2c31f948eeee10b
|
7
|
+
data.tar.gz: 2e1110c99778d67592b68092be00d88dec3f70f92a805205fba931017da3c9cf1e02915172d66885e8a76fa7456ec6f5283927b03ebf8f79560960ec726db138
|
@@ -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-2018 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,15 @@
|
|
45
45
|
* # im Internet herunterladen. #
|
46
46
|
* ##########################################################################
|
47
47
|
*/
|
48
|
-
#line 332 "
|
48
|
+
#line 332 "konto_check.lxx"
|
49
49
|
|
50
50
|
/* Definitionen und Includes */
|
51
51
|
#ifndef VERSION
|
52
|
-
#define VERSION "6.
|
52
|
+
#define VERSION "6.05 (final)"
|
53
53
|
#define VERSION_MAJOR 6
|
54
|
-
#define VERSION_MINOR
|
54
|
+
#define VERSION_MINOR 05
|
55
55
|
#endif
|
56
|
-
#define VERSION_DATE "
|
56
|
+
#define VERSION_DATE "2018-09-01"
|
57
57
|
|
58
58
|
#ifndef INCLUDE_KONTO_CHECK_DE
|
59
59
|
#define INCLUDE_KONTO_CHECK_DE 1
|
@@ -104,8 +104,8 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
|
|
104
104
|
#define KONTO_CHECK_VARS
|
105
105
|
#include "konto_check.h"
|
106
106
|
|
107
|
-
/* Flag, um die �nderungen zum
|
108
|
-
static int
|
107
|
+
/* Flag, um die �nderungen zum September 2018 zu aktivieren */
|
108
|
+
static int pz_aenderungen_aktivieren_2018_09;
|
109
109
|
|
110
110
|
/* falls die Variable verbose_debug gesetzt wird, werden bei einigen
|
111
111
|
* Funktionen mittels perror() zus�tzliche Debuginfos ausgegeben. Die
|
@@ -206,6 +206,13 @@ static int name_raw_len,name_kurz_raw_len,name_name_kurz_raw_len,ort_raw_len;
|
|
206
206
|
static char **sortc_buf;
|
207
207
|
static int *sorti_buf;
|
208
208
|
|
209
|
+
/* Variablen f�r das SCL-Verzeichnis */
|
210
|
+
static char *scl_info_block,*scl_bic_block,*scl_name_block,*scl_flags_block,
|
211
|
+
**scl_bic_array,**scl_name_array,**scl_flags_array,
|
212
|
+
scl_gueltigkeit[16],scl_gueltigkeit_iso[16];
|
213
|
+
static int scl_cnt;
|
214
|
+
long scl_ts;
|
215
|
+
|
209
216
|
/* Funktionspointer auf die aktuelle Kodierung */
|
210
217
|
DLL_EXPORT const char *(*retval_enc)(int)=NULL;
|
211
218
|
|
@@ -242,7 +249,7 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
242
249
|
#define free(ptr) efree(ptr)
|
243
250
|
#endif
|
244
251
|
|
245
|
-
#line
|
252
|
+
#line 777 "konto_check.lxx"
|
246
253
|
|
247
254
|
/* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
|
248
255
|
#define BLZ_FEHLER 100000000
|
@@ -378,7 +385,7 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
378
385
|
*/
|
379
386
|
#define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
|
380
387
|
#define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
|
381
|
-
#line
|
388
|
+
#line 918 "konto_check.lxx"
|
382
389
|
|
383
390
|
/* einige Makros zur Umwandlung zwischen unsigned int und char */
|
384
391
|
#define UCP (unsigned char*)
|
@@ -435,24 +442,24 @@ DLL_EXPORT_V int
|
|
435
442
|
lut_set_1[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_KURZ,0},
|
436
443
|
lut_set_2[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_KURZ,LUT2_BIC,0},
|
437
444
|
lut_set_3[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME,LUT2_PLZ,LUT2_ORT,0},
|
438
|
-
lut_set_4[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
439
|
-
lut_set_5[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
440
|
-
lut_set_6[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
441
|
-
lut_set_7[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
442
|
-
lut_set_8[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
443
|
-
lut_set_9[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
444
|
-
lut_set_iban[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_BLZ,LUT2_BIC,LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,LUT2_IBAN_REGEL,
|
445
|
+
lut_set_4[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,0},
|
446
|
+
lut_set_5[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,0},
|
447
|
+
lut_set_6[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,LUT2_NACHFOLGE_BLZ,0},
|
448
|
+
lut_set_7[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,0},
|
449
|
+
lut_set_8[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,LUT2_PAN,0},
|
450
|
+
lut_set_9[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC, LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,LUT2_PAN,LUT2_NR,0},
|
451
|
+
lut_set_iban[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_BLZ,LUT2_BIC,LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,LUT2_IBAN_REGEL,0}, /* notwendige Felder f�r IBAN-Bestimmung */
|
445
452
|
|
446
453
|
lut_set_o0[]={LUT2_BLZ,LUT2_PZ,0},
|
447
454
|
lut_set_o1[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_KURZ,0},
|
448
455
|
lut_set_o2[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_KURZ,LUT2_BIC,0},
|
449
456
|
lut_set_o3[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME,LUT2_PLZ,LUT2_ORT,0},
|
450
|
-
lut_set_o4[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
451
|
-
lut_set_o5[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
452
|
-
lut_set_o6[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
453
|
-
lut_set_o7[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
454
|
-
lut_set_o8[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
455
|
-
lut_set_o9[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,
|
457
|
+
lut_set_o4[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,0},
|
458
|
+
lut_set_o5[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,0},
|
459
|
+
lut_set_o6[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,LUT2_NACHFOLGE_BLZ,0},
|
460
|
+
lut_set_o7[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,0},
|
461
|
+
lut_set_o8[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC,LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,LUT2_PAN,0},
|
462
|
+
lut_set_o9[]={LUT2_BLZ,LUT2_PZ,LUT2_AENDERUNG,LUT2_NAME_NAME_KURZ,LUT2_PLZ,LUT2_ORT,LUT2_IBAN_REGEL,LUT2_BIC, LUT2_NACHFOLGE_BLZ,LUT2_LOESCHUNG,LUT2_PAN,LUT2_NR,0};
|
456
463
|
|
457
464
|
#define COMPRESSION_DEFAULT COMPRESSION_ZLIB
|
458
465
|
|
@@ -498,7 +505,7 @@ int pz=-777;
|
|
498
505
|
|
499
506
|
#define E_START(x)
|
500
507
|
#define E_END(x)
|
501
|
-
#line
|
508
|
+
#line 1043 "konto_check.lxx"
|
502
509
|
|
503
510
|
/* Variable f�r die Methoden 27, 29 und 69 */
|
504
511
|
static const int m10h_digits[4][10]={
|
@@ -579,7 +586,7 @@ static unsigned char ee[500],*eeh,*eep,eec[]={
|
|
579
586
|
0xb3,0xa2,0xf4,0x0f,0x7e,0xb5,0x0a,0xdd,0x54,0xfb,0x74,0x56,0xf5,
|
580
587
|
0x16,0x5a,0x53,0x14,0x3d,0xd8,0xbd,0x00,0x8b,0x59,0x95,0x67,0x00
|
581
588
|
};
|
582
|
-
#define EE
|
589
|
+
#define EE 29
|
583
590
|
|
584
591
|
/* Arrays f�r die Felder der LUT-Datei u.a. */
|
585
592
|
static char *lut_prolog,*lut_sys_info,*lut_user_info;
|
@@ -947,7 +954,7 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
|
|
947
954
|
* ###########################################################################
|
948
955
|
*/
|
949
956
|
|
950
|
-
#line
|
957
|
+
#line 1492 "konto_check.lxx"
|
951
958
|
DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
952
959
|
{
|
953
960
|
char buffer[SLOT_BUFFER],*ptr;
|
@@ -985,7 +992,7 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
|
985
992
|
* #############################################################################
|
986
993
|
*/
|
987
994
|
|
988
|
-
#line
|
995
|
+
#line 1530 "konto_check.lxx"
|
989
996
|
static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
990
997
|
{
|
991
998
|
char buffer[SLOT_BUFFER],*ptr,*cptr;
|
@@ -1121,7 +1128,7 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
|
1121
1128
|
* ###########################################################################
|
1122
1129
|
*/
|
1123
1130
|
|
1124
|
-
#line
|
1131
|
+
#line 1666 "konto_check.lxx"
|
1125
1132
|
DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
|
1126
1133
|
{
|
1127
1134
|
int retval;
|
@@ -1144,7 +1151,7 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
|
|
1144
1151
|
* ###########################################################################
|
1145
1152
|
*/
|
1146
1153
|
|
1147
|
-
#line
|
1154
|
+
#line 1690 "konto_check.lxx"
|
1148
1155
|
DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
1149
1156
|
{
|
1150
1157
|
int retval;
|
@@ -1166,7 +1173,7 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
|
1166
1173
|
* ###########################################################################
|
1167
1174
|
*/
|
1168
1175
|
|
1169
|
-
#line
|
1176
|
+
#line 1713 "konto_check.lxx"
|
1170
1177
|
static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
|
1171
1178
|
{
|
1172
1179
|
char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
|
@@ -1256,7 +1263,7 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
|
|
1256
1263
|
FREE(sbuffer);
|
1257
1264
|
RETURN(ERROR_MALLOC);
|
1258
1265
|
}
|
1259
|
-
#line
|
1266
|
+
#line 1818 "konto_check.lxx"
|
1260
1267
|
|
1261
1268
|
if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
|
1262
1269
|
FREE(sbuffer);
|
@@ -2849,7 +2856,7 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
|
|
2849
2856
|
* ###########################################################################
|
2850
2857
|
*/
|
2851
2858
|
|
2852
|
-
#line
|
2859
|
+
#line 3411 "konto_check.lxx"
|
2853
2860
|
DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
|
2854
2861
|
{
|
2855
2862
|
char *ptr,*ptr1,buffer[128];
|
@@ -2937,7 +2944,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2937
2944
|
|
2938
2945
|
/* Infoblocks lesen: 1. Infoblock */
|
2939
2946
|
if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
|
2940
|
-
#line
|
2947
|
+
#line 3500 "konto_check.lxx"
|
2941
2948
|
*(ptr+cnt)=0;
|
2942
2949
|
if(valid1){
|
2943
2950
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -2985,7 +2992,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2985
2992
|
|
2986
2993
|
/* Infoblocks lesen: 2. Infoblock */
|
2987
2994
|
if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
|
2988
|
-
#line
|
2995
|
+
#line 3549 "konto_check.lxx"
|
2989
2996
|
*(ptr+cnt)=0;
|
2990
2997
|
if(valid2){
|
2991
2998
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -3204,7 +3211,7 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
|
|
3204
3211
|
qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
|
3205
3212
|
for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
|
3206
3213
|
read_lut_block_int(lut1,0,typ,&len,&data);
|
3207
|
-
#line
|
3214
|
+
#line 3769 "konto_check.lxx"
|
3208
3215
|
write_lut_block_int(lut2,typ,len,data);
|
3209
3216
|
FREE(data);
|
3210
3217
|
last_slot=typ;
|
@@ -3434,7 +3441,7 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
|
|
3434
3441
|
* # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
|
3435
3442
|
* ###########################################################################
|
3436
3443
|
*/
|
3437
|
-
#line
|
3444
|
+
#line 3999 "konto_check.lxx"
|
3438
3445
|
DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
|
3439
3446
|
{
|
3440
3447
|
char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
|
@@ -3662,7 +3669,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3662
3669
|
typ1=typ;
|
3663
3670
|
if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
|
3664
3671
|
retval=read_lut_block_int(lut,0,typ,&len,&data);
|
3665
|
-
#line
|
3672
|
+
#line 4228 "konto_check.lxx"
|
3666
3673
|
|
3667
3674
|
switch(retval){
|
3668
3675
|
case LUT_CRC_ERROR:
|
@@ -3750,7 +3757,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3750
3757
|
if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
|
3751
3758
|
FREE(data);
|
3752
3759
|
i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
|
3753
|
-
#line
|
3760
|
+
#line 4320 "konto_check.lxx"
|
3754
3761
|
if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
|
3755
3762
|
typ=LUT2_2_NAME_NAME_KURZ;
|
3756
3763
|
typ1=LUT2_NAME_NAME_KURZ;
|
@@ -3773,10 +3780,20 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3773
3780
|
* LUT2_OWN_IBAN nicht geladen werden konnte, wird der Block in
|
3774
3781
|
* der Funktion lut_blocks() als nicht geladen angegeben; bei
|
3775
3782
|
* lut_init() wird dagegen OK zur�ckgegeben.
|
3783
|
+
*
|
3784
|
+
* Die SCL-Blocks sind ebenfalls nicht immer in der LUT-Datei vorhanden.
|
3785
|
+
* und sollen daher keine Warnung erzeugen.
|
3776
3786
|
*/
|
3777
|
-
|
3778
|
-
|
3779
|
-
|
3787
|
+
switch(typ){
|
3788
|
+
case LUT2_OWN_IBAN:
|
3789
|
+
case LUT2_2_OWN_IBAN:
|
3790
|
+
case LUT2_FILIALEN:
|
3791
|
+
case LUT2_2_FILIALEN:
|
3792
|
+
break;
|
3793
|
+
default:
|
3794
|
+
alles_ok=0;
|
3795
|
+
lut_blocks_missing++;
|
3796
|
+
break;
|
3780
3797
|
}
|
3781
3798
|
lut2_block_len[typ]=lut2_block_len[typ1]=0;
|
3782
3799
|
lut2_block_data[typ]=lut2_block_data[typ1]=NULL;
|
@@ -4346,7 +4363,7 @@ DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *
|
|
4346
4363
|
* ###########################################################################
|
4347
4364
|
*/
|
4348
4365
|
|
4349
|
-
#line
|
4366
|
+
#line 4926 "konto_check.lxx"
|
4350
4367
|
DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
|
4351
4368
|
{
|
4352
4369
|
if(init_status<7 || !current_lutfile){
|
@@ -4754,6 +4771,7 @@ DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval)
|
|
4754
4771
|
if(retval)*retval=ret;
|
4755
4772
|
return NULL;
|
4756
4773
|
}
|
4774
|
+
memcpy(kto2,"0000000000",10); /* f�r valgrind (kto2 ist nur ein Dummy) */
|
4757
4775
|
bic=lut_bic_int(b,zweigstelle,retval); /* BIC aus der LUT-Datei holen */
|
4758
4776
|
regel=lut_iban_regel(b,0,&ret);
|
4759
4777
|
if(retval && ret==OK){ /* Test nur notwendig, falls retval nicht NULL */
|
@@ -4761,7 +4779,6 @@ DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval)
|
|
4761
4779
|
*retval=OK_HYPO_REQUIRES_KTO; /* Sonderfall ehemalige Hypobank */
|
4762
4780
|
else{
|
4763
4781
|
strcpy(blz2,b);
|
4764
|
-
strcpy(kto2,"13"); /* nur Dummy f�r Funktionsaufruf */
|
4765
4782
|
iban_regel_cvt(blz2,kto2,&bic_neu,regel,NULL); /* R�ckgabewert egal, nur bic_neu interessiert */
|
4766
4783
|
if(bic && bic_neu && strcasecmp(bic,bic_neu))*retval=OK_INVALID_FOR_IBAN; /* BIC wurde durch eine Regel ge�ndert */
|
4767
4784
|
}
|
@@ -5101,7 +5118,7 @@ static int iban_init(void)
|
|
5101
5118
|
* ###########################################################################
|
5102
5119
|
*/
|
5103
5120
|
|
5104
|
-
#line
|
5121
|
+
#line 5681 "konto_check.lxx"
|
5105
5122
|
static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
|
5106
5123
|
{
|
5107
5124
|
char tmp_buffer[16];
|
@@ -6168,6 +6185,10 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
6168
6185
|
/* Pommersche Volksbank eG */
|
6169
6186
|
case 30:
|
6170
6187
|
|
6188
|
+
|
6189
|
+
/* ab September 2018 entf�llt die Regel 45, bleibt jedoch frei */
|
6190
|
+
if(pz_aenderungen_aktivieren_2018_09)return OK;
|
6191
|
+
|
6171
6192
|
/* diese Bank hat gleich eine lange Reihe Konten, die trotz
|
6172
6193
|
* fehlerhafter Pr�fziffer umzuwandeln sind. Der Einfachheit halber
|
6173
6194
|
* werden die Kontonummern in zwei Teile aufgeteilt (die beiden
|
@@ -8409,135 +8430,109 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8409
8430
|
}
|
8410
8431
|
RETURN_OK;
|
8411
8432
|
|
8412
|
-
/* Iban-Regel 0056.
|
8413
|
-
/* Iban-Regel 0056.01 (ab September 2017) +���3 */
|
8414
|
-
/* Iban-Regel 0056.01 (ab Dezember 2017) BLZ 51410111 ung�ltig +���3 */
|
8415
|
-
|
8416
|
-
|
8433
|
+
/* Iban-Regel 0056.03 +���3 */
|
8417
8434
|
/* SEB AG */
|
8418
8435
|
case 56:
|
8419
|
-
if(version<1){
|
8420
|
-
|
8421
|
-
/* Spendenkonten: nur mit festgelegten IBANs -> Konto und evl. BLZ/BIC anpassen */
|
8422
|
-
if(k1==0)switch(k2){
|
8423
|
-
case 36: strcpy(kto,"1010240003"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8424
|
-
case 50: strcpy(kto,"1328506100"); if(b!=48010111){strcpy(blz,"48010111"); *bicp="ESSEDE5F480"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8425
|
-
case 99: strcpy(kto,"1826063000"); if(b!=43010111){strcpy(blz,"43010111"); *bicp="ESSEDE5F430"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8426
|
-
case 110: strcpy(kto,"1015597802"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8427
|
-
case 240: strcpy(kto,"1010240000"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8428
|
-
case 333: strcpy(kto,"1011296100"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8429
|
-
case 555: strcpy(kto,"1600220800"); if(b!=10010111){strcpy(blz,"10010111"); *bicp="ESSEDE5F100"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8430
|
-
case 556: strcpy(kto,"1000556100"); if(b!=39010111){strcpy(blz,"39010111"); *bicp="ESSEDE5F390"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8431
|
-
case 606: strcpy(kto,"1967153801"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8432
|
-
case 700: strcpy(kto,"1070088000"); if(b!=26510111){strcpy(blz,"26510111"); *bicp="ESSEDE5F265"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8433
|
-
case 777: strcpy(kto,"1006015200"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8434
|
-
case 999: strcpy(kto,"1010240001"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8435
|
-
case 1234: strcpy(kto,"1369152400"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8436
|
-
case 1313: strcpy(kto,"1017500000"); if(b!=57010111){strcpy(blz,"57010111"); *bicp="ESSEDE5F570"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8437
|
-
case 1888: strcpy(kto,"1241113000"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8438
|
-
case 1953: strcpy(kto,"1026500901"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8439
|
-
case 1998: strcpy(kto,"1547620500"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8440
|
-
case 2007: strcpy(kto,"1026500907"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8441
|
-
case 4004: strcpy(kto,"1635100100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8442
|
-
case 4444: strcpy(kto,"1304610900"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8443
|
-
case 5000: strcpy(kto,"1395676000"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8444
|
-
case 5510: strcpy(kto,"1611754300"); if(b!=29010111){strcpy(blz,"29010111"); *bicp="ESSEDE5F290"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8445
|
-
case 6060: strcpy(kto,"1000400200"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8446
|
-
case 6800: strcpy(kto,"1296401301"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8447
|
-
case 55555: strcpy(kto,"1027758200"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8448
|
-
case 60000: strcpy(kto,"1005007001"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8449
|
-
case 66666: strcpy(kto,"1299807801"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8450
|
-
case 102030: strcpy(kto,"1837501600"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8451
|
-
case 121212: strcpy(kto,"1249461502"); if(b!=70010111){strcpy(blz,"70010111"); *bicp="ESSEDE5F700"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8452
|
-
case 130500: strcpy(kto,"1413482100"); if(b!=30010111){strcpy(blz,"30010111"); *bicp="ESSEDE5F300"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8453
|
-
case 202020: strcpy(kto,"1213431002"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8454
|
-
case 414141: strcpy(kto,"1010555101"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8455
|
-
case 666666: strcpy(kto,"1798758900"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8456
|
-
case 5000000: strcpy(kto,"1403124100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
|
8457
|
-
}
|
8458
|
-
else if(k1==5 && k2==500500){
|
8459
|
-
strcpy(kto,"1045720000");
|
8460
|
-
if(b!=60010111){
|
8461
|
-
strcpy(blz,"60010111");
|
8462
|
-
*bicp="ESSEDE5F600";
|
8463
|
-
return OK_BLZ_KTO_REPLACED;
|
8464
|
-
}
|
8465
|
-
else
|
8466
|
-
return OK_KTO_REPLACED;
|
8467
|
-
}
|
8468
|
-
}
|
8469
8436
|
|
8470
8437
|
/* f�r die folgenden BLZs sind nur zehnstelllige Kontonummern erlaubt: */
|
8471
|
-
if(
|
8472
|
-
|
8473
|
-
|
8474
|
-
|
8475
|
-
|
8476
|
-
|
8477
|
-
|
8478
|
-
|
8479
|
-
|
8480
|
-
|
8481
|
-
|
8482
|
-
|
8483
|
-
|
8484
|
-
|
8485
|
-
|
8486
|
-
|
8487
|
-
|
8488
|
-
|
8489
|
-
|
8490
|
-
|
8491
|
-
|
8492
|
-
|
8493
|
-
|
8494
|
-
|
8495
|
-
|
8496
|
-
|
8497
|
-
|
8498
|
-
|
8499
|
-
|
8500
|
-
|
8501
|
-
|
8502
|
-
|
8503
|
-
|
8504
|
-
|
8505
|
-
|
8506
|
-
|
8507
|
-
|
8508
|
-
|
8509
|
-
|
8510
|
-
|
8511
|
-
|
8512
|
-
|
8513
|
-
|
8514
|
-
|
8515
|
-
|
8516
|
-
|
8517
|
-
|
8518
|
-
|
8519
|
-
|
8520
|
-
|
8521
|
-
|
8522
|
-
|
8523
|
-
|
8524
|
-
|
8525
|
-
|
8526
|
-
|
8527
|
-
|
8528
|
-
|
8529
|
-
|
8530
|
-
|
8531
|
-
|
8532
|
-
|
8533
|
-
|
8534
|
-
|
8535
|
-
|
8536
|
-
|
8537
|
-
|
8538
|
-
|
8539
|
-
|
8540
|
-
|
8438
|
+
if(pz_aenderungen_aktivieren_2018_09)
|
8439
|
+
/* die Liste wurde zum September 2018 kr�ftig gek�rzt */
|
8440
|
+
switch(b){
|
8441
|
+
case 10010111:
|
8442
|
+
case 13010111:
|
8443
|
+
case 20010111:
|
8444
|
+
case 21010111:
|
8445
|
+
case 23010111:
|
8446
|
+
case 25010111:
|
8447
|
+
case 27010111:
|
8448
|
+
case 30010111:
|
8449
|
+
case 36010111:
|
8450
|
+
case 37010111:
|
8451
|
+
case 38010111:
|
8452
|
+
case 39010111:
|
8453
|
+
case 44010111:
|
8454
|
+
case 50010111:
|
8455
|
+
case 50510111:
|
8456
|
+
case 51010111:
|
8457
|
+
case 51310111:
|
8458
|
+
case 55010111:
|
8459
|
+
case 60010111:
|
8460
|
+
case 70010111:
|
8461
|
+
case 76010111:
|
8462
|
+
case 86010111:
|
8463
|
+
if(k1<10)return INVALID_KTO;
|
8464
|
+
default:
|
8465
|
+
break;
|
8466
|
+
}
|
8467
|
+
else
|
8468
|
+
switch(b){
|
8469
|
+
case 10010111:
|
8470
|
+
case 13010111:
|
8471
|
+
case 16010111:
|
8472
|
+
case 20010111:
|
8473
|
+
case 21010111:
|
8474
|
+
case 21210111:
|
8475
|
+
case 23010111:
|
8476
|
+
case 25010111:
|
8477
|
+
case 25410111:
|
8478
|
+
case 25910111:
|
8479
|
+
case 26010111:
|
8480
|
+
case 26510111:
|
8481
|
+
case 27010111:
|
8482
|
+
case 28010111:
|
8483
|
+
case 29010111:
|
8484
|
+
case 29210111:
|
8485
|
+
case 30010111:
|
8486
|
+
case 31010111:
|
8487
|
+
case 33010111:
|
8488
|
+
case 35010111:
|
8489
|
+
case 35211012:
|
8490
|
+
case 36010111:
|
8491
|
+
case 36210111:
|
8492
|
+
case 37010111:
|
8493
|
+
case 38010111:
|
8494
|
+
case 39010111:
|
8495
|
+
case 40010111:
|
8496
|
+
case 41010111:
|
8497
|
+
case 42010111:
|
8498
|
+
case 42610112:
|
8499
|
+
case 43010111:
|
8500
|
+
case 44010111:
|
8501
|
+
case 46010111:
|
8502
|
+
case 48010111:
|
8503
|
+
case 50010111:
|
8504
|
+
case 50510111:
|
8505
|
+
case 51010111:
|
8506
|
+
case 51310111:
|
8507
|
+
case 52010111:
|
8508
|
+
case 54210111:
|
8509
|
+
case 55010111:
|
8510
|
+
case 57010111:
|
8511
|
+
case 58510111:
|
8512
|
+
case 59010111:
|
8513
|
+
case 60010111:
|
8514
|
+
case 63010111:
|
8515
|
+
case 65310111:
|
8516
|
+
case 66010111:
|
8517
|
+
case 66610111:
|
8518
|
+
case 67010111:
|
8519
|
+
case 67210111:
|
8520
|
+
case 68010111:
|
8521
|
+
case 68310111:
|
8522
|
+
case 69010111:
|
8523
|
+
case 70010111:
|
8524
|
+
case 72010111:
|
8525
|
+
case 75010111:
|
8526
|
+
case 76010111:
|
8527
|
+
case 79010111:
|
8528
|
+
case 79510111:
|
8529
|
+
case 81010111:
|
8530
|
+
case 82010111:
|
8531
|
+
case 86010111:
|
8532
|
+
if(k1<10)return INVALID_KTO;
|
8533
|
+
default:
|
8534
|
+
break;
|
8535
|
+
}
|
8541
8536
|
RETURN_OK;
|
8542
8537
|
|
8543
8538
|
/* Iban-Regel 0057.00 +���3 */
|
@@ -8557,7 +8552,7 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8557
8552
|
}
|
8558
8553
|
}
|
8559
8554
|
|
8560
|
-
#line
|
8555
|
+
#line 9115 "konto_check.lxx"
|
8561
8556
|
/* Funktion lut_multiple() +���2 */
|
8562
8557
|
/* ###########################################################################
|
8563
8558
|
* # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
|
@@ -8825,7 +8820,7 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8825
8820
|
FREE(sort_pz_f);
|
8826
8821
|
FREE(sort_plz);
|
8827
8822
|
FREE(sort_iban_regel);
|
8828
|
-
#line
|
8823
|
+
#line 9377 "konto_check.lxx"
|
8829
8824
|
if(name_raw && name_data!=name_raw)
|
8830
8825
|
FREE(name_raw);
|
8831
8826
|
else
|
@@ -8885,6 +8880,14 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8885
8880
|
free(handle_ptr);
|
8886
8881
|
}
|
8887
8882
|
|
8883
|
+
FREE(scl_info_block);
|
8884
|
+
FREE(scl_bic_array);
|
8885
|
+
FREE(scl_bic_block);
|
8886
|
+
FREE(scl_name_array);
|
8887
|
+
FREE(scl_name_block);
|
8888
|
+
FREE(scl_flags_array);
|
8889
|
+
FREE(scl_flags_block);
|
8890
|
+
|
8888
8891
|
if(init_status&8){
|
8889
8892
|
|
8890
8893
|
/* bei init_status&8 ist wohl eine Initialisierung dazwischengekommen (sollte
|
@@ -8894,7 +8897,7 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8894
8897
|
lut_cleanup(); /* neuer Versuch, aufzur�umen */
|
8895
8898
|
RETURN(INIT_FATAL_ERROR);
|
8896
8899
|
}
|
8897
|
-
#line
|
8900
|
+
#line 9459 "konto_check.lxx"
|
8898
8901
|
init_status&=1;
|
8899
8902
|
init_in_progress=0;
|
8900
8903
|
return OK;
|
@@ -9067,8 +9070,8 @@ static void init_atoi_table(void)
|
|
9067
9070
|
int i,ziffer;
|
9068
9071
|
unsigned long l;
|
9069
9072
|
|
9070
|
-
/* �nderungen zum
|
9071
|
-
if(time(NULL)>
|
9073
|
+
/* �nderungen zum 02.09.2018 aktivieren */
|
9074
|
+
if(time(NULL)>1535839200 ||0)pz_aenderungen_aktivieren_2018_09=1;
|
9072
9075
|
|
9073
9076
|
/* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
|
9074
9077
|
* angesehen(!), da die Stellenzuordnung sonst nicht mehr stimmt. Ausnahme:
|
@@ -9194,6 +9197,14 @@ static void init_atoi_table(void)
|
|
9194
9197
|
lut2_feld_namen[LUT2_2_IBAN_REGEL_SORT]="LUT2_2_IBAN_REGEL_SORT";
|
9195
9198
|
lut2_feld_namen[LUT2_BIC_H_SORT]="LUT2_BIC_H_SORT";
|
9196
9199
|
lut2_feld_namen[LUT2_2_BIC_H_SORT]="LUT2_2_BIC_H_SORT";
|
9200
|
+
lut2_feld_namen[LUT2_SCL_INFO]="LUT2_SCL_INFO";
|
9201
|
+
lut2_feld_namen[LUT2_2_SCL_INFO]="LUT2_2_SCL_INFO";
|
9202
|
+
lut2_feld_namen[LUT2_SCL_BIC]="LUT2_SCL_BIC";
|
9203
|
+
lut2_feld_namen[LUT2_2_SCL_BIC]="LUT2_2_SCL_BIC";
|
9204
|
+
lut2_feld_namen[LUT2_SCL_NAME]="LUT2_SCL_NAME";
|
9205
|
+
lut2_feld_namen[LUT2_2_SCL_NAME]="LUT2_2_SCL_NAME";
|
9206
|
+
lut2_feld_namen[LUT2_SCL_FLAGS]="LUT2_SCL_FLAGS";
|
9207
|
+
lut2_feld_namen[LUT2_2_SCL_FLAGS]="LUT2_2_SCL_FLAGS";
|
9197
9208
|
|
9198
9209
|
lut_block_idx[1]=0;
|
9199
9210
|
lut_block_idx[2]=0;
|
@@ -9222,6 +9233,10 @@ static void init_atoi_table(void)
|
|
9222
9233
|
lut_block_idx[25]=0;
|
9223
9234
|
lut_block_idx[26]=0;
|
9224
9235
|
lut_block_idx[27]=0;
|
9236
|
+
lut_block_idx[28]=-1;
|
9237
|
+
lut_block_idx[29]=-1;
|
9238
|
+
lut_block_idx[30]=-1;
|
9239
|
+
lut_block_idx[31]=-1;
|
9225
9240
|
|
9226
9241
|
lut_block_name1[1]="BLZ";
|
9227
9242
|
lut_block_name1[2]="FILIALEN";
|
@@ -9250,6 +9265,10 @@ static void init_atoi_table(void)
|
|
9250
9265
|
lut_block_name1[25]="IBAN_REGEL";
|
9251
9266
|
lut_block_name1[26]="IBAN_REGEL_SORT";
|
9252
9267
|
lut_block_name1[27]="BIC_H_SORT";
|
9268
|
+
lut_block_name1[28]="SCL_INFO";
|
9269
|
+
lut_block_name1[29]="SCL_BIC";
|
9270
|
+
lut_block_name1[30]="SCL_NAME";
|
9271
|
+
lut_block_name1[31]="SCL_FLAGS";
|
9253
9272
|
lut_block_name1[101]="BLZ (2)";
|
9254
9273
|
lut_block_name1[102]="FILIALEN (2)";
|
9255
9274
|
lut_block_name1[103]="NAME (2)";
|
@@ -9277,6 +9296,10 @@ static void init_atoi_table(void)
|
|
9277
9296
|
lut_block_name1[125]="IBAN_REGEL (2)";
|
9278
9297
|
lut_block_name1[126]="IBAN_REGEL_SORT (2)";
|
9279
9298
|
lut_block_name1[127]="BIC_H_SORT (2)";
|
9299
|
+
lut_block_name1[128]="SCL_INFO (2)";
|
9300
|
+
lut_block_name1[129]="SCL_BIC (2)";
|
9301
|
+
lut_block_name1[130]="SCL_NAME (2)";
|
9302
|
+
lut_block_name1[131]="SCL_FLAGS (2)";
|
9280
9303
|
|
9281
9304
|
lut_block_name2[1]="1. BLZ";
|
9282
9305
|
lut_block_name2[2]="1. Anzahl Fil.";
|
@@ -9305,6 +9328,10 @@ static void init_atoi_table(void)
|
|
9305
9328
|
lut_block_name2[25]="1. IBAN Regel";
|
9306
9329
|
lut_block_name2[26]="1. IBAN Regel idx";
|
9307
9330
|
lut_block_name2[27]="1. BIC Hauptst.idx";
|
9331
|
+
lut_block_name2[28]="1. SCL Infoblock";
|
9332
|
+
lut_block_name2[29]="1. SCL BIC";
|
9333
|
+
lut_block_name2[30]="1. SCL Banknamen";
|
9334
|
+
lut_block_name2[31]="1. SCL Flags";
|
9308
9335
|
lut_block_name2[101]="2. BLZ";
|
9309
9336
|
lut_block_name2[102]="2. Anzahl Fil.";
|
9310
9337
|
lut_block_name2[103]="2. Name";
|
@@ -9332,8 +9359,12 @@ static void init_atoi_table(void)
|
|
9332
9359
|
lut_block_name2[125]="2. IBAN Regel";
|
9333
9360
|
lut_block_name2[126]="2. IBAN Regel idx";
|
9334
9361
|
lut_block_name2[127]="2. BIC Hauptst.idx";
|
9335
|
-
|
9336
|
-
|
9362
|
+
lut_block_name2[128]="2. SCL Infoblock";
|
9363
|
+
lut_block_name2[129]="2. SCL BIC";
|
9364
|
+
lut_block_name2[130]="2. SCL Banknamen";
|
9365
|
+
lut_block_name2[131]="2. SCL Flags";
|
9366
|
+
lut_blocklen_max=521;
|
9367
|
+
#line 9699 "konto_check.lxx"
|
9337
9368
|
init_status|=1;
|
9338
9369
|
}
|
9339
9370
|
|
@@ -9393,7 +9424,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9393
9424
|
|
9394
9425
|
switch(pz_methode){
|
9395
9426
|
|
9396
|
-
#line
|
9427
|
+
#line 9762 "konto_check.lxx"
|
9397
9428
|
/* Berechnungsmethoden 00 bis 09 +���3
|
9398
9429
|
Berechnung nach der Methode 00 +���4 */
|
9399
9430
|
/*
|
@@ -11728,7 +11759,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11728
11759
|
* ######################################################################
|
11729
11760
|
*/
|
11730
11761
|
|
11731
|
-
#line
|
11762
|
+
#line 11773 "konto_check.lxx"
|
11732
11763
|
case 51:
|
11733
11764
|
if(*(kto+2)=='9'){ /* Ausnahme */
|
11734
11765
|
|
@@ -11990,8 +12021,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11990
12021
|
else
|
11991
12022
|
return FALSE;
|
11992
12023
|
|
11993
|
-
#line
|
11994
|
-
#line
|
12024
|
+
#line 11987 "konto_check.lxx"
|
12025
|
+
#line 11989 "konto_check.lxx"
|
11995
12026
|
/* Berechnung nach der Methode 53 +���4 */
|
11996
12027
|
/*
|
11997
12028
|
* ######################################################################
|
@@ -12290,7 +12321,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12290
12321
|
* # bewerten. #
|
12291
12322
|
* ######################################################################
|
12292
12323
|
*/
|
12293
|
-
#line
|
12324
|
+
#line 12258 "konto_check.lxx"
|
12294
12325
|
case 57:
|
12295
12326
|
#if DEBUG>0
|
12296
12327
|
if(retvals){
|
@@ -12936,7 +12967,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12936
12967
|
* # Pr�fzifferberechnung) #
|
12937
12968
|
* ######################################################################
|
12938
12969
|
*/
|
12939
|
-
#line
|
12970
|
+
#line 12838 "konto_check.lxx"
|
12940
12971
|
case 66:
|
12941
12972
|
#if DEBUG>0
|
12942
12973
|
case 2066:
|
@@ -20347,7 +20378,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
20347
20378
|
return NOT_IMPLEMENTED;
|
20348
20379
|
}
|
20349
20380
|
}
|
20350
|
-
#line
|
20381
|
+
#line 19052 "konto_check.lxx"
|
20351
20382
|
|
20352
20383
|
/*
|
20353
20384
|
* ######################################################################
|
@@ -20445,7 +20476,7 @@ DLL_EXPORT int kto_check_blz(char *blz,char *kto)
|
|
20445
20476
|
#if DEBUG>0 /* es werden einige Funktionen benutzt, die nur in der Debug-Variante enthalten sind */
|
20446
20477
|
DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,const char **bic,int *regel,RETVAL *retvals)
|
20447
20478
|
{
|
20448
|
-
#line
|
20479
|
+
#line 19150 "konto_check.lxx"
|
20449
20480
|
char *blz_o,buffer[32],kto_o[16],*blz_n,*kto_n,*ptr,*dptr;
|
20450
20481
|
const char *bicp;
|
20451
20482
|
int ret,ret_regel,r,i;
|
@@ -20494,7 +20525,7 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
|
|
20494
20525
|
}
|
20495
20526
|
else /* BLZ und Kto gleich */
|
20496
20527
|
return ret;
|
20497
|
-
#line
|
20528
|
+
#line 19199 "konto_check.lxx"
|
20498
20529
|
}
|
20499
20530
|
|
20500
20531
|
#else /* !DEBUG */
|
@@ -20645,7 +20676,7 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
|
|
20645
20676
|
* # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
|
20646
20677
|
* ###########################################################################
|
20647
20678
|
*/
|
20648
|
-
#line
|
20679
|
+
#line 19350 "konto_check.lxx"
|
20649
20680
|
DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
|
20650
20681
|
{
|
20651
20682
|
int untermethode,pz_methode;
|
@@ -20881,7 +20912,7 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
|
|
20881
20912
|
}
|
20882
20913
|
else
|
20883
20914
|
**user_info_p=0;
|
20884
|
-
#line
|
20915
|
+
#line 19571 "konto_check.lxx"
|
20885
20916
|
FREE(prolog);
|
20886
20917
|
return OK;
|
20887
20918
|
}
|
@@ -21016,20 +21047,20 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
|
|
21016
21047
|
case 3:
|
21017
21048
|
return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
|
21018
21049
|
case 4: /* Datum der Pr�fziffermethode */
|
21019
|
-
if(
|
21020
|
-
return "
|
21050
|
+
if(pz_aenderungen_aktivieren_2018_09)
|
21051
|
+
return "02.09.2018";
|
21021
21052
|
else
|
21022
|
-
return "04.
|
21053
|
+
return "04.06.2018 (Aenderungen vom 02.09.2018 enthalten aber noch nicht aktiviert)";
|
21023
21054
|
case 5:
|
21024
|
-
return "
|
21055
|
+
return "02.09.2018";
|
21025
21056
|
case 6:
|
21026
|
-
return "
|
21057
|
+
return "1. September 2018"; /* Klartext-Datum der Bibliotheksversion */
|
21027
21058
|
case 7:
|
21028
21059
|
return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
|
21029
21060
|
case 8:
|
21030
21061
|
return "6"; /* Hauptversionszahl */
|
21031
21062
|
case 9:
|
21032
|
-
return "
|
21063
|
+
return "05"; /* Unterversionszahl */
|
21033
21064
|
}
|
21034
21065
|
}
|
21035
21066
|
|
@@ -21175,7 +21206,7 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
|
|
21175
21206
|
default:
|
21176
21207
|
break;
|
21177
21208
|
}
|
21178
|
-
#line
|
21209
|
+
#line 19804 "konto_check.lxx"
|
21179
21210
|
fputc('\n',out);
|
21180
21211
|
while(--i)fputc('=',out);
|
21181
21212
|
fputc('\n',out);
|
@@ -21500,7 +21531,7 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
|
|
21500
21531
|
return iban2bic(iban,retval,b,k);
|
21501
21532
|
}
|
21502
21533
|
|
21503
|
-
#line
|
21534
|
+
#line 20129 "konto_check.lxx"
|
21504
21535
|
/* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
|
21505
21536
|
/* ###########################################################################
|
21506
21537
|
* # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
|
@@ -22333,7 +22364,7 @@ DLL_EXPORT int ipi_check(char *zweck)
|
|
22333
22364
|
* # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
|
22334
22365
|
* ###########################################################################
|
22335
22366
|
*/
|
22336
|
-
#line
|
22367
|
+
#line 20962 "konto_check.lxx"
|
22337
22368
|
|
22338
22369
|
/* Funktion volltext_zeichen() +���2 */
|
22339
22370
|
/* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
|
@@ -23180,7 +23211,7 @@ static int qcmp_bic_h(const void *ap,const void *bp)
|
|
23180
23211
|
return a-b;
|
23181
23212
|
}
|
23182
23213
|
|
23183
|
-
#line
|
23214
|
+
#line 21809 "konto_check.lxx"
|
23184
23215
|
|
23185
23216
|
/* Funktion qcmp_bic() +���3 */
|
23186
23217
|
static int qcmp_bic(const void *ap,const void *bp)
|
@@ -23285,7 +23316,7 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
|
|
23285
23316
|
else
|
23286
23317
|
return a-b;
|
23287
23318
|
}
|
23288
|
-
#line
|
23319
|
+
#line 21824 "konto_check.lxx"
|
23289
23320
|
|
23290
23321
|
/* Funktion init_blzf() +���2
|
23291
23322
|
* Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
|
@@ -23353,7 +23384,7 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
|
|
23353
23384
|
}
|
23354
23385
|
|
23355
23386
|
/* Funktion suche_int1() +���2 */
|
23356
|
-
#line
|
23387
|
+
#line 21892 "konto_check.lxx"
|
23357
23388
|
static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23358
23389
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
|
23359
23390
|
{
|
@@ -23404,7 +23435,7 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
|
|
23404
23435
|
}
|
23405
23436
|
|
23406
23437
|
/* Funktion suche_int2() +���2 */
|
23407
|
-
#line
|
23438
|
+
#line 21943 "konto_check.lxx"
|
23408
23439
|
static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23409
23440
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
|
23410
23441
|
{
|
@@ -24019,7 +24050,7 @@ static int cmp_suche_sort(const void *ap,const void *bp)
|
|
24019
24050
|
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)
|
24020
24051
|
{
|
24021
24052
|
int i,j,last_idx,*idx_a,*cnt_o;
|
24022
|
-
#line
|
24053
|
+
#line 22559 "konto_check.lxx"
|
24023
24054
|
|
24024
24055
|
if(idx_op)*idx_op=NULL;
|
24025
24056
|
if(cnt_op)*cnt_op=NULL;
|
@@ -24101,7 +24132,7 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
|
|
24101
24132
|
return OK;
|
24102
24133
|
}
|
24103
24134
|
|
24104
|
-
#line
|
24135
|
+
#line 22642 "konto_check.lxx"
|
24105
24136
|
/* Funktion lut_suche_volltext() +���2 */
|
24106
24137
|
DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
|
24107
24138
|
int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
|
@@ -24231,7 +24262,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24231
24262
|
return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
|
24232
24263
|
}
|
24233
24264
|
|
24234
|
-
#line
|
24265
|
+
#line 22792 "konto_check.lxx"
|
24235
24266
|
/* Funktion lut_suche_bic() +���2 */
|
24236
24267
|
DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
24237
24268
|
char ***base_name,int **blz_base)
|
@@ -24322,7 +24353,7 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
|
|
24322
24353
|
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);
|
24323
24354
|
}
|
24324
24355
|
|
24325
|
-
#line
|
24356
|
+
#line 22825 "konto_check.lxx"
|
24326
24357
|
|
24327
24358
|
/* Funktion lut_suche_bic_h() +���2 */
|
24328
24359
|
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
@@ -24708,7 +24739,7 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
|
|
24708
24739
|
{
|
24709
24740
|
return iban_fkt_s(iban,filiale,retval,lut_ort);
|
24710
24741
|
}
|
24711
|
-
#line
|
24742
|
+
#line 22914 "konto_check.lxx"
|
24712
24743
|
|
24713
24744
|
static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
|
24714
24745
|
{
|
@@ -25997,7 +26028,7 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
|
|
25997
26028
|
default: return "???";
|
25998
26029
|
}
|
25999
26030
|
}
|
26000
|
-
#line
|
26031
|
+
#line 23869 "konto_check.lxx"
|
26001
26032
|
|
26002
26033
|
/* Funktion lut_keine_iban_berechnung() +���1 */
|
26003
26034
|
/*
|
@@ -26112,7 +26143,7 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
26112
26143
|
/* Funktion pz_aenderungen_enable() +���1 */
|
26113
26144
|
/* ###########################################################################
|
26114
26145
|
* # Die Funktion pz_aenderungen_enable() dient dazu, den Status des Flags #
|
26115
|
-
* #
|
26146
|
+
* # pz_aenderungen_aktivieren_2018_09 abzufragen bzw. zu setzen. Falls die Variable #
|
26116
26147
|
* # set 1 ist, werden die �nderungen aktiviert, falls sie 0 ist, werden #
|
26117
26148
|
* # die �nderungen deaktiviert. Bei allen anderen Werten wird das aktuelle #
|
26118
26149
|
* # Flag nicht ver�ndert, sondern nur der Status zur�ckgegeben. #
|
@@ -26128,8 +26159,8 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
26128
26159
|
|
26129
26160
|
DLL_EXPORT int pz_aenderungen_enable(int set)
|
26130
26161
|
{
|
26131
|
-
if(set==0 || set==1)
|
26132
|
-
return
|
26162
|
+
if(set==0 || set==1)pz_aenderungen_aktivieren_2018_09=set;
|
26163
|
+
return pz_aenderungen_aktivieren_2018_09;
|
26133
26164
|
}
|
26134
26165
|
|
26135
26166
|
#if DEBUG>0
|
@@ -26161,7 +26192,7 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
|
|
26161
26192
|
#endif
|
26162
26193
|
|
26163
26194
|
|
26164
|
-
#line
|
26195
|
+
#line 24033 "konto_check.lxx"
|
26165
26196
|
/* Funktionen *_id() +���1 */
|
26166
26197
|
/* ###########################################################################
|
26167
26198
|
* # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
|
@@ -26418,6 +26449,741 @@ DLL_EXPORT int kc_id_free(int handle)
|
|
26418
26449
|
return INVALID_HANDLE;
|
26419
26450
|
}
|
26420
26451
|
|
26452
|
+
/* Funktionen f�r den Zugriff auf das SCL-Verzeichnis +���1 */
|
26453
|
+
/* Hilfsfunktion f�r die SCL-Routinen +���2 */
|
26454
|
+
/* Funktion cmp_bic() +���3 */
|
26455
|
+
/* ###########################################################################
|
26456
|
+
* # cmp_bic() ist die Vergleichsfunktion f�r bic_binsearch() und #
|
26457
|
+
* # lut_write_scl_blocks() (zum Sortieren der BICs). #
|
26458
|
+
* # #
|
26459
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26460
|
+
* ###########################################################################
|
26461
|
+
*/
|
26462
|
+
static int cmp_bic(const void *ap,const void *bp)
|
26463
|
+
{
|
26464
|
+
int a,b,r;
|
26465
|
+
|
26466
|
+
a=*((int *)ap);
|
26467
|
+
b=*((int *)bp);
|
26468
|
+
if((r=strcmp(scl_bic_array[a],scl_bic_array[b])))
|
26469
|
+
return r;
|
26470
|
+
else
|
26471
|
+
return a-b;
|
26472
|
+
}
|
26473
|
+
|
26474
|
+
/* Funktion bic_binsearch() +���3 */
|
26475
|
+
/* ###########################################################################
|
26476
|
+
* # Die Funktion bic_binsearch() implementiert eine bin�re Suche im #
|
26477
|
+
* # BIC-Array (rekursiv) #
|
26478
|
+
* # #
|
26479
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26480
|
+
* ###########################################################################
|
26481
|
+
*/
|
26482
|
+
static int bic_binsearch(int links,int rechts,char *bic)
|
26483
|
+
{
|
26484
|
+
int cmp,mitte;
|
26485
|
+
|
26486
|
+
if(links>rechts)return -1; /* nicht gefunden */
|
26487
|
+
mitte=(rechts+links)/2;
|
26488
|
+
if(!(cmp=strcmp(scl_bic_array[mitte],bic)))return mitte; /* Element gefunden */
|
26489
|
+
if(cmp>0)
|
26490
|
+
return bic_binsearch(links,mitte-1,bic);
|
26491
|
+
else
|
26492
|
+
return bic_binsearch(mitte+1,rechts,bic);
|
26493
|
+
}
|
26494
|
+
|
26495
|
+
/* Funktion scl_idx() +���3 */
|
26496
|
+
/* ###########################################################################
|
26497
|
+
* # Die Funktion scl_idx sucht den Index zu einem BIC innerhalb der SCL- #
|
26498
|
+
* # Arrays. Der BIC wird zun�chst so gesucht wie er angegeben ist. #
|
26499
|
+
* # Falls diese Suche erfolglos ist, wird getestet, ob im BIC-Verzeichnis #
|
26500
|
+
* # ein BIC mit �bereinstimmung in den ersten 8 Stellen und XXX in den drei #
|
26501
|
+
* # letzten Stellen existiert (Extension BIC); falls dieser auch nicht #
|
26502
|
+
* # existiert, wird als Letztes ein 8-stelliger BIC gesucht (Wildcard-BIC). #
|
26503
|
+
* # #
|
26504
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26505
|
+
* ###########################################################################
|
26506
|
+
*/
|
26507
|
+
static int scl_idx(const char *bic,int *retval)
|
26508
|
+
{
|
26509
|
+
char such_bic[12];
|
26510
|
+
int i,idx;
|
26511
|
+
|
26512
|
+
if(!scl_cnt || !scl_bic_array){
|
26513
|
+
if(retval)*retval=NO_SCL_BLOCKS_LOADED;
|
26514
|
+
return -1;
|
26515
|
+
}
|
26516
|
+
strcpy(such_bic,bic);
|
26517
|
+
for(i=0;i<11 && such_bic[i];i++)such_bic[i]=toupper(such_bic[i]);
|
26518
|
+
|
26519
|
+
/* zun�chst den BIC suchen wie angegeben */
|
26520
|
+
idx=bic_binsearch(0,scl_cnt,such_bic);
|
26521
|
+
if(idx>=0){
|
26522
|
+
if(retval)*retval=OK;
|
26523
|
+
return idx;
|
26524
|
+
}
|
26525
|
+
else{
|
26526
|
+
if(such_bic[8]==0){ /* Such-BIC 8-stellig angegeben; BIC mit XXX extension testen */
|
26527
|
+
such_bic[8]=such_bic[9]=such_bic[10]='X';
|
26528
|
+
such_bic[11]=0;
|
26529
|
+
idx=bic_binsearch(0,scl_cnt,such_bic);
|
26530
|
+
if(idx>=0){
|
26531
|
+
if(retval)*retval=OK_SCL_EXTENSION_BIC_USED;
|
26532
|
+
return idx;
|
26533
|
+
}
|
26534
|
+
else{
|
26535
|
+
if(retval)*retval=SCL_BIC_NOT_FOUND;
|
26536
|
+
return -1;
|
26537
|
+
}
|
26538
|
+
}
|
26539
|
+
else{
|
26540
|
+
/* Wildcard-BIC suchen */
|
26541
|
+
such_bic[8]=0;
|
26542
|
+
idx=bic_binsearch(0,scl_cnt,such_bic);
|
26543
|
+
if(idx>=0){
|
26544
|
+
if(retval)*retval=OK_SCL_WILDCARD_BIC_USED;
|
26545
|
+
return idx;
|
26546
|
+
}
|
26547
|
+
else{
|
26548
|
+
if(retval)*retval=SCL_BIC_NOT_FOUND;
|
26549
|
+
return -1;
|
26550
|
+
}
|
26551
|
+
}
|
26552
|
+
}
|
26553
|
+
}
|
26554
|
+
|
26555
|
+
/* Externe Schnittstelle f�r die SCL-Routinen +���2 */
|
26556
|
+
/* Funktion lut_write_scl_blocks() +���3 */
|
26557
|
+
/* ###########################################################################
|
26558
|
+
* # Die Funktion lut_write_scl_blocks() liest ein SCL-Verzeichnis ein und #
|
26559
|
+
* # schreibt die Daten in die angegebene LUT-Datei. #
|
26560
|
+
* # #
|
26561
|
+
* # Beschreibung und weitere Infos: #
|
26562
|
+
* # https://www.bundesbank.de/Redaktion/DE/Standardartikel/Aufgaben/Unbarer_Zahlungsverkehr/emz_scl_directory_fuer_den_sepa_clearer.html #
|
26563
|
+
* # #
|
26564
|
+
* # direkter Download-Link: #
|
26565
|
+
* # https://www.bundesbank.de/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/SEPA/verzeichnis_der_erreichbaren_zahlungsdienstleister.csv?__blob=publicationFile
|
26566
|
+
* # #
|
26567
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26568
|
+
* ###########################################################################
|
26569
|
+
*/
|
26570
|
+
DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
|
26571
|
+
{
|
26572
|
+
char c,*ptr,buffer[512],*scl_name_block_s,*scl_bic_block_s,*scl_flags_block_s,*ptr1,*ptr2,*ptr3;
|
26573
|
+
char scl_gueltigkeit[16],scl_gueltigkeit_iso[16];
|
26574
|
+
int cnt,i,rv,j,*iptr,jahr,monat,tag;
|
26575
|
+
FILE *in,*lut;
|
26576
|
+
struct stat stat_buffer;
|
26577
|
+
struct tm z;
|
26578
|
+
time_t ts;
|
26579
|
+
|
26580
|
+
if(!(in=fopen(inputfile,"r")))RETURN(FILE_READ_ERROR);
|
26581
|
+
fgets(buffer,512,in);
|
26582
|
+
if(strncmp(buffer,"Gueltig ab / valid from ",24))return SCL_INPUT_FORMAT_ERROR;
|
26583
|
+
for(ptr=buffer;!isdigit(*ptr);ptr++);
|
26584
|
+
strncpy(scl_gueltigkeit,ptr,16);
|
26585
|
+
scl_gueltigkeit[10]=0;
|
26586
|
+
jahr=atoi(scl_gueltigkeit+6);
|
26587
|
+
monat=(scl_gueltigkeit[3]-'0')*10+scl_gueltigkeit[4]-'0';
|
26588
|
+
tag=(scl_gueltigkeit[0]-'0')*10+scl_gueltigkeit[1]-'0';
|
26589
|
+
z.tm_sec=z.tm_min=0;
|
26590
|
+
z.tm_hour=6; /* Die SCL-Datei wird um 6 Uhr morgens ver�ffentlicht */
|
26591
|
+
z.tm_mday=tag;
|
26592
|
+
z.tm_mon=monat;
|
26593
|
+
z.tm_year=jahr-1900;
|
26594
|
+
ts=mktime(&z);
|
26595
|
+
snprintf(scl_gueltigkeit_iso,16,"%4d-%02d-%02d",jahr,monat,tag);
|
26596
|
+
fgets(buffer,512,in);
|
26597
|
+
if(strncmp(buffer,"BIC;Name;Service SCT;Service SDD;Service COR1;Service B2B;Service SCC",69))RETURN(SCL_INPUT_FORMAT_ERROR);
|
26598
|
+
|
26599
|
+
stat(inputfile,&stat_buffer);
|
26600
|
+
cnt=stat_buffer.st_size/163+100; /* etwas gro�z�gig die Anzahl rechnen */
|
26601
|
+
|
26602
|
+
scl_bic_array=calloc(sizeof(char*),cnt);
|
26603
|
+
scl_name_array=calloc(sizeof(char*),cnt);
|
26604
|
+
scl_flags_array=calloc(sizeof(char*),cnt);
|
26605
|
+
|
26606
|
+
scl_bic_block=ptr1=calloc(12,cnt);
|
26607
|
+
scl_name_block=ptr2=calloc(150,cnt);
|
26608
|
+
scl_flags_block=ptr3=calloc(6,cnt);
|
26609
|
+
|
26610
|
+
/* SCL-Datei einlesen */
|
26611
|
+
for(cnt=0;fgets(buffer,512,in);){
|
26612
|
+
scl_bic_array[cnt]=ptr1;
|
26613
|
+
scl_name_array[cnt]=ptr2;
|
26614
|
+
scl_flags_array[cnt]=ptr3;
|
26615
|
+
cnt++;
|
26616
|
+
for(ptr=buffer;*ptr!=';' && !isspace(*ptr);*ptr1++=*ptr++);
|
26617
|
+
c=*ptr;
|
26618
|
+
*ptr1++=0; /* bei Leerzeichen am Ende dieses l�schen */
|
26619
|
+
*ptr++=0;
|
26620
|
+
|
26621
|
+
if(c==' ')while(*ptr++!=';' && *ptr!='\n'); /* Fehler in der Datei abfangen (fehlendes Trennzeichen) */
|
26622
|
+
while((*ptr2++=*ptr++)!=';'); /* ptr steht zu Beginn der Schleife auf dem Namen */
|
26623
|
+
ptr2-=2;
|
26624
|
+
while(isspace(*ptr2))ptr2--;
|
26625
|
+
*++ptr2=0;
|
26626
|
+
ptr2++;
|
26627
|
+
|
26628
|
+
/* ptr steht nun auf den Flags */
|
26629
|
+
*ptr3++=*ptr;
|
26630
|
+
*ptr3++=*(ptr+2);
|
26631
|
+
*ptr3++=*(ptr+4);
|
26632
|
+
*ptr3++=*(ptr+6);
|
26633
|
+
*ptr3++=*(ptr+8);
|
26634
|
+
*ptr3++=0;
|
26635
|
+
}
|
26636
|
+
fclose(in);
|
26637
|
+
|
26638
|
+
/* Sortierarray aufbauen */
|
26639
|
+
iptr=calloc(sizeof(int),cnt);
|
26640
|
+
for(i=0;i<cnt;i++)iptr[i]=i;
|
26641
|
+
|
26642
|
+
/* vor dem Abspeichern der Blocks nach BICs sortieren */
|
26643
|
+
qsort(iptr,cnt,sizeof(int),cmp_bic);
|
26644
|
+
|
26645
|
+
ptr1=scl_bic_block_s=calloc(1,ptr1-scl_bic_block+16);
|
26646
|
+
ptr2=scl_name_block_s=calloc(1,ptr2-scl_name_block+16);
|
26647
|
+
ptr3=scl_flags_block_s=calloc(1,ptr3-scl_flags_block+16);
|
26648
|
+
for(i=0;i<cnt;i++){
|
26649
|
+
j=iptr[i];
|
26650
|
+
for(ptr=scl_bic_array[j];(*ptr1++=*ptr++););
|
26651
|
+
for(ptr=scl_name_array[j];(*ptr2++=*ptr++););
|
26652
|
+
for(ptr=scl_flags_array[j];(*ptr3++=*ptr++););
|
26653
|
+
}
|
26654
|
+
free(iptr);
|
26655
|
+
|
26656
|
+
if(!(lut=fopen(lutfile,"rb+")))RETURN(FILE_WRITE_ERROR);
|
26657
|
+
|
26658
|
+
/* zun�chst mal testen ob es auch eine LUT2 Datei ist */
|
26659
|
+
if(!(ptr=fgets(buffer,SLOT_BUFFER,lut)))RETURN(FILE_READ_ERROR);
|
26660
|
+
while(*ptr && *ptr!='\n')ptr++;
|
26661
|
+
*--ptr=0;
|
26662
|
+
if(!strcmp(buffer,"BLZ Lookup Table/Format 1."))RETURN(LUT1_FILE_USED); /* alte LUT-Datei */
|
26663
|
+
if(strcmp(buffer,"BLZ Lookup Table/Format 2."))RETURN(INVALID_LUT_FILE); /* keine LUT-Datei */
|
26664
|
+
|
26665
|
+
/* nun die Blocks schreiben */
|
26666
|
+
rewind(lut);
|
26667
|
+
sprintf(buffer,"cnt: %d, TS: %ld, Gueltigkeit: %s %s",cnt,(long)ts,scl_gueltigkeit,scl_gueltigkeit_iso);
|
26668
|
+
if((rv=write_lut_block_int(lut,LUT2_SCL_INFO,strlen(buffer)+1,buffer))!=OK){
|
26669
|
+
fclose(lut);
|
26670
|
+
FREE(scl_bic_block_s);
|
26671
|
+
FREE(scl_name_block_s);
|
26672
|
+
FREE(scl_flags_block_s);
|
26673
|
+
RETURN(rv);
|
26674
|
+
}
|
26675
|
+
if((rv=write_lut_block_int(lut,LUT2_SCL_BIC,(UINT4)(ptr1-scl_bic_block_s+1),scl_bic_block_s))!=OK){
|
26676
|
+
fclose(lut);
|
26677
|
+
FREE(scl_bic_block_s);
|
26678
|
+
FREE(scl_name_block_s);
|
26679
|
+
FREE(scl_flags_block_s);
|
26680
|
+
RETURN(rv);
|
26681
|
+
}
|
26682
|
+
if((rv=write_lut_block_int(lut,LUT2_SCL_NAME,(UINT4)(ptr2-scl_name_block_s+1),scl_name_block_s))!=OK){
|
26683
|
+
fclose(lut);
|
26684
|
+
FREE(scl_bic_block_s);
|
26685
|
+
FREE(scl_name_block_s);
|
26686
|
+
FREE(scl_flags_block_s);
|
26687
|
+
RETURN(rv);
|
26688
|
+
}
|
26689
|
+
if((rv=write_lut_block_int(lut,LUT2_SCL_FLAGS,(UINT4)(ptr3-scl_flags_block_s+1),scl_flags_block_s))!=OK){
|
26690
|
+
fclose(lut);
|
26691
|
+
FREE(scl_bic_block_s);
|
26692
|
+
FREE(scl_name_block_s);
|
26693
|
+
FREE(scl_flags_block_s);
|
26694
|
+
RETURN(rv);
|
26695
|
+
}
|
26696
|
+
|
26697
|
+
fclose(lut);
|
26698
|
+
FREE(scl_bic_block_s);
|
26699
|
+
FREE(scl_name_block_s);
|
26700
|
+
FREE(scl_flags_block_s);
|
26701
|
+
RETURN(OK);
|
26702
|
+
}
|
26703
|
+
|
26704
|
+
#line 24542 "konto_check.lxx"
|
26705
|
+
/* Funktion lut_scl_init() +���3 */
|
26706
|
+
/* ###########################################################################
|
26707
|
+
* # Die Funktion lut_scl_init() liest die SCL-Blocks aus einer LUT-Datei #
|
26708
|
+
* # und initialisiert die zugeh�rigen internen Datenstrukturen. #
|
26709
|
+
* # #
|
26710
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26711
|
+
* ###########################################################################
|
26712
|
+
*/
|
26713
|
+
DLL_EXPORT int lut_scl_init(char *lut_name)
|
26714
|
+
{
|
26715
|
+
char *ptr,*end;
|
26716
|
+
int i,cnt,rv;
|
26717
|
+
static UINT4 block_size_0,block_size_1,block_size_2,block_size_3;
|
26718
|
+
FILE *lut;
|
26719
|
+
|
26720
|
+
if(scl_bic_array && scl_name_array && scl_flags_array)return OK; /* schon initialisiert */
|
26721
|
+
|
26722
|
+
if(!(lut=fopen(lut_name,"rb")))RETURN(FILE_READ_ERROR);
|
26723
|
+
if((rv=read_lut_block_int(lut,0,LUT2_SCL_INFO,&block_size_0,&scl_info_block))<0){
|
26724
|
+
fclose(lut);
|
26725
|
+
if(rv==LUT2_BLOCK_NOT_IN_FILE)
|
26726
|
+
RETURN(NO_SCL_BLOCKS);
|
26727
|
+
else
|
26728
|
+
return rv;
|
26729
|
+
}
|
26730
|
+
if((rv=read_lut_block_int(lut,0,LUT2_SCL_BIC,&block_size_1,&scl_bic_block))<0){
|
26731
|
+
fclose(lut);
|
26732
|
+
if(rv==LUT2_BLOCK_NOT_IN_FILE)
|
26733
|
+
RETURN(NO_SCL_BLOCKS);
|
26734
|
+
else
|
26735
|
+
return rv;
|
26736
|
+
}
|
26737
|
+
if((rv=read_lut_block_int(lut,0,LUT2_SCL_NAME,&block_size_2,&scl_name_block))<0){
|
26738
|
+
fclose(lut);
|
26739
|
+
if(rv==LUT2_BLOCK_NOT_IN_FILE)
|
26740
|
+
RETURN(NO_SCL_BLOCKS);
|
26741
|
+
else
|
26742
|
+
return rv;
|
26743
|
+
}
|
26744
|
+
if((rv=read_lut_block_int(lut,0,LUT2_SCL_FLAGS,&block_size_3,&scl_flags_block))<0){
|
26745
|
+
fclose(lut);
|
26746
|
+
if(rv==LUT2_BLOCK_NOT_IN_FILE)
|
26747
|
+
RETURN(NO_SCL_BLOCKS);
|
26748
|
+
else
|
26749
|
+
return rv;
|
26750
|
+
}
|
26751
|
+
fclose(lut);
|
26752
|
+
if((i=sscanf(scl_info_block,"cnt: %d, TS: %ld, Gueltigkeit: %15s %15s",
|
26753
|
+
&cnt,&scl_ts,(char *)&scl_gueltigkeit,(char *)&scl_gueltigkeit_iso))!=4)RETURN(INVALID_SCL_INFO_BLOCK);
|
26754
|
+
|
26755
|
+
scl_bic_array=calloc(sizeof(char*),cnt);
|
26756
|
+
scl_name_array=calloc(sizeof(char*),cnt);
|
26757
|
+
scl_flags_array=calloc(sizeof(char*),cnt);
|
26758
|
+
|
26759
|
+
for(i=0,ptr=scl_bic_block,end=scl_bic_block+block_size_1;i<cnt && ptr<end;i++){
|
26760
|
+
scl_bic_array[i]=ptr;
|
26761
|
+
while(*ptr++ && ptr<end);
|
26762
|
+
}
|
26763
|
+
|
26764
|
+
for(i=0,ptr=scl_name_block,end=scl_name_block+block_size_2;i<cnt && ptr<end;){
|
26765
|
+
scl_name_array[i++]=ptr;
|
26766
|
+
while(*ptr++ && ptr<end);
|
26767
|
+
}
|
26768
|
+
|
26769
|
+
for(i=0,ptr=scl_flags_block,end=scl_flags_block+block_size_3;i<cnt && ptr<end;){
|
26770
|
+
scl_flags_array[i++]=ptr;
|
26771
|
+
while(*ptr++ && ptr<end);
|
26772
|
+
}
|
26773
|
+
scl_cnt=cnt;
|
26774
|
+
RETURN(OK);
|
26775
|
+
}
|
26776
|
+
|
26777
|
+
/* Funktion lut_scl_info() +���3 */
|
26778
|
+
/* ###########################################################################
|
26779
|
+
* # Die Funktion lut_scl_info() gibt Infos �ber die Anzahl der Eintr�ge im #
|
26780
|
+
* # SCL-Verzeichnis sowie das Datum, ab wann die Datei g�ltig ist. #
|
26781
|
+
* # #
|
26782
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26783
|
+
* ###########################################################################
|
26784
|
+
*/
|
26785
|
+
DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso)
|
26786
|
+
{
|
26787
|
+
int s_cnt,i,rv;
|
26788
|
+
UINT4 block_size;
|
26789
|
+
FILE *lut;
|
26790
|
+
|
26791
|
+
/* falls noch nicht geschehen, den SCL-Infoblock holen */
|
26792
|
+
if(!scl_cnt){
|
26793
|
+
if(!(lut=fopen(lutfile,"rb")))RETURN(FILE_READ_ERROR);
|
26794
|
+
if((rv=read_lut_block_int(lut,0,LUT2_SCL_INFO,&block_size,&scl_info_block))<0){
|
26795
|
+
fclose(lut);
|
26796
|
+
if(rv==LUT2_BLOCK_NOT_IN_FILE)
|
26797
|
+
RETURN(NO_SCL_BLOCKS);
|
26798
|
+
else
|
26799
|
+
return rv;
|
26800
|
+
}
|
26801
|
+
if((i=sscanf(scl_info_block,"cnt: %d, TS: %ld, Gueltigkeit: %15s %15s",
|
26802
|
+
&s_cnt,&scl_ts,(char *)&scl_gueltigkeit,(char *)&scl_gueltigkeit_iso))!=4)RETURN(INVALID_SCL_INFO_BLOCK);
|
26803
|
+
}
|
26804
|
+
else
|
26805
|
+
s_cnt=scl_cnt;
|
26806
|
+
|
26807
|
+
if(s_cnt)*cnt=s_cnt;
|
26808
|
+
if(gueltigkeit)*gueltigkeit=scl_gueltigkeit;
|
26809
|
+
if(gueltigkeit_iso)*gueltigkeit_iso=scl_gueltigkeit_iso;
|
26810
|
+
return OK;
|
26811
|
+
}
|
26812
|
+
|
26813
|
+
/* Funktion lut_scl_multi() +���3 */
|
26814
|
+
/* ###########################################################################
|
26815
|
+
* # Die Funktion lut_scl_multi() gibt alle Eintr�ge des SCL-Verzeichnisses #
|
26816
|
+
* # zu einem gegebenen BIC zur�ck. #
|
26817
|
+
* # #
|
26818
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26819
|
+
* ###########################################################################
|
26820
|
+
*/
|
26821
|
+
DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_bic,const char **scl_name)
|
26822
|
+
{
|
26823
|
+
int i,rv;
|
26824
|
+
|
26825
|
+
i=scl_idx(bic,&rv);
|
26826
|
+
if(rv<0)return rv;
|
26827
|
+
if(scl_flags)*scl_flags=scl_flags_array[i];
|
26828
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
26829
|
+
if(scl_name)*scl_name=scl_name_array[i];
|
26830
|
+
return rv;
|
26831
|
+
}
|
26832
|
+
|
26833
|
+
/* Funktion lut_scl_sct() +���3 */
|
26834
|
+
/* ###########################################################################
|
26835
|
+
* # Die Funktion bestimmt das Flag SCT (SEPA Credit Transfer) des SCL- #
|
26836
|
+
* # Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck. #
|
26837
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
26838
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
26839
|
+
* # #
|
26840
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26841
|
+
* ###########################################################################
|
26842
|
+
*/
|
26843
|
+
DLL_EXPORT int lut_scl_sct(char *bic,int *retval)
|
26844
|
+
{
|
26845
|
+
char *flags;
|
26846
|
+
int i,rv;
|
26847
|
+
|
26848
|
+
i=scl_idx(bic,&rv);
|
26849
|
+
if(rv<0){
|
26850
|
+
if(retval)*retval=rv;
|
26851
|
+
return -1;
|
26852
|
+
}
|
26853
|
+
else
|
26854
|
+
if(retval)*retval=OK;
|
26855
|
+
flags=scl_flags_array[i];
|
26856
|
+
return flags[0]-'0';
|
26857
|
+
}
|
26858
|
+
|
26859
|
+
/* Funktion lut_scl_sdd() +���3 */
|
26860
|
+
/* ###########################################################################
|
26861
|
+
* # Die Funktion bestimmt das Flag SDD (SEPA CORE Direct Debit (SEPA-Basis- #
|
26862
|
+
* # lastschrift) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck.#
|
26863
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
26864
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
26865
|
+
* # #
|
26866
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26867
|
+
* ###########################################################################
|
26868
|
+
*/
|
26869
|
+
DLL_EXPORT int lut_scl_sdd(char *bic,int *retval)
|
26870
|
+
{
|
26871
|
+
char *flags;
|
26872
|
+
int i,rv;
|
26873
|
+
|
26874
|
+
i=scl_idx(bic,&rv);
|
26875
|
+
if(rv<0){
|
26876
|
+
if(retval)*retval=rv;
|
26877
|
+
return -1;
|
26878
|
+
}
|
26879
|
+
else
|
26880
|
+
if(retval)*retval=OK;
|
26881
|
+
flags=scl_flags_array[i];
|
26882
|
+
return flags[1]-'0';
|
26883
|
+
}
|
26884
|
+
|
26885
|
+
/* Funktion lut_scl_cor1() +���3 */
|
26886
|
+
/* ###########################################################################
|
26887
|
+
* # Die Funktion bestimmt das Flag COR1 (SEPA COR1 Direct Debit (SEPA-Basis-#
|
26888
|
+
* # lastschrift mit verk�rzter Vorlagefrist) des SCL-Verzeichnisses und #
|
26889
|
+
* # gibt das Flag (0 bzw. 1) zur�ck. #
|
26890
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
26891
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
26892
|
+
* # #
|
26893
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26894
|
+
* ###########################################################################
|
26895
|
+
*/
|
26896
|
+
DLL_EXPORT int lut_scl_cor1(char *bic,int *retval)
|
26897
|
+
{
|
26898
|
+
char *flags;
|
26899
|
+
int i,rv;
|
26900
|
+
|
26901
|
+
i=scl_idx(bic,&rv);
|
26902
|
+
if(rv<0){
|
26903
|
+
if(retval)*retval=rv;
|
26904
|
+
return -1;
|
26905
|
+
}
|
26906
|
+
else
|
26907
|
+
if(retval)*retval=OK;
|
26908
|
+
flags=scl_flags_array[i];
|
26909
|
+
return flags[2]-'0';
|
26910
|
+
}
|
26911
|
+
|
26912
|
+
/* Funktion lut_scl_b2b() +���3 */
|
26913
|
+
/* ###########################################################################
|
26914
|
+
* # Die Funktion bestimmt das Flag BCB (SEPA B2B Direct Debit (Sepa-Firmen- #
|
26915
|
+
* # lastschrift) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck.#
|
26916
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
26917
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
26918
|
+
* # #
|
26919
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26920
|
+
* ###########################################################################
|
26921
|
+
*/
|
26922
|
+
DLL_EXPORT int lut_scl_b2b(char *bic,int *retval)
|
26923
|
+
{
|
26924
|
+
char *flags;
|
26925
|
+
int i,rv;
|
26926
|
+
|
26927
|
+
i=scl_idx(bic,&rv);
|
26928
|
+
if(rv<0){
|
26929
|
+
if(retval)*retval=rv;
|
26930
|
+
return -1;
|
26931
|
+
}
|
26932
|
+
else
|
26933
|
+
if(retval)*retval=OK;
|
26934
|
+
flags=scl_flags_array[i];
|
26935
|
+
return flags[3]-'0';
|
26936
|
+
}
|
26937
|
+
|
26938
|
+
/* Funktion lut_scl_scc() +���3 */
|
26939
|
+
/* ###########################################################################
|
26940
|
+
* # Die Funktion bestimmt das Flag SCC (SEPA Card Clearing, SCC Karten- #
|
26941
|
+
* # einz�ge) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck. #
|
26942
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
26943
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
26944
|
+
* # #
|
26945
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26946
|
+
* ###########################################################################
|
26947
|
+
*/
|
26948
|
+
DLL_EXPORT int lut_scl_scc(char *bic,int *retval)
|
26949
|
+
{
|
26950
|
+
char *flags;
|
26951
|
+
int i,rv;
|
26952
|
+
|
26953
|
+
i=scl_idx(bic,&rv);
|
26954
|
+
if(rv<0){
|
26955
|
+
if(retval)*retval=rv;
|
26956
|
+
return -1;
|
26957
|
+
}
|
26958
|
+
else
|
26959
|
+
if(retval)*retval=OK;
|
26960
|
+
flags=scl_flags_array[i];
|
26961
|
+
return flags[4]-'0';
|
26962
|
+
}
|
26963
|
+
|
26964
|
+
/* Funktion lut_scl_multi_blz() +���3 */
|
26965
|
+
/* ###########################################################################
|
26966
|
+
* # Die Funktion lut_scl_multi_blz() gibt alle Eintr�ge des SCL- #
|
26967
|
+
* # Verzeichnisses zu einer gegebenen BLZ zur�ck. Da die BLZ zun�chst in #
|
26968
|
+
* # einen BIC umgewandelt werden mu�, m�ssen auch die Blocks BLZ und BIC #
|
26969
|
+
* # der LUT-Datei initialisiert sein, sonst wird ein Fehler zur�ckgegeben. #
|
26970
|
+
* # #
|
26971
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26972
|
+
* ###########################################################################
|
26973
|
+
*/
|
26974
|
+
DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **used_bic,const char **scl_name)
|
26975
|
+
{
|
26976
|
+
const char *bic;
|
26977
|
+
int i,rv;
|
26978
|
+
|
26979
|
+
bic=lut_bic(blz,0,&rv);
|
26980
|
+
if(rv<0)return rv;
|
26981
|
+
i=scl_idx(bic,&rv);
|
26982
|
+
if(rv<0)return rv;
|
26983
|
+
if(scl_flags)*scl_flags=scl_flags_array[i];
|
26984
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
26985
|
+
if(scl_name)*scl_name=scl_name_array[i];
|
26986
|
+
return rv;
|
26987
|
+
}
|
26988
|
+
|
26989
|
+
/* Funktion lut_scl_sct_blz() +���3 */
|
26990
|
+
/* ###########################################################################
|
26991
|
+
* # Die Funktion bestimmt das Flag SCT (SEPA Credit Transfer) des SCL- #
|
26992
|
+
* # Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck. #
|
26993
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
26994
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
26995
|
+
* # #
|
26996
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26997
|
+
* ###########################################################################
|
26998
|
+
*/
|
26999
|
+
DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic)
|
27000
|
+
{
|
27001
|
+
char *flags;
|
27002
|
+
const char *bic;
|
27003
|
+
int i,rv;
|
27004
|
+
|
27005
|
+
bic=lut_bic(blz,0,&rv);
|
27006
|
+
if(rv<0){
|
27007
|
+
if(retval)*retval=rv;
|
27008
|
+
return -1;
|
27009
|
+
}
|
27010
|
+
else
|
27011
|
+
if(retval)*retval=OK;
|
27012
|
+
i=scl_idx(bic,&rv);
|
27013
|
+
if(rv<0){
|
27014
|
+
if(retval)*retval=rv;
|
27015
|
+
return -1;
|
27016
|
+
}
|
27017
|
+
else
|
27018
|
+
if(retval)*retval=OK;
|
27019
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
27020
|
+
flags=scl_flags_array[i];
|
27021
|
+
return flags[0]-'0';
|
27022
|
+
}
|
27023
|
+
|
27024
|
+
/* Funktion lut_scl_sdd_blz() +���3 */
|
27025
|
+
/* ###########################################################################
|
27026
|
+
* # Die Funktion bestimmt das Flag SDD (SEPA CORE Direct Debit (SEPA-Basis- #
|
27027
|
+
* # lastschrift) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck.#
|
27028
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
27029
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
27030
|
+
* # #
|
27031
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
27032
|
+
* ###########################################################################
|
27033
|
+
*/
|
27034
|
+
DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic)
|
27035
|
+
{
|
27036
|
+
char *flags;
|
27037
|
+
const char *bic;
|
27038
|
+
int i,rv;
|
27039
|
+
|
27040
|
+
bic=lut_bic(blz,0,&rv);
|
27041
|
+
if(rv<0){
|
27042
|
+
if(retval)*retval=rv;
|
27043
|
+
return -1;
|
27044
|
+
}
|
27045
|
+
else
|
27046
|
+
if(retval)*retval=OK;
|
27047
|
+
i=scl_idx(bic,&rv);
|
27048
|
+
if(rv<0){
|
27049
|
+
if(retval)*retval=rv;
|
27050
|
+
return -1;
|
27051
|
+
}
|
27052
|
+
else
|
27053
|
+
if(retval)*retval=OK;
|
27054
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
27055
|
+
flags=scl_flags_array[i];
|
27056
|
+
return flags[1]-'0';
|
27057
|
+
}
|
27058
|
+
|
27059
|
+
/* Funktion lut_scl_cor1_blz() +���3 */
|
27060
|
+
/* ###########################################################################
|
27061
|
+
* # Die Funktion bestimmt das Flag COR1 (SEPA COR1 Direct Debit (SEPA-Basis-#
|
27062
|
+
* # lastschrift mit verk�rzter Vorlagefrist) des SCL-Verzeichnisses und #
|
27063
|
+
* # gibt das Flag (0 bzw. 1) zur�ck. #
|
27064
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
27065
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
27066
|
+
* # #
|
27067
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
27068
|
+
* ###########################################################################
|
27069
|
+
*/
|
27070
|
+
DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic)
|
27071
|
+
{
|
27072
|
+
char *flags;
|
27073
|
+
const char *bic;
|
27074
|
+
int i,rv;
|
27075
|
+
|
27076
|
+
bic=lut_bic(blz,0,&rv);
|
27077
|
+
if(rv<0){
|
27078
|
+
if(retval)*retval=rv;
|
27079
|
+
return -1;
|
27080
|
+
}
|
27081
|
+
else
|
27082
|
+
if(retval)*retval=OK;
|
27083
|
+
i=scl_idx(bic,&rv);
|
27084
|
+
if(rv<0){
|
27085
|
+
if(retval)*retval=rv;
|
27086
|
+
return -1;
|
27087
|
+
}
|
27088
|
+
else
|
27089
|
+
if(retval)*retval=OK;
|
27090
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
27091
|
+
flags=scl_flags_array[i];
|
27092
|
+
return flags[2]-'0';
|
27093
|
+
}
|
27094
|
+
|
27095
|
+
/* Funktion lut_scl_b2b_blz() +���3 */
|
27096
|
+
/* ###########################################################################
|
27097
|
+
* # Die Funktion bestimmt das Flag BCB (SEPA B2B Direct Debit (Sepa-Firmen- #
|
27098
|
+
* # lastschrift) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck.#
|
27099
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
27100
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
27101
|
+
* # #
|
27102
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
27103
|
+
* ###########################################################################
|
27104
|
+
*/
|
27105
|
+
DLL_EXPORT int lut_scl_b2b_blz(char *blz,int *retval,const char **used_bic)
|
27106
|
+
{
|
27107
|
+
char *flags;
|
27108
|
+
const char *bic;
|
27109
|
+
int i,rv;
|
27110
|
+
|
27111
|
+
bic=lut_bic(blz,0,&rv);
|
27112
|
+
if(rv<0){
|
27113
|
+
if(retval)*retval=rv;
|
27114
|
+
return -1;
|
27115
|
+
}
|
27116
|
+
else
|
27117
|
+
if(retval)*retval=OK;
|
27118
|
+
i=scl_idx(bic,&rv);
|
27119
|
+
if(rv<0){
|
27120
|
+
if(retval)*retval=rv;
|
27121
|
+
return -1;
|
27122
|
+
}
|
27123
|
+
else
|
27124
|
+
if(retval)*retval=OK;
|
27125
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
27126
|
+
flags=scl_flags_array[i];
|
27127
|
+
return flags[3]-'0';
|
27128
|
+
}
|
27129
|
+
|
27130
|
+
/* Funktion lut_scl_scc_blz() +���3 */
|
27131
|
+
/* ###########################################################################
|
27132
|
+
* # Die Funktion bestimmt das Flag SCC (SEPA Card Clearing, SCC Karten- #
|
27133
|
+
* # einz�ge) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zur�ck. #
|
27134
|
+
* # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
|
27135
|
+
* # entsprechende Fehlercode (<0) gesetzt. #
|
27136
|
+
* # #
|
27137
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
27138
|
+
* ###########################################################################
|
27139
|
+
*/
|
27140
|
+
DLL_EXPORT int lut_scl_scc_blz(char *blz,int *retval,const char **used_bic)
|
27141
|
+
{
|
27142
|
+
char *flags;
|
27143
|
+
const char *bic;
|
27144
|
+
int i,rv;
|
27145
|
+
|
27146
|
+
bic=lut_bic(blz,0,&rv);
|
27147
|
+
if(rv<0){
|
27148
|
+
if(retval)*retval=rv;
|
27149
|
+
return -1;
|
27150
|
+
}
|
27151
|
+
else
|
27152
|
+
if(retval)*retval=OK;
|
27153
|
+
i=scl_idx(bic,&rv);
|
27154
|
+
if(rv<0){
|
27155
|
+
if(retval)*retval=rv;
|
27156
|
+
return -1;
|
27157
|
+
}
|
27158
|
+
else
|
27159
|
+
if(retval)*retval=OK;
|
27160
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
27161
|
+
flags=scl_flags_array[i];
|
27162
|
+
return flags[4]-'0';
|
27163
|
+
}
|
27164
|
+
|
27165
|
+
/* Funktion lut_scl_multi_blz_i() +���3 */
|
27166
|
+
/* ###########################################################################
|
27167
|
+
* # Diese Funktion entspricht der Funktion lut_scl_multi_blz(), nur wird #
|
27168
|
+
* # die BLZ als Integer-Wert statt als String �bergeben. #
|
27169
|
+
* # #
|
27170
|
+
* # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
|
27171
|
+
* ###########################################################################
|
27172
|
+
*/
|
27173
|
+
DLL_EXPORT int lut_scl_multi_blz_i(int blz,const char **scl_flags,const char **used_bic,const char **scl_name)
|
27174
|
+
{
|
27175
|
+
const char *bic;
|
27176
|
+
int i,rv;
|
27177
|
+
|
27178
|
+
bic=lut_bic_i(blz,0,&rv);
|
27179
|
+
if(rv<0)return rv;
|
27180
|
+
i=scl_idx(bic,&rv);
|
27181
|
+
if(rv<0)return rv;
|
27182
|
+
if(scl_flags)*scl_flags=scl_flags_array[i];
|
27183
|
+
if(used_bic)*used_bic=scl_bic_array[i];
|
27184
|
+
if(scl_name)*scl_name=scl_name_array[i];
|
27185
|
+
return rv;
|
27186
|
+
}
|
26421
27187
|
|
26422
27188
|
#else /* !INCLUDE_KONTO_CHECK_DE */
|
26423
27189
|
/* Leerdefinitionen f�r !INCLUDE_KONTO_CHECK_DE +���1 */
|
@@ -26603,4 +27369,20 @@ XI lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int set)EXCLUDED
|
|
26603
27369
|
XI pz_aenderungen_enable(int set)EXCLUDED
|
26604
27370
|
XC kc_id2ptr(int handle,int *retval)EXCLUDED_S
|
26605
27371
|
XI kc_id_free(int handle)EXCLUDED
|
27372
|
+
XI lut_scl_init(char *lut_name)EXCLUDED
|
27373
|
+
XI lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso)EXCLUDED_V
|
27374
|
+
XI lut_write_scl_blocks(char *inputfile,char *lutfile)EXCLUDED
|
27375
|
+
XI lut_scl_multi(char *bic,const char **used_bic,const char **scl_name,const char **scl_flags)EXCLUDED
|
27376
|
+
XI lut_scl_multi_blz(char *blz,const char **used_bic,const char **scl_name,const char **scl_flags)EXCLUDED
|
27377
|
+
XI lut_scl_multi_blz_i(int blz,const char **used_bic,const char **scl_name,const char **scl_flags)EXCLUDED
|
27378
|
+
XI lut_scl_sct(char *bic)EXCLUDED
|
27379
|
+
XI lut_scl_sdd(char *bic)EXCLUDED
|
27380
|
+
XI lut_scl_cor1(char *bic)EXCLUDED
|
27381
|
+
XI lut_scl_b2b(char *bic)EXCLUDED
|
27382
|
+
XI lut_scl_scc(char *bic)EXCLUDED
|
27383
|
+
XI lut_scl_sct_blz(char *blz)EXCLUDED
|
27384
|
+
XI lut_scl_sdd_blz(char *blz)EXCLUDED
|
27385
|
+
XI lut_scl_cor1_blz(char *blz)EXCLUDED
|
27386
|
+
XI lut_scl_b2b_blz(char *blz)EXCLUDED
|
27387
|
+
XI lut_scl_scc_blz(char *blz)EXCLUDED
|
26606
27388
|
#endif
|