konto_check 6.02.1 → 6.05.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 +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
|