konto_check 6.08.0 → 6.15.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,7 @@
13
13
  * # wurden aus der aktuellen BLZ-Datei der Deutschen Bundesbank #
14
14
  * # �bernommen. #
15
15
  * # #
16
- * # Copyright (C) 2002-2019 Michael Plugge <m.plugge@hs-mannheim.de> #
16
+ * # Copyright (C) 2002-2023 Michael Plugge <konto_check@yahoo.com> #
17
17
  * # #
18
18
  * # Dieses Programm ist freie Software; Sie d�rfen es unter den #
19
19
  * # Bedingungen der GNU Lesser General Public License, wie von der Free #
@@ -45,15 +45,14 @@
45
45
  * # im Internet herunterladen. #
46
46
  * ##########################################################################
47
47
  */
48
- #line 332 "konto_check.lxx"
49
48
 
50
49
  /* Definitionen und Includes */
51
50
  #ifndef VERSION
52
- #define VERSION "6.08 (final)"
51
+ #define VERSION "6.15 (final)"
53
52
  #define VERSION_MAJOR 6
54
- #define VERSION_MINOR 08
53
+ #define VERSION_MINOR 15
55
54
  #endif
56
- #define VERSION_DATE "2019-03-19"
55
+ #define VERSION_DATE "2023-04-13"
57
56
 
58
57
  #ifndef INCLUDE_KONTO_CHECK_DE
59
58
  #define INCLUDE_KONTO_CHECK_DE 1
@@ -93,6 +92,7 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
93
92
  #include <fcntl.h>
94
93
  #include <sys/types.h>
95
94
  #include <sys/stat.h>
95
+ #include <unistd.h>
96
96
  #if COMPRESS>0
97
97
  #include <zlib.h>
98
98
  #endif
@@ -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 Dezember 2018 zu aktivieren */
108
- static int pz_aenderungen_aktivieren_2018_12;
107
+ /* Flag, um die �nderungen zum Dezember 2019 zu aktivieren */
108
+ static int pz_aenderungen_aktivieren_2019_12;
109
109
 
110
110
  /* falls die Variable verbose_debug gesetzt wird, werden bei einigen
111
111
  * Funktionen mittels perror() zus�tzliche Debuginfos ausgegeben. Die
@@ -207,8 +207,8 @@ static char **sortc_buf;
207
207
  static int *sorti_buf;
208
208
 
209
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,
210
+ static char *scl_info_block,*scl_bic_block,*scl_name_block,*scl_flags_block,*scl_flags_block_orig,
211
+ **scl_bic_array,**scl_name_array,**scl_flags_array,**scl_flags_array_o,
212
212
  scl_gueltigkeit[16],scl_gueltigkeit_iso[16];
213
213
  static int scl_cnt;
214
214
  long scl_ts;
@@ -217,6 +217,7 @@ long scl_ts;
217
217
  DLL_EXPORT const char *(*retval_enc)(int)=NULL;
218
218
 
219
219
  static int convert_encoding(char **data,UINT4 *len);
220
+ static int scl_idx(const char *bic,int *retval,int *raw);
220
221
 
221
222
 
222
223
  /* das Makro RETURN(r) gibt Debug-Meldungen zu Fehler-R�ckgabewerten (zur Fehlersuche) */
@@ -249,7 +250,6 @@ static int convert_encoding(char **data,UINT4 *len);
249
250
  #define free(ptr) efree(ptr)
250
251
  #endif
251
252
 
252
- #line 777 "konto_check.lxx"
253
253
 
254
254
  /* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
255
255
  #define BLZ_FEHLER 100000000
@@ -385,7 +385,6 @@ static int convert_encoding(char **data,UINT4 *len);
385
385
  */
386
386
  #define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
387
387
  #define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
388
- #line 918 "konto_check.lxx"
389
388
 
390
389
  /* einige Makros zur Umwandlung zwischen unsigned int und char */
391
390
  #define UCP (unsigned char*)
@@ -505,7 +504,6 @@ int pz=-777;
505
504
 
506
505
  #define E_START(x)
507
506
  #define E_END(x)
508
- #line 1043 "konto_check.lxx"
509
507
 
510
508
  /* Variable f�r die Methoden 27, 29 und 69 */
511
509
  static const int m10h_digits[4][10]={
@@ -812,7 +810,7 @@ static UINT4 adler32a(UINT4 adler,const char *buf,unsigned int len)
812
810
  * # was einen Sortierlauf vor der Generierung der Tabelle bedingt. #
813
811
  * # Die Funktion wird von qsort() (aus der libc) aufgerufen. #
814
812
  * # #
815
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
813
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
816
814
  * ###########################################################################
817
815
  */
818
816
 
@@ -839,7 +837,7 @@ static int sort_cmp(const void *ap,const void *bp)
839
837
  * # Diese Funktion dient als Vergleichsfunktion f�r zwei Integerwerte f�r #
840
838
  * # die Quicksort-Bibliotheksfunktion. #
841
839
  * # #
842
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
840
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
843
841
  * ###########################################################################
844
842
  */
845
843
 
@@ -892,7 +890,7 @@ DLL_EXPORT int set_default_compression(int mode)
892
890
  * # Funktion create_lutfile_int() (ohne den FILE-Pointer). Die generierte #
893
891
  * # Datei wird nach dem Aufruf geschlossen. #
894
892
  * # #
895
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
893
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
896
894
  * ###########################################################################
897
895
  */
898
896
 
@@ -913,7 +911,7 @@ DLL_EXPORT int create_lutfile(char *filename, char *prolog, int slots)
913
911
  * # des Inhaltsverzeichnisses mit 0-Bytes. Diese Datei kann dann mit der #
914
912
  * # Funktion write_lut_block() (bzw. write_lut_block_int()) gef�llt werden. #
915
913
  * # #
916
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
914
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
917
915
  * ###########################################################################
918
916
  */
919
917
 
@@ -950,11 +948,10 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
950
948
  * # einige grundlegende Tests gemacht, um sicherzustellen, da� es sich auch #
951
949
  * # um eine LUT2-Datei handelt (hier und sp�ter in write_block_int()). #
952
950
  * # #
953
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
951
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
954
952
  * ###########################################################################
955
953
  */
956
954
 
957
- #line 1492 "konto_check.lxx"
958
955
  DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
959
956
  {
960
957
  char buffer[SLOT_BUFFER],*ptr;
@@ -988,11 +985,10 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
988
985
  * # meldung LUT2_NO_SLOT_FREE zur�ckgegeben, aber nichts geschrieben. #
989
986
  * # Vor dem Schreiben wird der Block mittels der ZLIB komprimiert. #
990
987
  * # #
991
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
988
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
992
989
  * #############################################################################
993
990
  */
994
991
 
995
- #line 1530 "konto_check.lxx"
996
992
  static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
997
993
  {
998
994
  char buffer[SLOT_BUFFER],*ptr,*cptr;
@@ -1124,11 +1120,10 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
1124
1120
  * # mehrere Blocks des angegebenen Typs enthalten sind, wird der letze #
1125
1121
  * # zur�ckgeliefert. #
1126
1122
  * # #
1127
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
1123
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
1128
1124
  * ###########################################################################
1129
1125
  */
1130
1126
 
1131
- #line 1666 "konto_check.lxx"
1132
1127
  DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
1133
1128
  {
1134
1129
  int retval;
@@ -1147,11 +1142,10 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
1147
1142
  * # Blocks eines bestimmeten Typs enthalten sind, auch alte Blocks gelesen #
1148
1143
  * # werden. #
1149
1144
  * # #
1150
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
1145
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
1151
1146
  * ###########################################################################
1152
1147
  */
1153
1148
 
1154
- #line 1690 "konto_check.lxx"
1155
1149
  DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
1156
1150
  {
1157
1151
  int retval;
@@ -1169,11 +1163,10 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
1169
1163
  * # lesen; sie wird von vielen internen Funktionen benutzt. Die LUT-Datei #
1170
1164
  * # wird als FILE-Pointer �bergeben und nicht geschlossen. #
1171
1165
  * # #
1172
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
1166
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
1173
1167
  * ###########################################################################
1174
1168
  */
1175
1169
 
1176
- #line 1713 "konto_check.lxx"
1177
1170
  static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
1178
1171
  {
1179
1172
  char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
@@ -1263,7 +1256,6 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
1263
1256
  FREE(sbuffer);
1264
1257
  RETURN(ERROR_MALLOC);
1265
1258
  }
1266
- #line 1818 "konto_check.lxx"
1267
1259
 
1268
1260
  if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
1269
1261
  FREE(sbuffer);
@@ -1428,7 +1420,7 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
1428
1420
  * # gegeben. Falls eine Variable nicht ben�tigt wird, kann f�r sie auch #
1429
1421
  * # NULL �bergeben werden; die entsprechende Variable wird dann ignoriert. #
1430
1422
  * # #
1431
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
1423
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
1432
1424
  * #############################################################################
1433
1425
  */
1434
1426
 
@@ -1597,7 +1589,7 @@ static int lut_dir(FILE *lut,int id,UINT4 *slot_cnt,UINT4 *typ,UINT4 *len,
1597
1589
  * # dieser Buffer wird dann mittels der Funktion write_lut_block_int() #
1598
1590
  * # komprimiert und in die LUT-Datei geschrieben. #
1599
1591
  * # #
1600
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
1592
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
1601
1593
  * ###########################################################################
1602
1594
  */
1603
1595
 
@@ -2169,7 +2161,7 @@ static int write_lutfile_entry_de(UINT4 typ,int auch_filialen,int bank_cnt,char
2169
2161
  * # generate_lut2(), aber die Funktionalit�t reicht in der Praxis normaler- #
2170
2162
  * # weise gut aus. #
2171
2163
  * # #
2172
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
2164
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
2173
2165
  * ###########################################################################
2174
2166
  */
2175
2167
 
@@ -2221,7 +2213,7 @@ DLL_EXPORT int generate_lut2_p(char *inputname,char *outputname,char *user_info,
2221
2213
  * # f�r einige Pr�fziffermethoden (52, 53, B6) ben�tigt werden (sie sind in #
2222
2214
  * # den Beispielen enthalten, haben aber keine reale Entsprechung). #
2223
2215
  * # #
2224
- * # Copyright (C) 2007, 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
2216
+ * # Copyright (C) 2007, 2013 Michael Plugge <konto_check@yahoo.com> #
2225
2217
  * ###########################################################################
2226
2218
  */
2227
2219
 
@@ -2601,7 +2593,7 @@ fini:
2601
2593
  * # Die Funktion lut_dir_dump_str() allokiert f�r die Ausgabe Speicher; #
2602
2594
  * # dieser mu� von dre aufrufenden Funktion wieder freigegeben werden. #
2603
2595
  * # #
2604
- * # Copyright (C) 2007-2010 Michael Plugge <m.plugge@hs-mannheim.de> #
2596
+ * # Copyright (C) 2007-2010 Michael Plugge <konto_check@yahoo.com> #
2605
2597
  * ###########################################################################
2606
2598
  */
2607
2599
 
@@ -2711,7 +2703,7 @@ DLL_EXPORT int lut_dir_dump_str(char *lutname,char **dptr)
2711
2703
  * # LUT2_NO_VALID_DATE: Der Datenblock enth�lt kein G�ltigkeitsdatum #
2712
2704
  * # LUT2_NOT_INITIALIZED: die library wurde noch nicht initialisiert #
2713
2705
  * # #
2714
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
2706
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
2715
2707
  * ###########################################################################
2716
2708
  */
2717
2709
  DLL_EXPORT int lut_valid(void)
@@ -2742,6 +2734,38 @@ DLL_EXPORT int lut_valid(void)
2742
2734
  RETURN(LUT2_NO_LONGER_VALID);
2743
2735
  }
2744
2736
 
2737
+ DLL_EXPORT int lut_valid_date(char *lut_name,int *v11,int *v12,int *v21,int *v22)
2738
+ {
2739
+ char *ptr,*info1,*info2;
2740
+ int retval,v1,v2;
2741
+
2742
+ *v11=*v12=*v21=*v22=0;
2743
+ if((retval=lut_info(lut_name,&info1,&info2,&v1,&v2))!=OK)return retval;
2744
+ if(info1){
2745
+ for(ptr=info1;*ptr && *ptr!='\n' && !isdigit(*ptr);ptr++);
2746
+ if(*ptr && *ptr!='\n'){
2747
+ *v11=strtoul(ptr,NULL,10); /* Anfangsdatum der G�ltigkeit */
2748
+ if(*ptr && *ptr!='\n'){
2749
+ while(*ptr && *ptr!='\n' && *ptr++!='-'); /* Endedatum suchen */
2750
+ if(*ptr)*v12=strtoul(ptr,NULL,10); /* Endedatum der G�ltigkeit */
2751
+ }
2752
+ }
2753
+ free(info1);
2754
+ }
2755
+ if(info2){
2756
+ for(ptr=info2;*ptr && *ptr!='\n' && !isdigit(*ptr);ptr++);
2757
+ if(*ptr && *ptr!='\n'){
2758
+ *v21=strtoul(ptr,NULL,10); /* Anfangsdatum der G�ltigkeit */
2759
+ if(*ptr && *ptr!='\n'){
2760
+ while(*ptr && *ptr!='\n' && *ptr++!='-'); /* Endedatum suchen */
2761
+ if(*ptr)*v22=strtoul(ptr,NULL,10); /* Endedatum der G�ltigkeit */
2762
+ }
2763
+ }
2764
+ free(info2);
2765
+ }
2766
+ return OK;
2767
+ }
2768
+
2745
2769
 
2746
2770
  /* Funktion lut_info_b() +���1 */
2747
2771
  /* ###########################################################################
@@ -2751,7 +2775,7 @@ DLL_EXPORT int lut_valid(void)
2751
2775
  * # und info2; danach wird der Speicher der von lut_info() allokiert wurde, #
2752
2776
  * # wieder freigegeben. #
2753
2777
  * # #
2754
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
2778
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
2755
2779
  * ###########################################################################
2756
2780
  */
2757
2781
 
@@ -2784,7 +2808,7 @@ DLL_EXPORT int lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,i
2784
2808
  * # mittels der Funktion kc_id2ptr() in einen String umgewandelt, sowie mit #
2785
2809
  * # der Funktion kc_id_free() wieder freigegeben werden kann. #
2786
2810
  * # #
2787
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
2811
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
2788
2812
  * ###########################################################################
2789
2813
  */
2790
2814
 
@@ -2852,11 +2876,10 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
2852
2876
  * # LUT2_NO_VALID_DATE: Der Datenblock enth�lt kein G�ltigkeitsdatum #
2853
2877
  * # LUT2_BLOCK_NOT_IN_FILE: Die LUT-Datei enth�lt den Infoblock nicht #
2854
2878
  * # #
2855
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
2879
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
2856
2880
  * ###########################################################################
2857
2881
  */
2858
2882
 
2859
- #line 3411 "konto_check.lxx"
2860
2883
  DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
2861
2884
  {
2862
2885
  char *ptr,*ptr1,buffer[128];
@@ -2944,7 +2967,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
2944
2967
 
2945
2968
  /* Infoblocks lesen: 1. Infoblock */
2946
2969
  if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
2947
- #line 3500 "konto_check.lxx"
2948
2970
  *(ptr+cnt)=0;
2949
2971
  if(valid1){
2950
2972
  for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
@@ -2992,7 +3014,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
2992
3014
 
2993
3015
  /* Infoblocks lesen: 2. Infoblock */
2994
3016
  if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
2995
- #line 3549 "konto_check.lxx"
2996
3017
  *(ptr+cnt)=0;
2997
3018
  if(valid2){
2998
3019
  for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
@@ -3070,7 +3091,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
3070
3091
  * # info_p: Variablenpointer f�r R�ckgabe des Info-Strings #
3071
3092
  * # user_info_p: Variablenpointer f�r R�ckgabe des User-Info-Strings #
3072
3093
  * # #
3073
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
3094
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
3074
3095
  * ###########################################################################
3075
3096
  */
3076
3097
 
@@ -3181,7 +3202,7 @@ DLL_EXPORT int get_lut_info2(char *lut_name,int *version_p,char **prolog_p,char
3181
3202
  * # Au�erdem kann die Anzahl Slots ver�ndert (vergr��ert oder verkleinert) #
3182
3203
  * # werden. #
3183
3204
  * # #
3184
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
3205
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
3185
3206
  * ###########################################################################
3186
3207
  */
3187
3208
 
@@ -3211,7 +3232,6 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
3211
3232
  qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
3212
3233
  for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
3213
3234
  read_lut_block_int(lut1,0,typ,&len,&data);
3214
- #line 3769 "konto_check.lxx"
3215
3235
  write_lut_block_int(lut2,typ,len,data);
3216
3236
  FREE(data);
3217
3237
  last_slot=typ;
@@ -3229,7 +3249,7 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
3229
3249
  * # Sets geladen. Der R�ckgabewert ist daher oft -38 (nicht alle Blocks #
3230
3250
  * # geladen), da die LUT-Datei nicht unbedingt alle Blocks enth�lt :-). #
3231
3251
  * # #
3232
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3252
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
3233
3253
  * ###########################################################################
3234
3254
  */
3235
3255
 
@@ -3247,7 +3267,7 @@ DLL_EXPORT int kto_check_init2(char *lut_name)
3247
3267
  * # unterschiedlichen Blocks definiert (lut_set_0 ... lut_set_9), die �ber #
3248
3268
  * # einen skalaren Parameter ausgew�hlt werden k�nnen. #
3249
3269
  * # #
3250
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3270
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
3251
3271
  * ###########################################################################
3252
3272
  */
3253
3273
 
@@ -3287,7 +3307,7 @@ DLL_EXPORT int kto_check_init_p(char *lut_name,int required,int set,int incremen
3287
3307
  * # testen, ob ein bestimmter Block initialisiert wurde, und welcher #
3288
3308
  * # R�ckgabewert dabei auftrat. #
3289
3309
  * # #
3290
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3310
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
3291
3311
  * ###########################################################################
3292
3312
  */
3293
3313
 
@@ -3309,7 +3329,7 @@ DLL_EXPORT int *lut2_status(void)
3309
3329
  * # Der Parameter id sollte auf einen Speicherbereich von mindestens 33 Byte#
3310
3330
  * # zeigen. Die Datei-ID wird in diesen Speicher geschrieben. #
3311
3331
  * # #
3312
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3332
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
3313
3333
  * ###########################################################################
3314
3334
  */
3315
3335
 
@@ -3407,7 +3427,7 @@ DLL_EXPORT int get_lut_id(char *lut_name,int set,char *id)
3407
3427
  * # inkrementelle Initialisierung, um noch ben�tigte Blocks nachzuladen. #
3408
3428
  * # Falls schon alle gew�nschten Blocks geladen sind, wird nichts gemacht. #
3409
3429
  * # #
3410
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3430
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
3411
3431
  * ###########################################################################
3412
3432
  */
3413
3433
 
@@ -3438,10 +3458,9 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
3438
3458
  * # Probleme; daher gibt es noch einige andere Initialisierungsfunktionen #
3439
3459
  * # mit einfacherem Aufrufinterface, wie lut_init() oder kto_check_init_p().#
3440
3460
  * # #
3441
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3461
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
3442
3462
  * ###########################################################################
3443
3463
  */
3444
- #line 3999 "konto_check.lxx"
3445
3464
  DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
3446
3465
  {
3447
3466
  char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
@@ -3669,7 +3688,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3669
3688
  typ1=typ;
3670
3689
  if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
3671
3690
  retval=read_lut_block_int(lut,0,typ,&len,&data);
3672
- #line 4228 "konto_check.lxx"
3673
3691
 
3674
3692
  switch(retval){
3675
3693
  case LUT_CRC_ERROR:
@@ -3757,7 +3775,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3757
3775
  if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
3758
3776
  FREE(data);
3759
3777
  i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
3760
- #line 4320 "konto_check.lxx"
3761
3778
  if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
3762
3779
  typ=LUT2_2_NAME_NAME_KURZ;
3763
3780
  typ1=LUT2_NAME_NAME_KURZ;
@@ -4254,7 +4271,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
4254
4271
  * # LUT2_BLOCKS_MISSING bei einigen Blocks traten Fehler auf #
4255
4272
  * # OK alle Blocks erfolgreich geladen #
4256
4273
  * # #
4257
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
4274
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
4258
4275
  * ############################################################################
4259
4276
  */
4260
4277
  DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char **lut_blocks_fehler)
@@ -4328,7 +4345,7 @@ DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char
4328
4345
  * # Variablen lut_filename, lut_blocks_ok und lut_blocks_fehler m�ssen immer #
4329
4346
  * # angegeben werden; eine �bergabe von NULL f�hrt zu einer access violation.#
4330
4347
  * # #
4331
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
4348
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
4332
4349
  * ############################################################################
4333
4350
  */
4334
4351
  DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *lut_blocks_fehler)
@@ -4359,11 +4376,10 @@ DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *
4359
4376
  * # benutzt, ist aber auch als Info interessant, falls f�r die LUT-Datei #
4360
4377
  * # die Default-Werte benutzt wurden (Pfad und Dateiname). #
4361
4378
  * # #
4362
- * # Copyright (C) 2011 Michael Plugge <m.plugge@hs-mannheim.de> #
4379
+ * # Copyright (C) 2011 Michael Plugge <konto_check@yahoo.com> #
4363
4380
  * ###########################################################################
4364
4381
  */
4365
4382
 
4366
- #line 4926 "konto_check.lxx"
4367
4383
  DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
4368
4384
  {
4369
4385
  if(init_status<7 || !current_lutfile){
@@ -4382,7 +4398,7 @@ DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
4382
4398
  /* ###########################################################################
4383
4399
  * # lut_index(): Index einer BLZ in den internen Arrays bestimmen #
4384
4400
  * # #
4385
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4401
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4386
4402
  * ###########################################################################
4387
4403
  */
4388
4404
 
@@ -4431,7 +4447,7 @@ static int lut_index(char *b)
4431
4447
  * # Diese Funktion ist nicht so optimiert wie lut_index(), #
4432
4448
  * # da sie nicht in zeitkritischen Routinen benutzt wird. #
4433
4449
  * # #
4434
- * # Copyright (C) 2009 Michael Plugge <m.plugge@hs-mannheim.de> #
4450
+ * # Copyright (C) 2009 Michael Plugge <konto_check@yahoo.com> #
4435
4451
  * ###########################################################################
4436
4452
  */
4437
4453
 
@@ -4500,7 +4516,7 @@ static int lut_index_i(int b)
4500
4516
  * # wird. Falls f�r retval NULL �bergeben wird, wird der #
4501
4517
  * # R�ckgabewert verworfen. #
4502
4518
  * # #
4503
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4519
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4504
4520
  * ###########################################################################
4505
4521
  */
4506
4522
 
@@ -4511,7 +4527,7 @@ static int lut_index_i(int b)
4511
4527
  * # Diese Funktion testet, ob eine BLZ (und Zweigstelle, falls gew�nscht) #
4512
4528
  * # existiert und g�ltig ist. #
4513
4529
  * # #
4514
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
4530
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
4515
4531
  * ###########################################################################
4516
4532
  */
4517
4533
 
@@ -4542,7 +4558,7 @@ DLL_EXPORT int lut_blz_i(int b,int zweigstelle)
4542
4558
  * # lut_filialen(): Anzahl der Filialen zu einer gegebenen Bankleitzahl #
4543
4559
  * # bestimmen. #
4544
4560
  * # #
4545
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4561
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4546
4562
  * ###########################################################################
4547
4563
  */
4548
4564
 
@@ -4570,7 +4586,7 @@ DLL_EXPORT int lut_filialen_i(int b,int *retval)
4570
4586
  /* ###########################################################################
4571
4587
  * # lut_name(): Banknamen (lange Form) bestimmen #
4572
4588
  * # #
4573
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4589
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4574
4590
  * ###########################################################################
4575
4591
  */
4576
4592
 
@@ -4605,7 +4621,7 @@ DLL_EXPORT const char *lut_name_i(int b,int zweigstelle,int *retval)
4605
4621
  * # der deutschen Kreditwirtschaft ist die L�nge der Angaben f�r die #
4606
4622
  * # Bezeichnung des Kreditinstituts begrenzt. #
4607
4623
  * # #
4608
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4624
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4609
4625
  * ###########################################################################
4610
4626
  */
4611
4627
 
@@ -4633,7 +4649,7 @@ DLL_EXPORT const char *lut_name_kurz_i(int b,int zweigstelle,int *retval)
4633
4649
  /* ###########################################################################
4634
4650
  * # lut_plz(): Postleitzahl bestimmen #
4635
4651
  * # #
4636
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4652
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4637
4653
  * ###########################################################################
4638
4654
  */
4639
4655
 
@@ -4661,7 +4677,7 @@ DLL_EXPORT int lut_plz_i(int b,int zweigstelle,int *retval)
4661
4677
  /* ###########################################################################
4662
4678
  * # lut_ort(): Sitz einer Bank bestimmen #
4663
4679
  * # #
4664
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4680
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4665
4681
  * ###########################################################################
4666
4682
  */
4667
4683
 
@@ -4701,7 +4717,7 @@ DLL_EXPORT const char *lut_ort_i(int b,int zweigstelle,int *retval)
4701
4717
  * # den Stellen der Deutschen Bundesbank stets die Institutsgruppennummer #
4702
4718
  * # 2 zugewiesen worden. #
4703
4719
  * # #
4704
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4720
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4705
4721
  * ###########################################################################
4706
4722
  */
4707
4723
 
@@ -4757,7 +4773,7 @@ DLL_EXPORT int lut_pan_i(int b,int zweigstelle,int *retval)
4757
4773
  * # korrekte Wert l��t sich in diesem Fall durch die Funktion iban_bic_gen()#
4758
4774
  * # ermitteln. #
4759
4775
  * # #
4760
- * # Copyright (C) 2007,2013 Michael Plugge <m.plugge@hs-mannheim.de> #
4776
+ * # Copyright (C) 2007,2013 Michael Plugge <konto_check@yahoo.com> #
4761
4777
  * ###########################################################################
4762
4778
  */
4763
4779
 
@@ -4869,7 +4885,7 @@ DLL_EXPORT const char *lut_bic_hi(int b,int zweigstelle,int *retval)
4869
4885
  * # automatisiert eine eindeutige Nummer vergeben. Eine einmal verwendete #
4870
4886
  * # Nummer wird nicht noch einmal vergeben. #
4871
4887
  * # #
4872
- * # Copyright (C) 2009 Michael Plugge <m.plugge@hs-mannheim.de> #
4888
+ * # Copyright (C) 2009 Michael Plugge <konto_check@yahoo.com> #
4873
4889
  * ###########################################################################
4874
4890
  */
4875
4891
 
@@ -4898,7 +4914,7 @@ DLL_EXPORT int lut_nr_i(int b,int zweigstelle,int *retval)
4898
4914
  * # lut_pz(): Pr�fzifferverfahren f�r eine Bankleitzahl. Das Verfahren wird #
4899
4915
  * # numerisch zur�ckgegeben, also z.B. 108 f�r die Methode A8. #
4900
4916
  * # #
4901
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4917
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4902
4918
  * ###########################################################################
4903
4919
  */
4904
4920
 
@@ -4931,7 +4947,7 @@ DLL_EXPORT int lut_pz_i(int b,int zweigstelle,int *retval)
4931
4947
  * # G�ltigkeitstermin der Bankleitzahlendatei im Zahlungsverkehr nicht mehr #
4932
4948
  * # zu verwenden. #
4933
4949
  * # #
4934
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4950
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4935
4951
  * ###########################################################################
4936
4952
  */
4937
4953
 
@@ -4971,7 +4987,7 @@ DLL_EXPORT int lut_aenderung_i(int b,int zweigstelle,int *retval)
4971
4987
  * # Das Feld enth�lt das Merkmal 0 (keine Angabe) oder 1 (BLZ im Feld 1 #
4972
4988
  * # ist zur L�schung vorgesehen). Die R�ckgabe erfolgt als ASCII '0' '1'. #
4973
4989
  * # #
4974
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
4990
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
4975
4991
  * ###########################################################################
4976
4992
  */
4977
4993
 
@@ -5004,7 +5020,7 @@ DLL_EXPORT int lut_loeschung_i(int b,int zweigstelle,int *retval)
5004
5020
  * # wurde (lut_loeschung()==1) oder die Bankleitzahl zum aktuellen G�ltig- #
5005
5021
  * # keitstermin gel�scht wird (lut_aenderung()=='D'). #
5006
5022
  * # #
5007
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
5023
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
5008
5024
  * ###########################################################################
5009
5025
  */
5010
5026
 
@@ -5038,7 +5054,7 @@ DLL_EXPORT int lut_nachfolge_blz_i(int b,int zweigstelle,int *retval)
5038
5054
  * # aus einer vierstelligen Nummer und einer zweistelligen Versionszahl; #
5039
5055
  * # sie wird in konto_check als eine sechsstellige Nummer dargestellt. #
5040
5056
  * # #
5041
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
5057
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
5042
5058
  * ###########################################################################
5043
5059
  */
5044
5060
 
@@ -5073,7 +5089,7 @@ DLL_EXPORT int lut_iban_regel_i(int b,int zweigstelle,int *retval)
5073
5089
  * # Berechnung notwendig sind, schon geladen wurden; falls nicht, werden #
5074
5090
  * # die fehlenden Daten (per inkrementeller Initialisierung) nachgeladen. #
5075
5091
  * # #
5076
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
5092
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
5077
5093
  * ###########################################################################
5078
5094
  */
5079
5095
 
@@ -5114,11 +5130,10 @@ static int iban_init(void)
5114
5130
  * # Der R�ckgabewert gibt n�here Aufschl�sse �ber die Anwendung der Regeln #
5115
5131
  * # und ob eine IBAN berechnet werden darf. #
5116
5132
  * # #
5117
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
5133
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
5118
5134
  * ###########################################################################
5119
5135
  */
5120
5136
 
5121
- #line 5681 "konto_check.lxx"
5122
5137
  static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
5123
5138
  {
5124
5139
  char tmp_buffer[16];
@@ -5219,7 +5234,8 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
5219
5234
  * IBAN-Regel 5 auf S. 14); alle anderen BLZs der Commerzbank
5220
5235
  * bekommen COBADEFFXXX.
5221
5236
  */
5222
- if(blz[3]=='4' && strcasecmp(lut_name(blz,0,NULL),"comdirect bank"))*bicp="COBADEFFXXX";
5237
+ // if(blz[3]=='4' && strcasecmp(lut_name(blz,0,NULL),"comdirect bank"))*bicp="COBADEFFXXX";
5238
+ if(blz[3]=='4' && blz[4]!='1')*bicp="COBADEFFXXX"; /* comdirect Bank */
5223
5239
 
5224
5240
  /* BLZs ohne Pr�fzifferberechnung */
5225
5241
  if(pz_methode==9)return OK_NO_CHK;
@@ -5961,9 +5977,9 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
5961
5977
  return OK_BLZ_REPLACED;
5962
5978
 
5963
5979
 
5964
- /* Iban-Regel 0020.01 +���3 */
5980
+ /* Iban-Regel 0020.02 +���3 */
5965
5981
  /* Deutsche Bank AG
5966
- * Neuimplementierung nach der Regel-Version 1.5 der Deutschen Bank vom 30.8.2013
5982
+ * Neuimplementierung nach der Regel-Version 1.51 der Deutschen Bank vom 19.9.2013
5967
5983
  */
5968
5984
  case 20:
5969
5985
 
@@ -8058,21 +8074,29 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8058
8074
  *bicp="VONEDE33XXX";
8059
8075
  return OK_BLZ_REPLACED;
8060
8076
 
8061
- /* Iban-Regel 0049.00 +���3 */
8062
- /* WGZ Bank */
8077
+ /* Iban-Regel 0049.01 +���3 */
8078
+ /* DZ Bank */
8063
8079
  case 49:
8064
8080
 
8065
- /* Sonderkonten */
8066
- if(k1==0)switch(k2){
8067
- case 36: strcpy(kto,"0002310113"); RETURN_OK_KTO_REPLACED;
8068
- case 936: strcpy(kto,"0002310113"); RETURN_OK_KTO_REPLACED;
8069
- case 999: strcpy(kto,"0001310113"); RETURN_OK_KTO_REPLACED;
8070
- case 6060: strcpy(kto,"0000160602"); RETURN_OK_KTO_REPLACED;
8071
- default: break;
8072
- }
8081
+ /* Bei der Ermittlung von IBAN und BIC aus Kontonummer und BLZ sind in Abwei-
8082
+ * chung zu der Standard IBAN-Regel folgende Besonderheiten zu beachten:
8083
+ *
8084
+ * 1. F�r die Bankleitzahlen 300 600 10, 400 600 00 und 570 600 00 der DZ BANK ist die
8085
+ * IBAN-Ermittlung f�r Kontonummern mit der 1.-2. Stelle ungleich '92-99' (standardm��ig
8086
+ * links mit Nullen auf 10 Stellen aufgef�llt) mit der Standard-IBAN-Regel m�glich.
8087
+ *
8088
+ * 2. Kontonummern mit einer '92-99' an der 1.-2. Stelle haben keine Pr�fziffer, die daher
8089
+ * nicht gepr�ft werden darf. Auch f�r diese Konten kann die IBAN nach der Standard-
8090
+ * IBAN-Regel ermittelt werden.
8091
+ *
8092
+ * [etwas vereinfacht ausgedr�ckt, k�nnen Konten einfach nach der Standard-Regel konvertiert werden :-) ]
8093
+ */
8073
8094
 
8074
- /* F�r Kontonummern mit einer '9' an der 5. Stelle muss die Kontonummer, auf deren Ba-
8075
- * sis die IBAN ermittelt wird, abweichend berechnet werden. Die ersten 4 Stellen (inkl.
8095
+ /* (der folgende Teil wurde nicht gel�scht, da er auch aus realen Kontodaten stammt;
8096
+ * die ehemaligen Sonderkonten tauchen nicht mehr auf und wurden entfernt)
8097
+ *
8098
+ * F�r Kontonummern mit einer '9' an der 5. Stelle muss die Kontonummer, auf deren Basis
8099
+ * die IBAN ermittelt wird, abweichend berechnet werden. Die ersten 4 Stellen (inkl.
8076
8100
  * aufgef�llter Nullen) m�ssen ans Ende gestellt werden, so dass die Kontonummer dann
8077
8101
  * immer mit der '9' anf�ngt.
8078
8102
  *
@@ -8279,7 +8303,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8279
8303
  }
8280
8304
  }
8281
8305
 
8282
- #line 8842 "konto_check.lxx"
8283
8306
  /* Funktion lut_multiple() +���2 */
8284
8307
  /* ###########################################################################
8285
8308
  * # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
@@ -8296,7 +8319,7 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8296
8319
  * # mit den Indizes der Hauptstellen wird in der letzten Variable zur�ck- #
8297
8320
  * # gegeben (start_idx). #
8298
8321
  * # #
8299
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
8322
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
8300
8323
  * ###########################################################################
8301
8324
  */
8302
8325
 
@@ -8507,7 +8530,7 @@ static int lut_multiple_int(int idx,int *cnt,int **p_blz,char ***p_name,char **
8507
8530
  * # Die Funktion lut_cleanup() gibt allen belegten Speicher frei und setzt #
8508
8531
  * # die entsprechenden Variablen auf NULL. #
8509
8532
  * # #
8510
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
8533
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
8511
8534
  * ###########################################################################
8512
8535
  */
8513
8536
 
@@ -8547,7 +8570,6 @@ DLL_EXPORT int lut_cleanup(void)
8547
8570
  FREE(sort_pz_f);
8548
8571
  FREE(sort_plz);
8549
8572
  FREE(sort_iban_regel);
8550
- #line 9104 "konto_check.lxx"
8551
8573
  if(name_raw && name_data!=name_raw)
8552
8574
  FREE(name_raw);
8553
8575
  else
@@ -8624,7 +8646,6 @@ DLL_EXPORT int lut_cleanup(void)
8624
8646
  lut_cleanup(); /* neuer Versuch, aufzur�umen */
8625
8647
  RETURN(INIT_FATAL_ERROR);
8626
8648
  }
8627
- #line 9186 "konto_check.lxx"
8628
8649
  init_status&=1;
8629
8650
  init_in_progress=0;
8630
8651
  return OK;
@@ -8648,7 +8669,7 @@ DLL_EXPORT int lut_cleanup(void)
8648
8669
  * # Pr�fziffermethoden; das Problem wird mit dem neuen Dateiformat #
8649
8670
  * # noch einmal angegangen. #
8650
8671
  * # #
8651
- * # Copyright (C) 2002-2005 Michael Plugge <m.plugge@hs-mannheim.de> #
8672
+ * # Copyright (C) 2002-2005 Michael Plugge <konto_check@yahoo.com> #
8652
8673
  * ###########################################################################
8653
8674
  */
8654
8675
 
@@ -8670,7 +8691,7 @@ DLL_EXPORT int generate_lut(char *inputname,char *outputname,char *user_info,int
8670
8691
  * # #
8671
8692
  * # Bugs: f�r eine BLZ wird nur eine Pr�fziffermethode unterst�tzt (s.o.). #
8672
8693
  * # #
8673
- * # Copyright (C) 2002-2005 Michael Plugge <m.plugge@hs-mannheim.de> #
8694
+ * # Copyright (C) 2002-2005 Michael Plugge <konto_check@yahoo.com> #
8674
8695
  * ###########################################################################
8675
8696
  */
8676
8697
 
@@ -8788,7 +8809,7 @@ static int read_lut(char *filename,int *cnt_blz)
8788
8809
  * # zur�ckf�hren, was wesentlich schneller ist, als die sonst n�tigen acht #
8789
8810
  * # Multiplikationen mit dem jeweiligen Stellenwert. #
8790
8811
  * # #
8791
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
8812
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
8792
8813
  * ###########################################################################
8793
8814
  */
8794
8815
 
@@ -8797,8 +8818,8 @@ static void init_atoi_table(void)
8797
8818
  int i,ziffer;
8798
8819
  unsigned long l;
8799
8820
 
8800
- /* �nderungen zum 03.12.2018 aktivieren */
8801
- if(time(NULL)>1543791600 ||0)pz_aenderungen_aktivieren_2018_12=1;
8821
+ /* �nderungen zum 09.12.2019 aktivieren */
8822
+ if(time(NULL)>1575846000 ||0)pz_aenderungen_aktivieren_2019_12=1;
8802
8823
 
8803
8824
  /* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
8804
8825
  * angesehen(!), da die Stellenzuordnung sonst nicht mehr stimmt. Ausnahme:
@@ -8932,6 +8953,8 @@ static void init_atoi_table(void)
8932
8953
  lut2_feld_namen[LUT2_2_SCL_NAME]="LUT2_2_SCL_NAME";
8933
8954
  lut2_feld_namen[LUT2_SCL_FLAGS]="LUT2_SCL_FLAGS";
8934
8955
  lut2_feld_namen[LUT2_2_SCL_FLAGS]="LUT2_2_SCL_FLAGS";
8956
+ lut2_feld_namen[LUT2_SCL_FLAGS_ORIG]="LUT2_SCL_FLAGS_ORIG";
8957
+ lut2_feld_namen[LUT2_2_SCL_FLAGS_ORIG]="LUT2_2_SCL_FLAGS_ORIG";
8935
8958
 
8936
8959
  lut_block_idx[1]=0;
8937
8960
  lut_block_idx[2]=0;
@@ -8964,6 +8987,7 @@ static void init_atoi_table(void)
8964
8987
  lut_block_idx[29]=-1;
8965
8988
  lut_block_idx[30]=-1;
8966
8989
  lut_block_idx[31]=-1;
8990
+ lut_block_idx[32]=-1;
8967
8991
 
8968
8992
  lut_block_name1[1]="BLZ";
8969
8993
  lut_block_name1[2]="FILIALEN";
@@ -8996,6 +9020,7 @@ static void init_atoi_table(void)
8996
9020
  lut_block_name1[29]="SCL_BIC";
8997
9021
  lut_block_name1[30]="SCL_NAME";
8998
9022
  lut_block_name1[31]="SCL_FLAGS";
9023
+ lut_block_name1[32]="SCL_FLAGS_ORIG";
8999
9024
  lut_block_name1[101]="BLZ (2)";
9000
9025
  lut_block_name1[102]="FILIALEN (2)";
9001
9026
  lut_block_name1[103]="NAME (2)";
@@ -9027,6 +9052,7 @@ static void init_atoi_table(void)
9027
9052
  lut_block_name1[129]="SCL_BIC (2)";
9028
9053
  lut_block_name1[130]="SCL_NAME (2)";
9029
9054
  lut_block_name1[131]="SCL_FLAGS (2)";
9055
+ lut_block_name1[132]="SCL_FLAGS_ORIG (2)";
9030
9056
 
9031
9057
  lut_block_name2[1]="1. BLZ";
9032
9058
  lut_block_name2[2]="1. Anzahl Fil.";
@@ -9059,6 +9085,7 @@ static void init_atoi_table(void)
9059
9085
  lut_block_name2[29]="1. SCL BIC";
9060
9086
  lut_block_name2[30]="1. SCL Banknamen";
9061
9087
  lut_block_name2[31]="1. SCL Flags";
9088
+ lut_block_name2[32]="1. SCL Flags orig";
9062
9089
  lut_block_name2[101]="2. BLZ";
9063
9090
  lut_block_name2[102]="2. Anzahl Fil.";
9064
9091
  lut_block_name2[103]="2. Name";
@@ -9090,8 +9117,8 @@ static void init_atoi_table(void)
9090
9117
  lut_block_name2[129]="2. SCL BIC";
9091
9118
  lut_block_name2[130]="2. SCL Banknamen";
9092
9119
  lut_block_name2[131]="2. SCL Flags";
9093
- lut_blocklen_max=521;
9094
- #line 9426 "konto_check.lxx"
9120
+ lut_block_name2[132]="2. SCL Flags orig";
9121
+ lut_blocklen_max=544;
9095
9122
  init_status|=1;
9096
9123
  }
9097
9124
 
@@ -9115,7 +9142,7 @@ static void init_atoi_table(void)
9115
9142
  * # retvals: Struktur, um Pr�fziffermethode und Pr�fziffer in einer #
9116
9143
  * # threadfesten Version zur�ckzugeben #
9117
9144
  * # #
9118
- * # Copyright (C) 2002-2009 Michael Plugge <m.plugge@hs-mannheim.de> #
9145
+ * # Copyright (C) 2002-2009 Michael Plugge <konto_check@yahoo.com> #
9119
9146
  * ###########################################################################
9120
9147
  */
9121
9148
 
@@ -9151,7 +9178,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
9151
9178
 
9152
9179
  switch(pz_methode){
9153
9180
 
9154
- #line 9489 "konto_check.lxx"
9155
9181
  /* Berechnungsmethoden 00 bis 09 +���3
9156
9182
  Berechnung nach der Methode 00 +���4 */
9157
9183
  /*
@@ -10988,6 +11014,10 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
10988
11014
  * # Stellennr.: 1 2 3 4 5 6 7 8 9 10 #
10989
11015
  * # Kontonr.: x x x x x x x x x P #
10990
11016
  * # Gewichtung: 0 0 0 0 A 5 8 4 2 (A = 10) #
11017
+ * # #
11018
+ * # Es gibt noch einen Sonderfall, der in der IBAN-Regel 49 angegeben #
11019
+ * # ist: Konten mit 9 an der ersten oder 5. Stelle enthalten keine #
11020
+ * # Pr�fziffer. sondern sind ohne Pr�fung als richtig anzusehen. #
10991
11021
  * ######################################################################
10992
11022
  */
10993
11023
  case 44:
@@ -11486,7 +11516,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
11486
11516
  * ######################################################################
11487
11517
  */
11488
11518
 
11489
- #line 11500 "konto_check.lxx"
11490
11519
  case 51:
11491
11520
  if(*(kto+2)=='9'){ /* Ausnahme */
11492
11521
 
@@ -11748,8 +11777,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
11748
11777
  else
11749
11778
  return FALSE;
11750
11779
 
11751
- #line 11714 "konto_check.lxx"
11752
- #line 11716 "konto_check.lxx"
11753
11780
  /* Berechnung nach der Methode 53 +���4 */
11754
11781
  /*
11755
11782
  * ######################################################################
@@ -12048,7 +12075,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12048
12075
  * # bewerten. #
12049
12076
  * ######################################################################
12050
12077
  */
12051
- #line 11985 "konto_check.lxx"
12052
12078
  case 57:
12053
12079
  #if DEBUG>0
12054
12080
  if(retvals){
@@ -12694,7 +12720,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12694
12720
  * # Pr�fzifferberechnung) #
12695
12721
  * ######################################################################
12696
12722
  */
12697
- #line 12565 "konto_check.lxx"
12698
12723
  case 66:
12699
12724
  #if DEBUG>0
12700
12725
  case 2066:
@@ -20103,7 +20128,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
20103
20128
  return NOT_IMPLEMENTED;
20104
20129
  }
20105
20130
  }
20106
- #line 18777 "konto_check.lxx"
20107
20131
 
20108
20132
  /*
20109
20133
  * ######################################################################
@@ -20129,7 +20153,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
20129
20153
  * # blz: Bankleitzahl (immer 8-stellig) #
20130
20154
  * # kto: Kontonummer #
20131
20155
  * # #
20132
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20156
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20133
20157
  * ###########################################################################
20134
20158
  */
20135
20159
 
@@ -20194,14 +20218,13 @@ DLL_EXPORT int kto_check_blz(char *blz,char *kto)
20194
20218
  * # retvals: Struktur, in der die benutzte Pr�fziffermethode und die #
20195
20219
  * # berechnete Pr�fziffer zur�ckgegeben werden #
20196
20220
  * # #
20197
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
20221
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
20198
20222
  * ###########################################################################
20199
20223
  */
20200
20224
 
20201
20225
  #if DEBUG>0 /* es werden einige Funktionen benutzt, die nur in der Debug-Variante enthalten sind */
20202
20226
  DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,const char **bic,int *regel,RETVAL *retvals)
20203
20227
  {
20204
- #line 18875 "konto_check.lxx"
20205
20228
  char *blz_o,buffer[32],kto_o[16],*blz_n,*kto_n,*ptr,*dptr;
20206
20229
  const char *bicp;
20207
20230
  int ret,ret_regel,r,i;
@@ -20250,7 +20273,6 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
20250
20273
  }
20251
20274
  else /* BLZ und Kto gleich */
20252
20275
  return ret;
20253
- #line 18924 "konto_check.lxx"
20254
20276
  }
20255
20277
 
20256
20278
  #else /* !DEBUG */
@@ -20303,7 +20325,7 @@ DLL_EXPORT int kto_check_regel(char *blz,char *kto)
20303
20325
  * # kto: Kontonummer #
20304
20326
  * # blz: Bankleitzahl (immer 8-stellig) #
20305
20327
  * # #
20306
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20328
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20307
20329
  * ###########################################################################
20308
20330
  */
20309
20331
 
@@ -20345,7 +20367,7 @@ DLL_EXPORT int kto_check_pz(char *pz,char *kto,char *blz)
20345
20367
  * # retvals: Struktur, in der die benutzte Pr�fziffermethode und die #
20346
20368
  * # berechnete Pr�fziffer zur�ckgegeben werden #
20347
20369
  * # #
20348
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20370
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20349
20371
  * ###########################################################################
20350
20372
  */
20351
20373
 
@@ -20398,10 +20420,9 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
20398
20420
  * # retvals: Struktur, in der die benutzte Pr�fziffermethode und die #
20399
20421
  * # berechnete Pr�fziffer zur�ckgegeben werden #
20400
20422
  * # #
20401
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20423
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20402
20424
  * ###########################################################################
20403
20425
  */
20404
- #line 19075 "konto_check.lxx"
20405
20426
  DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
20406
20427
  {
20407
20428
  int untermethode,pz_methode;
@@ -20437,7 +20458,7 @@ DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals){re
20437
20458
  * # statt eines numerischen Wertes. Die Funktion wurde zun�chst f�r die #
20438
20459
  * # Perl-Variante eingef�hrt. #
20439
20460
  * # #
20440
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20461
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20441
20462
  * ###########################################################################
20442
20463
  */
20443
20464
 
@@ -20489,7 +20510,7 @@ DLL_EXPORT const char *kto_check_str(char *x_blz,char *kto,char *lut_name)
20489
20510
  * # kto: Kontonummer #
20490
20511
  * # lut_name: Name der Lookup-Datei oder NULL (f�r DEFAULT_LUT_NAME) #
20491
20512
  * # #
20492
- * # Copyright (C) 2002-2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20513
+ * # Copyright (C) 2002-2007 Michael Plugge <konto_check@yahoo.com> #
20493
20514
  * ###########################################################################
20494
20515
  */
20495
20516
 
@@ -20571,7 +20592,7 @@ DLL_EXPORT int kto_check(char *pz_or_blz,char *kto,char *lut_name)
20571
20592
  * # die Anzahl der Banken die zu dem BIC geh�ren, in der Variablen cnt #
20572
20593
  * # zur�ckgegeben (optional). #
20573
20594
  * # #
20574
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
20595
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
20575
20596
  * ###########################################################################
20576
20597
  */
20577
20598
 
@@ -20637,7 +20658,6 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
20637
20658
  }
20638
20659
  else
20639
20660
  **user_info_p=0;
20640
- #line 19296 "konto_check.lxx"
20641
20661
  FREE(prolog);
20642
20662
  return OK;
20643
20663
  }
@@ -20663,7 +20683,7 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
20663
20683
  * # INVALID_LUT_FILE Fehler in der LUT-Datei (Format, CRC...) #
20664
20684
  * # OK Erfolg #
20665
20685
  * # #
20666
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20686
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20667
20687
  * ######################################################################
20668
20688
  */
20669
20689
 
@@ -20702,7 +20722,7 @@ DLL_EXPORT int get_lut_info(char **info,char *lut_name)
20702
20722
  * # keinen Speicher freigeben kann, der von C aus allokiert wurde. #
20703
20723
  * # Auch in C# ist die Speicherverwaltung nicht einfach m�glich. #
20704
20724
  * # #
20705
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
20725
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
20706
20726
  * ######################################################################
20707
20727
  */
20708
20728
 
@@ -20728,7 +20748,7 @@ DLL_EXPORT void *kc_alloc(int size,int *retval)
20728
20748
  * # Diese Funktion ist Teil des alten Interfaces und wurde als Wrapper #
20729
20749
  * # zu den neuen Routinen umgestellt. #
20730
20750
  * # #
20731
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20751
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20732
20752
  * ###########################################################################
20733
20753
  */
20734
20754
 
@@ -20747,7 +20767,7 @@ DLL_EXPORT int cleanup_kto(void)
20747
20767
  * # Diese Funktion gibt die Version und das Datum der Kompilierung der #
20748
20768
  * # konto_check library als String zur�ck. .#
20749
20769
  * # #
20750
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20770
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20751
20771
  * ###########################################################################
20752
20772
  */
20753
20773
 
@@ -20772,20 +20792,20 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
20772
20792
  case 3:
20773
20793
  return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
20774
20794
  case 4: /* Datum der Pr�fziffermethode */
20775
- if(pz_aenderungen_aktivieren_2018_12)
20776
- return "03.12.2018";
20795
+ if(pz_aenderungen_aktivieren_2019_12)
20796
+ return "09.12.2019";
20777
20797
  else
20778
- return "03.12.2018 (Aenderungen vom 03.12.2018 enthalten aber noch nicht aktiviert)";
20798
+ return "09.09.2019 (Aenderungen vom 09.12.2019 enthalten aber noch nicht aktiviert)";
20779
20799
  case 5:
20780
- return "04.03.2019";
20800
+ return "09.09.2019";
20781
20801
  case 6:
20782
- return "4. M�rz 2019"; /* Klartext-Datum der Bibliotheksversion */
20802
+ return "13. April 2023"; /* Klartext-Datum der Bibliotheksversion */
20783
20803
  case 7:
20784
20804
  return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
20785
20805
  case 8:
20786
20806
  return "6"; /* Hauptversionszahl */
20787
20807
  case 9:
20788
- return "08"; /* Unterversionszahl */
20808
+ return "15"; /* Unterversionszahl */
20789
20809
  }
20790
20810
  }
20791
20811
 
@@ -20800,7 +20820,7 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
20800
20820
  * # Variante vor allem f�r Perl gedacht ist; in der Umgebung ist es #
20801
20821
  * # etwas komplizierter, ein Array zu �bergeben. #
20802
20822
  * # #
20803
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
20823
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
20804
20824
  * ###########################################################################
20805
20825
  */
20806
20826
 
@@ -20831,7 +20851,7 @@ DLL_EXPORT int dump_lutfile_p(char *outputname,UINT4 felder)
20831
20851
  * # dem Array required spezifiziert. Es werden nur Felder der Deutschen #
20832
20852
  * # Bundesbank ber�cksichtigt; andere Felder werden ignoriert. #
20833
20853
  * # #
20834
- * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20854
+ * # Copyright (C) 2007 Michael Plugge <konto_check@yahoo.com> #
20835
20855
  * ###########################################################################
20836
20856
  */
20837
20857
 
@@ -20931,7 +20951,6 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
20931
20951
  default:
20932
20952
  break;
20933
20953
  }
20934
- #line 19529 "konto_check.lxx"
20935
20954
  fputc('\n',out);
20936
20955
  while(--i)fputc('=',out);
20937
20956
  fputc('\n',out);
@@ -21027,7 +21046,7 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
21027
21046
  * # #
21028
21047
  * # Update 2014: die IBAN-Regeln werden jetzt auch ausgegeben. #
21029
21048
  * # #
21030
- * # Copyright (C) 2007,2009 Michael Plugge <m.plugge@hs-mannheim.de> #
21049
+ * # Copyright (C) 2007,2009 Michael Plugge <konto_check@yahoo.com> #
21031
21050
  * ###########################################################################
21032
21051
  */
21033
21052
 
@@ -21138,7 +21157,7 @@ DLL_EXPORT int rebuild_blzfile(char *inputname,char *outputname,UINT4 set)
21138
21157
  * # #
21139
21158
  * # R�ckgabe: der zu der �bergebenen IBAN geh�rende BIC #
21140
21159
  * # #
21141
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
21160
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
21142
21161
  * ###########################################################################
21143
21162
  */
21144
21163
 
@@ -21241,7 +21260,7 @@ DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto)
21241
21260
  * # die Parameter blz und kto wird allerdings Speicher allokiert und per #
21242
21261
  * # Handle wieder zur�ckgegeben. #
21243
21262
  * # #
21244
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
21263
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
21245
21264
  * ###########################################################################
21246
21265
  */
21247
21266
 
@@ -21256,7 +21275,6 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
21256
21275
  return iban2bic(iban,retval,b,k);
21257
21276
  }
21258
21277
 
21259
- #line 19854 "konto_check.lxx"
21260
21278
  /* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
21261
21279
  /* ###########################################################################
21262
21280
  * # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
@@ -21328,7 +21346,7 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
21328
21346
  * # fehlschl�gt, wird der entsprechende Fehlercode in die #
21329
21347
  * # Variable retval geschrieben und NULL zur�ckgegeben. #
21330
21348
  * # #
21331
- * # Copyright (C) 2008,2013 Michael Plugge <m.plugge@hs-mannheim.de> #
21349
+ * # Copyright (C) 2008,2013 Michael Plugge <konto_check@yahoo.com> #
21332
21350
  * ###########################################################################
21333
21351
  */
21334
21352
 
@@ -21580,7 +21598,7 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
21580
21598
  * # Parameter: #
21581
21599
  * # ci: Creditor Identifiers der getestet werden soll #
21582
21600
  * # #
21583
- * # Copyright (C) 2013 Michael Plugge <m.plugge@hs-mannheim.de> #
21601
+ * # Copyright (C) 2013 Michael Plugge <konto_check@yahoo.com> #
21584
21602
  * ###########################################################################
21585
21603
  */
21586
21604
 
@@ -21666,7 +21684,7 @@ DLL_EXPORT int ci_check(char *ci)
21666
21684
  * # retval: NULL oder Adresse einer Variablen, in die der R�ckgabe- #
21667
21685
  * # wert der Kontopr�fung geschrieben wird #
21668
21686
  * # #
21669
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
21687
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
21670
21688
  * ###########################################################################
21671
21689
  */
21672
21690
 
@@ -21937,7 +21955,7 @@ DLL_EXPORT int iban_check(char *iban,int *retval)
21937
21955
  * # zeichen nach jeweils 5 Zeichen) geschrieben wird, oder #
21938
21956
  * # NULL (falls nicht ben�tigt) #
21939
21957
  * # #
21940
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
21958
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
21941
21959
  * ###########################################################################
21942
21960
  */
21943
21961
 
@@ -22003,7 +22021,7 @@ DLL_EXPORT int ipi_gen(char *zweck,char *dst,char *papier)
22003
22021
  * # kc_id2ptr() kann das Handle in einen String umgewandelt werden, sowie #
22004
22022
  * # mittels der Funktion kc_id_free() wieder freigegeben werden. #
22005
22023
  * # #
22006
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
22024
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
22007
22025
  * ###########################################################################
22008
22026
  */
22009
22027
 
@@ -22032,7 +22050,7 @@ DLL_EXPORT int ipi_gen_id(char *zweck,int *dst,int *papier)
22032
22050
  * # Parameter: #
22033
22051
  * # zweck: der Strukturierte Verwendungszweck, der getestet werden soll #
22034
22052
  * # #
22035
- * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
22053
+ * # Copyright (C) 2008 Michael Plugge <konto_check@yahoo.com> #
22036
22054
  * ###########################################################################
22037
22055
  */
22038
22056
 
@@ -22086,10 +22104,9 @@ DLL_EXPORT int ipi_check(char *zweck)
22086
22104
  * # Felder der LUT-Datei, z.B. Banken in einem bestimmten Ort oder mit #
22087
22105
  * # einem bestimmten Namen etc. #
22088
22106
  * # #
22089
- * # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
22107
+ * # Copyright (C) 2009,2011 Michael Plugge <konto_check@yahoo.com> #
22090
22108
  * ###########################################################################
22091
22109
  */
22092
- #line 20687 "konto_check.lxx"
22093
22110
 
22094
22111
  /* Funktion volltext_zeichen() +���2 */
22095
22112
  /* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
@@ -22936,7 +22953,6 @@ static int qcmp_bic_h(const void *ap,const void *bp)
22936
22953
  return a-b;
22937
22954
  }
22938
22955
 
22939
- #line 21534 "konto_check.lxx"
22940
22956
 
22941
22957
  /* Funktion qcmp_bic() +���3 */
22942
22958
  static int qcmp_bic(const void *ap,const void *bp)
@@ -23041,7 +23057,6 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
23041
23057
  else
23042
23058
  return a-b;
23043
23059
  }
23044
- #line 21549 "konto_check.lxx"
23045
23060
 
23046
23061
  /* Funktion init_blzf() +���2
23047
23062
  * Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
@@ -23109,7 +23124,6 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
23109
23124
  }
23110
23125
 
23111
23126
  /* Funktion suche_int1() +���2 */
23112
- #line 21617 "konto_check.lxx"
23113
23127
  static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
23114
23128
  int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
23115
23129
  {
@@ -23160,7 +23174,6 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
23160
23174
  }
23161
23175
 
23162
23176
  /* Funktion suche_int2() +���2 */
23163
- #line 21668 "konto_check.lxx"
23164
23177
  static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
23165
23178
  int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
23166
23179
  {
@@ -23775,7 +23788,6 @@ static int cmp_suche_sort(const void *ap,const void *bp)
23775
23788
  DLL_EXPORT int lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_op,int uniq)
23776
23789
  {
23777
23790
  int i,j,last_idx,*idx_a,*cnt_o;
23778
- #line 22284 "konto_check.lxx"
23779
23791
 
23780
23792
  if(idx_op)*idx_op=NULL;
23781
23793
  if(cnt_op)*cnt_op=NULL;
@@ -23857,7 +23869,6 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
23857
23869
  return OK;
23858
23870
  }
23859
23871
 
23860
- #line 22367 "konto_check.lxx"
23861
23872
  /* Funktion lut_suche_volltext() +���2 */
23862
23873
  DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
23863
23874
  int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
@@ -23987,7 +23998,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
23987
23998
  return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
23988
23999
  }
23989
24000
 
23990
- #line 22517 "konto_check.lxx"
24001
+ #line 22564 "konto_check.lxx"
23991
24002
  /* Funktion lut_suche_bic() +���2 */
23992
24003
  DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
23993
24004
  char ***base_name,int **blz_base)
@@ -24041,7 +24052,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
24041
24052
  {
24042
24053
  int retval;
24043
24054
 
24044
-
24045
24055
  if(anzahl)*anzahl=0;
24046
24056
  if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
24047
24057
  if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
@@ -24055,7 +24065,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
24055
24065
  /* Funktion lut_suche_plz() +���2 */
24056
24066
  DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
24057
24067
  {
24058
-
24059
24068
  if(anzahl)*anzahl=0;
24060
24069
  if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
24061
24070
  if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
@@ -24068,7 +24077,6 @@ DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int
24068
24077
  /* Funktion lut_suche_regel() +���2 */
24069
24078
  DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
24070
24079
  {
24071
-
24072
24080
  if(anzahl)*anzahl=0;
24073
24081
  if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
24074
24082
  if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
@@ -24078,7 +24086,6 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
24078
24086
  return suche_int2(such1*100,such2*100+99,anzahl,start_idx,zweigstellen_base,blz_base,&iban_regel,&sort_iban_regel,qcmp_iban_regel,LUT2_IBAN_REGEL_SORT,0);
24079
24087
  }
24080
24088
 
24081
- #line 22550 "konto_check.lxx"
24082
24089
 
24083
24090
  /* Funktion lut_suche_bic_h() +���2 */
24084
24091
  DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
@@ -24170,7 +24177,7 @@ DLL_EXPORT int bic_info(char *bic1,int mode,int *anzahl,int *start_idx)
24170
24177
  /* ###############################################################################
24171
24178
  * # Diese Funktionen bestimmen das �nderungsflag zu einem BIC bzw. einer IBAN #
24172
24179
  * # #
24173
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24180
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24174
24181
  * ###############################################################################
24175
24182
  */
24176
24183
 
@@ -24193,7 +24200,7 @@ DLL_EXPORT int iban_aenderung(char *iban,int filiale,int*retval)
24193
24200
  /* ###############################################################################
24194
24201
  * # Diese Funktionen bestimmen das L�schflag zu einem BIC bzw. einer IBAN #
24195
24202
  * # #
24196
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24203
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24197
24204
  * ###############################################################################
24198
24205
  */
24199
24206
 
@@ -24216,7 +24223,7 @@ DLL_EXPORT int iban_loeschung(char *iban,int filiale,int*retval)
24216
24223
  /* ###############################################################################
24217
24224
  * # Diese Funktionen bestimmen die IBAN-Regel zu einem BIC bzw. einer IBAN #
24218
24225
  * # #
24219
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24226
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24220
24227
  * ###############################################################################
24221
24228
  */
24222
24229
 
@@ -24239,7 +24246,7 @@ DLL_EXPORT int iban_iban_regel(char *iban,int filiale,int*retval)
24239
24246
  /* ###############################################################################
24240
24247
  * # Diese Funktionen bestimmen die Nachfolge-BLZ zu einem BIC bzw. einer IBAN #
24241
24248
  * # #
24242
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24249
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24243
24250
  * ###############################################################################
24244
24251
  */
24245
24252
 
@@ -24262,7 +24269,7 @@ DLL_EXPORT int iban_nachfolge_blz(char *iban,int filiale,int*retval)
24262
24269
  /* ###############################################################################
24263
24270
  * # Diese Funktionen bestimmen die Laufende Nr. zu einem BIC bzw. einer IBAN #
24264
24271
  * # #
24265
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24272
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24266
24273
  * ###############################################################################
24267
24274
  */
24268
24275
 
@@ -24285,7 +24292,7 @@ DLL_EXPORT int iban_nr(char *iban,int filiale,int*retval)
24285
24292
  /* ###############################################################################
24286
24293
  * # Diese Funktionen bestimmen den PAN zu einem BIC bzw. einer IBAN #
24287
24294
  * # #
24288
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24295
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24289
24296
  * ###############################################################################
24290
24297
  */
24291
24298
 
@@ -24308,7 +24315,7 @@ DLL_EXPORT int iban_pan(char *iban,int filiale,int*retval)
24308
24315
  /* ###############################################################################
24309
24316
  * # Diese Funktionen bestimmen die PLZ der Bank zu einem BIC bzw. einer IBAN #
24310
24317
  * # #
24311
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24318
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24312
24319
  * ###############################################################################
24313
24320
  */
24314
24321
 
@@ -24331,7 +24338,7 @@ DLL_EXPORT int iban_plz(char *iban,int filiale,int*retval)
24331
24338
  /* ###############################################################################
24332
24339
  * # Diese Funktionen bestimmen die Pr�fziffer zu einem BIC bzw. einer IBAN #
24333
24340
  * # #
24334
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24341
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24335
24342
  * ###############################################################################
24336
24343
  */
24337
24344
 
@@ -24354,7 +24361,7 @@ DLL_EXPORT int iban_pz(char *iban,int filiale,int*retval)
24354
24361
  /* ###############################################################################
24355
24362
  * # Diese Funktionen bestimmen den BIC zu einem BIC bzw. einer IBAN #
24356
24363
  * # #
24357
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24364
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24358
24365
  * ###############################################################################
24359
24366
  */
24360
24367
 
@@ -24377,7 +24384,7 @@ DLL_EXPORT const char *iban_bic(char *iban,int filiale,int*retval)
24377
24384
  /* ###############################################################################
24378
24385
  * # Diese Funktionen bestimmen den BIC der Hauptstelle zu einem BIC bzw. einer IBAN#
24379
24386
  * # #
24380
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24387
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24381
24388
  * ###############################################################################
24382
24389
  */
24383
24390
 
@@ -24400,7 +24407,7 @@ DLL_EXPORT const char *iban_bic_h(char *iban,int filiale,int*retval)
24400
24407
  /* ###############################################################################
24401
24408
  * # Diese Funktionen bestimmen den Name der Bank zu einem BIC bzw. einer IBAN #
24402
24409
  * # #
24403
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24410
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24404
24411
  * ###############################################################################
24405
24412
  */
24406
24413
 
@@ -24423,7 +24430,7 @@ DLL_EXPORT const char *iban_name(char *iban,int filiale,int*retval)
24423
24430
  /* ###############################################################################
24424
24431
  * # Diese Funktionen bestimmen den Kurzname der Bank zu einem BIC bzw. einer IBAN#
24425
24432
  * # #
24426
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24433
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24427
24434
  * ###############################################################################
24428
24435
  */
24429
24436
 
@@ -24446,7 +24453,7 @@ DLL_EXPORT const char *iban_name_kurz(char *iban,int filiale,int*retval)
24446
24453
  /* ###############################################################################
24447
24454
  * # Diese Funktionen bestimmen den Ort einer Bank zu einem BIC bzw. einer IBAN #
24448
24455
  * # #
24449
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
24456
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
24450
24457
  * ###############################################################################
24451
24458
  */
24452
24459
 
@@ -24464,7 +24471,6 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
24464
24471
  {
24465
24472
  return iban_fkt_s(iban,filiale,retval,lut_ort);
24466
24473
  }
24467
- #line 22639 "konto_check.lxx"
24468
24474
 
24469
24475
  static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
24470
24476
  {
@@ -24773,7 +24779,7 @@ static const char *iban_fkt_s(char *iban,int filiale,int *retval,const char*(*fk
24773
24779
  * # val: Daten #
24774
24780
  * # size: Gr��e des Datenblocks (nur bei set_default_bin() ) #
24775
24781
  * # #
24776
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
24782
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
24777
24783
  * ###########################################################################
24778
24784
  */
24779
24785
 
@@ -24829,7 +24835,7 @@ DLL_EXPORT int kto_check_set_default_bin(char *key,char *val,int size)
24829
24835
  * # Diese Funktion initialisiert die Variablen f�r den Default-Block und #
24830
24836
  * # l�scht evl. vorhandene Werte. #
24831
24837
  * # #
24832
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
24838
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
24833
24839
  * ###########################################################################
24834
24840
  */
24835
24841
 
@@ -24865,7 +24871,7 @@ static int kto_check_clear_default(void)
24865
24871
  * # lut_name: Name der LUT-Datei #
24866
24872
  * # block_id: ID in der LUT-Datei f�r den Block #
24867
24873
  * # #
24868
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
24874
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
24869
24875
  * ###########################################################################
24870
24876
  */
24871
24877
 
@@ -24944,7 +24950,7 @@ DLL_EXPORT int kto_check_init_default(char *lut_name,int block_id)
24944
24950
  * # val: Wert (R�ckgabe per Referenz) #
24945
24951
  * # size: Gr��e des Datenblocks (per Referenz) #
24946
24952
  * # #
24947
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
24953
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
24948
24954
  * ###########################################################################
24949
24955
  */
24950
24956
 
@@ -24976,7 +24982,7 @@ DLL_EXPORT int kto_check_get_default(char *key,char **val,int *size)
24976
24982
  * # keys: Array mit den Schl�sseln (R�ckgabe per Referenz) #
24977
24983
  * # cnt: Anzahl (R�ckgabe per Referenz) #
24978
24984
  * # #
24979
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
24985
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
24980
24986
  * ###########################################################################
24981
24987
  */
24982
24988
 
@@ -25004,7 +25010,7 @@ DLL_EXPORT int kto_check_default_keys(char ***keys,int *cnt)
25004
25010
  * # lutfile: LUT-Datei in die der Block geschrieben werden soll #
25005
25011
  * # block_id: ID in der LUT-Datei f�r den Block #
25006
25012
  * # #
25007
- * # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
25013
+ * # Copyright (C) 2010 Michael Plugge <konto_check@yahoo.com> #
25008
25014
  * ###########################################################################
25009
25015
  */
25010
25016
 
@@ -25049,7 +25055,7 @@ DLL_EXPORT int kto_check_write_default(char *lutfile,int block_id)
25049
25055
  * # Funktion mit dem Parameter 0 aufgerufen wird, wird nur die aktuelle #
25050
25056
  * # Kodierung zur�ckgegeben. #
25051
25057
  * # #
25052
- * # Copyright (C) 2011 Michael Plugge <m.plugge@hs-mannheim.de> #
25058
+ * # Copyright (C) 2011 Michael Plugge <konto_check@yahoo.com> #
25053
25059
  * ###########################################################################
25054
25060
  */
25055
25061
 
@@ -25200,7 +25206,7 @@ DLL_EXPORT int kto_check_encoding(int mode)
25200
25206
  * # Diese Funktion entspricht der Funktion kto_check_encoding(); allerdings #
25201
25207
  * # ist der R�ckgabewert nicht numerisch, sondern ein String. #
25202
25208
  * # #
25203
- * # Copyright (C) 2011 Michael Plugge <m.plugge@hs-mannheim.de> #
25209
+ * # Copyright (C) 2011 Michael Plugge <konto_check@yahoo.com> #
25204
25210
  * ###########################################################################
25205
25211
  */
25206
25212
 
@@ -25258,7 +25264,7 @@ DLL_EXPORT const char *kto_check_encoding_str(int mode)
25258
25264
  * # 0: Flag abfragen, nicht ver�ndern #
25259
25265
  * # -1: Flag l�schen, Speicher der raw-Daten freigeben #
25260
25266
  * # #
25261
- * # Copyright (C) 2011 Michael Plugge <m.plugge@hs-mannheim.de> #
25267
+ * # Copyright (C) 2011 Michael Plugge <konto_check@yahoo.com> #
25262
25268
  * ###########################################################################
25263
25269
  */
25264
25270
 
@@ -25295,7 +25301,7 @@ DLL_EXPORT int keep_raw_data(int mode)
25295
25301
  * # Diese Funktion konvertiert einen gelesenen LUT-Block in die gew�nschte #
25296
25302
  * # Kodierung. Der urspr�nglich allokierte Speicher wird wieder freigegeben.#
25297
25303
  * # #
25298
- * # Copyright (C) 2011 Michael Plugge <m.plugge@hs-mannheim.de> #
25304
+ * # Copyright (C) 2011 Michael Plugge <konto_check@yahoo.com> #
25299
25305
  * ###########################################################################
25300
25306
  */
25301
25307
 
@@ -25753,7 +25759,6 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
25753
25759
  default: return "???";
25754
25760
  }
25755
25761
  }
25756
- #line 23594 "konto_check.lxx"
25757
25762
 
25758
25763
  /* Funktion lut_keine_iban_berechnung() +���1 */
25759
25764
  /*
@@ -25868,7 +25873,7 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
25868
25873
  /* Funktion pz_aenderungen_enable() +���1 */
25869
25874
  /* ###########################################################################
25870
25875
  * # Die Funktion pz_aenderungen_enable() dient dazu, den Status des Flags #
25871
- * # pz_aenderungen_aktivieren_2018_12 abzufragen bzw. zu setzen. Falls die Variable #
25876
+ * # pz_aenderungen_aktivieren_2019_12 abzufragen bzw. zu setzen. Falls die Variable #
25872
25877
  * # set 1 ist, werden die �nderungen aktiviert, falls sie 0 ist, werden #
25873
25878
  * # die �nderungen deaktiviert. Bei allen anderen Werten wird das aktuelle #
25874
25879
  * # Flag nicht ver�ndert, sondern nur der Status zur�ckgegeben. #
@@ -25878,14 +25883,14 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
25878
25883
  * # anderer Wert: nur Abfrage des Status #
25879
25884
  * # R�ckgabe: aktueller Status des Flags # #
25880
25885
  * # #
25881
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
25886
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
25882
25887
  * ###########################################################################
25883
25888
  */
25884
25889
 
25885
25890
  DLL_EXPORT int pz_aenderungen_enable(int set)
25886
25891
  {
25887
- if(set==0 || set==1)pz_aenderungen_aktivieren_2018_12=set;
25888
- return pz_aenderungen_aktivieren_2018_12;
25892
+ if(set==0 || set==1)pz_aenderungen_aktivieren_2019_12=set;
25893
+ return pz_aenderungen_aktivieren_2019_12;
25889
25894
  }
25890
25895
 
25891
25896
  #if DEBUG>0
@@ -25902,7 +25907,7 @@ DLL_EXPORT int pz_aenderungen_enable(int set)
25902
25907
  * # txt: Textvariable #
25903
25908
  * # i: Integervariable (4 Byte) #
25904
25909
  * # #
25905
- * # Copyright (C) 2006 Michael Plugge <m.plugge@hs-mannheim.de> #
25910
+ * # Copyright (C) 2006 Michael Plugge <konto_check@yahoo.com> #
25906
25911
  * ###########################################################################
25907
25912
  */
25908
25913
 
@@ -25917,7 +25922,6 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
25917
25922
  #endif
25918
25923
 
25919
25924
 
25920
- #line 23758 "konto_check.lxx"
25921
25925
  /* Funktionen *_id() +���1 */
25922
25926
  /* ###########################################################################
25923
25927
  * # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
@@ -25931,7 +25935,7 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
25931
25935
  * # Da der Aufruf f�r jede Funktionsgruppe gleich ist, wird er per Makro #
25932
25936
  * # gemacht. #
25933
25937
  * # #
25934
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
25938
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
25935
25939
  * ###########################################################################
25936
25940
  */
25937
25941
  /* numerische R�ckgabewerte in eine id umwandeln */
@@ -26074,7 +26078,7 @@ DLL_EXPORT int current_lutfile_name_id(int *set,int *level,int *retval)
26074
26078
  * # den etwas eigenwilligen (Schleich-)Weg �ber IntPtr nehmen, damit der #
26075
26079
  * # Speicher wieder freigegeben werden kann... #
26076
26080
  * # #
26077
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
26081
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
26078
26082
  * ###########################################################################
26079
26083
  */
26080
26084
 
@@ -26092,7 +26096,7 @@ DLL_EXPORT int current_lutfile_name_id(int *set,int *level,int *retval)
26092
26096
  * # von kc_id_free() wird es auch nicht gel�scht, der Funktionsaufruf gibt #
26093
26097
  * # nur OK zur�ck, ohne etwas zu tun. #
26094
26098
  * # #
26095
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
26099
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
26096
26100
  * ###########################################################################
26097
26101
  */
26098
26102
 
@@ -26136,7 +26140,7 @@ static int kc_ptr2id(char *ptr,int *handle,int release_mem)
26136
26140
  * # Diese Funktion gibt den Pointer zu einem Handle zur�ck. Dieser Wert #
26137
26141
  * # kann dann als String-Pointer in den DLL-Routinen verwendet werden. #
26138
26142
  * # #
26139
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
26143
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
26140
26144
  * ###########################################################################
26141
26145
  */
26142
26146
 
@@ -26157,7 +26161,7 @@ DLL_EXPORT char *kc_id2ptr(int handle,int *retval)
26157
26161
  * # Diese Funktion gibt den Speicher, der zu einem Handle geh�rt, wieder #
26158
26162
  * # frei und setzt den entsprechenden Slot-Eintrag auf NULL. #
26159
26163
  * # #
26160
- * # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
26164
+ * # Copyright (C) 2014 Michael Plugge <konto_check@yahoo.com> #
26161
26165
  * ###########################################################################
26162
26166
  */
26163
26167
 
@@ -26181,7 +26185,7 @@ DLL_EXPORT int kc_id_free(int handle)
26181
26185
  * # cmp_bic() ist die Vergleichsfunktion f�r bic_binsearch() und #
26182
26186
  * # lut_write_scl_blocks() (zum Sortieren der BICs). #
26183
26187
  * # #
26184
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26188
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26185
26189
  * ###########################################################################
26186
26190
  */
26187
26191
  static int cmp_bic(const void *ap,const void *bp)
@@ -26201,7 +26205,7 @@ static int cmp_bic(const void *ap,const void *bp)
26201
26205
  * # Die Funktion bic_binsearch() implementiert eine bin�re Suche im #
26202
26206
  * # BIC-Array (rekursiv) #
26203
26207
  * # #
26204
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26208
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26205
26209
  * ###########################################################################
26206
26210
  */
26207
26211
  static int bic_binsearch(int links,int rechts,char *bic)
@@ -26226,10 +26230,18 @@ static int bic_binsearch(int links,int rechts,char *bic)
26226
26230
  * # letzten Stellen existiert (Extension BIC); falls dieser auch nicht #
26227
26231
  * # existiert, wird als Letztes ein 8-stelliger BIC gesucht (Wildcard-BIC). #
26228
26232
  * # #
26229
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26233
+ * # Der zus�tzliche Parameter raw wurde eingef�hrt, da bei den Flags #
26234
+ * # �fters bei 11-stelligen BICs nicht die richtigen Flags angegeben sind #
26235
+ * # (bei den zugeh�rigen Wildcard-BICs (8-stellig) sind mehr Optionen #
26236
+ * # gesetzt), wie z.B. bei WELADEDLLEV oder DEUTDEDBPAL. Falls als erstes #
26237
+ * # Zeichen der BIC ein ! �bergeben wird, werden die originalen Flags #
26238
+ * # zur�ckgegeben, andernfalls die "richtigen". So ist die R�ckgabe von #
26239
+ * # DEUTDEDBPAL z.B. 11011, von !DEUTDEDBPAL jedoch 10000. #
26240
+ * # #
26241
+ * # Copyright (C) 2018, 2023 Michael Plugge <konto_check@yahoo.com> #
26230
26242
  * ###########################################################################
26231
26243
  */
26232
- static int scl_idx(const char *bic,int *retval)
26244
+ static int scl_idx(const char *bic,int *retval,int *raw)
26233
26245
  {
26234
26246
  char such_bic[12];
26235
26247
  int i,idx;
@@ -26238,41 +26250,75 @@ static int scl_idx(const char *bic,int *retval)
26238
26250
  if(retval)*retval=NO_SCL_BLOCKS_LOADED;
26239
26251
  return -1;
26240
26252
  }
26241
- strcpy(such_bic,bic);
26253
+ if(*bic=='!'){
26254
+ *raw=1;
26255
+ strcpy(such_bic,bic+1);
26256
+ }
26257
+ else{
26258
+ *raw=0;
26259
+ strcpy(such_bic,bic);
26260
+ }
26242
26261
  for(i=0;i<11 && such_bic[i];i++)such_bic[i]=toupper(such_bic[i]);
26243
26262
 
26244
- /* zun�chst den BIC suchen wie angegeben */
26245
- idx=bic_binsearch(0,scl_cnt,such_bic);
26263
+ /*
26264
+ * Auszug aus dem SCL Directory Notice (Seite 13):
26265
+ *
26266
+ * The SCL Directory contains 11-character and 8-character BICs. The following convention
26267
+ * applies.
26268
+ *
26269
+ * - An 8-character BIC is a wild card and represents the reachability of any 11-character
26270
+ * BIC with the same first eight characters, as well as the reachability of the 8-character
26271
+ * BIC itself.
26272
+ *
26273
+ * - An 11-character BIC with the branch code extension "XXX" represents itself as well
26274
+ * as the reachability of the corresponding 8-character BIC. But it is not a wild card.
26275
+ *
26276
+ * - All other 11-character BICs represent the reachability of the respective individual
26277
+ * 11-character BIC only.
26278
+ *
26279
+ * https://www.bundesbank.de/resource/blob/626738/8f82d10dd08993a1941e8441cf5a9fd4/mL/scl-directory-notice-ab-nov2018-data.pdf
26280
+ *
26281
+ * Punkt 2 hat eine h�here Priorit�t als Punkt 1, denn eine 8-stellige BIC ist mit selbiger
26282
+ * um 'XXX' erweiterten BIC identisch.
26283
+ *
26284
+ * (Update April 23: das gilt wohl doch nicht so ganz, zumindest nicht bei den Flags...
26285
+ * - die Flags werden jetzt vom Eintrag und dem Wildcard kombiniert)
26286
+ *
26287
+ */
26288
+
26289
+ if(such_bic[8]==0){ /* Such-BIC 8-stellig angegeben; BIC zuerst mit XXX extension suchen */
26290
+ such_bic[8]=such_bic[9]=such_bic[10]='X';
26291
+ such_bic[11]=0;
26292
+ idx=bic_binsearch(0,scl_cnt-1,such_bic);
26293
+ if(idx>=0){
26294
+ if(retval)*retval=OK_SCL_EXTENSION_BIC_USED;
26295
+ return idx;
26296
+ }
26297
+ else
26298
+ such_bic[8]=0; /* wieder zur�cksetzen */
26299
+ }
26300
+
26301
+ /* nun den BIC suchen wie angegeben */
26302
+ idx=bic_binsearch(0,scl_cnt-1,such_bic);
26246
26303
  if(idx>=0){
26247
26304
  if(retval)*retval=OK;
26248
26305
  return idx;
26249
26306
  }
26307
+ else if(such_bic[8]==0){
26308
+ if(retval)*retval=SCL_BIC_NOT_FOUND;
26309
+ return -1;
26310
+ }
26250
26311
  else{
26251
- if(such_bic[8]==0){ /* Such-BIC 8-stellig angegeben; BIC mit XXX extension testen */
26252
- such_bic[8]=such_bic[9]=such_bic[10]='X';
26253
- such_bic[11]=0;
26254
- idx=bic_binsearch(0,scl_cnt,such_bic);
26255
- if(idx>=0){
26256
- if(retval)*retval=OK_SCL_EXTENSION_BIC_USED;
26257
- return idx;
26258
- }
26259
- else{
26260
- if(retval)*retval=SCL_BIC_NOT_FOUND;
26261
- return -1;
26262
- }
26312
+ /* Wildcard-BIC suchen, nur noch bei 11-stelligen BICs */
26313
+ such_bic[8]=0;
26314
+ idx=bic_binsearch(0,scl_cnt-1,such_bic);
26315
+ if(idx>=0){
26316
+ if(retval)*retval=OK_SCL_WILDCARD_BIC_USED;
26317
+ return idx;
26263
26318
  }
26264
26319
  else{
26265
- /* Wildcard-BIC suchen */
26266
- such_bic[8]=0;
26267
- idx=bic_binsearch(0,scl_cnt,such_bic);
26268
- if(idx>=0){
26269
- if(retval)*retval=OK_SCL_WILDCARD_BIC_USED;
26270
- return idx;
26271
- }
26272
- else{
26273
- if(retval)*retval=SCL_BIC_NOT_FOUND;
26274
- return -1;
26275
- }
26320
+ if(retval)*retval=SCL_BIC_NOT_FOUND;
26321
+ return -1;
26276
26322
  }
26277
26323
  }
26278
26324
  }
@@ -26289,21 +26335,22 @@ static int scl_idx(const char *bic,int *retval)
26289
26335
  * # direkter Download-Link: #
26290
26336
  * # https://www.bundesbank.de/Redaktion/DE/Downloads/Aufgaben/Unbarer_Zahlungsverkehr/SEPA/verzeichnis_der_erreichbaren_zahlungsdienstleister.csv?__blob=publicationFile
26291
26337
  * # #
26292
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26338
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26293
26339
  * ###########################################################################
26294
26340
  */
26295
26341
  DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26296
26342
  {
26297
- char c,*ptr,buffer[512],*scl_name_block_s,*scl_bic_block_s,*scl_flags_block_s,*ptr1,*ptr2,*ptr3;
26343
+ char c,*ptr,buffer[512],buffer2[128],*scl_name_block_s,*scl_bic_block_s,
26344
+ *scl_flags_block_s,*scl_flags_block_o,*ptr1,*ptr2,*ptr3,*ptr4,*base_ptr="";
26298
26345
  char scl_gueltigkeit[16],scl_gueltigkeit_iso[16];
26299
- int cnt,i,rv,j,*iptr,jahr,monat,tag;
26346
+ int cnt,i,j,rv,*iptr,jahr,monat,tag,f1,f2,f3,f4,f5;
26300
26347
  FILE *in,*lut;
26301
26348
  struct stat stat_buffer;
26302
26349
  struct tm z;
26303
26350
  time_t ts;
26304
26351
 
26305
26352
  if(!(in=fopen(inputfile,"r")))RETURN(FILE_READ_ERROR);
26306
- fgets(buffer,512,in);
26353
+ if(!fgets(buffer,512,in))RETURN(SCL_INPUT_FORMAT_ERROR);
26307
26354
  if(strncmp(buffer,"Gueltig ab / valid from ",24))return SCL_INPUT_FORMAT_ERROR;
26308
26355
  for(ptr=buffer;!isdigit(*ptr);ptr++);
26309
26356
  strncpy(scl_gueltigkeit,ptr,16);
@@ -26317,26 +26364,31 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26317
26364
  z.tm_mon=monat;
26318
26365
  z.tm_year=jahr-1900;
26319
26366
  ts=mktime(&z);
26320
- snprintf(scl_gueltigkeit_iso,16,"%4d-%02d-%02d",jahr,monat,tag);
26321
- fgets(buffer,512,in);
26322
- if(strncmp(buffer,"BIC;Name;Service SCT;Service SDD;Service COR1;Service B2B;Service SCC",69))RETURN(SCL_INPUT_FORMAT_ERROR);
26323
-
26367
+ snprintf(scl_gueltigkeit_iso,16,"%4d-%02d-%02d",jahr%10000,monat%100,tag%100);
26368
+ if(!fgets(buffer,512,in))RETURN(SCL_INPUT_FORMAT_ERROR);
26369
+ /* Leerzeichen aus dem �berschrift-String entfernen */
26370
+ for(ptr=buffer,ptr2=buffer2;*ptr;ptr++)if(!isspace(*ptr))*ptr2++=*ptr;
26371
+ if(strncmp(buffer2,"BIC;Name;SERVICESCT;SERVICECOR;SERVICECOR1;SERVICEB2B;SERVICESCC",64))RETURN(SCL_INPUT_FORMAT_ERROR);
26324
26372
  stat(inputfile,&stat_buffer);
26325
- cnt=stat_buffer.st_size/163+100; /* etwas gro�z�gig die Anzahl rechnen */
26373
+
26374
+ cnt=stat_buffer.st_size/163+300; /* etwas gro�z�gig die Anzahl rechnen; jede Zeile hat 163 Bytes und ist am Ende mit Leerzeichen aufgef�llt */
26326
26375
 
26327
26376
  scl_bic_array=(char **)calloc(sizeof(char*),cnt);
26328
26377
  scl_name_array=(char **)calloc(sizeof(char*),cnt);
26329
26378
  scl_flags_array=(char **)calloc(sizeof(char*),cnt);
26379
+ scl_flags_array_o=(char **)calloc(sizeof(char*),cnt);
26330
26380
 
26331
26381
  scl_bic_block=ptr1=(char *)calloc(12,cnt);
26332
26382
  scl_name_block=ptr2=(char *)calloc(150,cnt);
26333
26383
  scl_flags_block=ptr3=(char *)calloc(6,cnt);
26384
+ scl_flags_block_orig=ptr4=(char *)calloc(6,cnt);
26334
26385
 
26335
26386
  /* SCL-Datei einlesen */
26336
26387
  for(cnt=0;fgets(buffer,512,in);){
26337
26388
  scl_bic_array[cnt]=ptr1;
26338
26389
  scl_name_array[cnt]=ptr2;
26339
26390
  scl_flags_array[cnt]=ptr3;
26391
+ scl_flags_array_o[cnt]=ptr4;
26340
26392
  cnt++;
26341
26393
  for(ptr=buffer;*ptr!=';' && !isspace(*ptr);*ptr1++=*ptr++);
26342
26394
  c=*ptr;
@@ -26351,12 +26403,12 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26351
26403
  ptr2++;
26352
26404
 
26353
26405
  /* ptr steht nun auf den Flags */
26354
- *ptr3++=*ptr;
26355
- *ptr3++=*(ptr+2);
26356
- *ptr3++=*(ptr+4);
26357
- *ptr3++=*(ptr+6);
26358
- *ptr3++=*(ptr+8);
26359
- *ptr3++=0;
26406
+ *ptr4++=*ptr3++=*ptr;
26407
+ *ptr4++=*ptr3++=*(ptr+2);
26408
+ *ptr4++=*ptr3++=*(ptr+4);
26409
+ *ptr4++=*ptr3++=*(ptr+6);
26410
+ *ptr4++=*ptr3++=*(ptr+8);
26411
+ *ptr4++=*ptr3++=0;
26360
26412
  }
26361
26413
  fclose(in);
26362
26414
 
@@ -26367,34 +26419,89 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26367
26419
  /* vor dem Abspeichern der Blocks nach BICs sortieren */
26368
26420
  qsort(iptr,cnt,sizeof(int),cmp_bic);
26369
26421
 
26422
+ /* Auszug aus dem SCL-Merkblatt:
26423
+ * Das SCL-Directory enth�lt elfstellige und achtstellige BICs. Dabei gilt:
26424
+ *
26425
+ * - Ein achtstelliger BIC ist eine sog. Wildcard und repr�sentiert die Erreichbarkeit eines
26426
+ * jeden elfstelligen BICs mit identischen ersten acht Stellen sowie die Erreichbarkeit
26427
+ * des achtstelligen BICs selbst.
26428
+ *
26429
+ * - Ein elfstelliger BIC mit der Branch Code Extension XXX repr�sentiert sich selbst
26430
+ * sowie die Erreichbarkeit des zugeh�rigen achtstelligen BICs. Er stellt jedoch keine
26431
+ * Wildcard dar.
26432
+ *
26433
+ * - Alle �brigen elfstelligen BICs repr�sentieren ausschlie�lich die Erreichbarkeit des
26434
+ * jeweiligen einzelnen elfstelligen BICs.
26435
+ *
26436
+ * Ein Zahlungsdienstleister, der mit einer Wildcard im SCL-Directory ausgewiesen wird, muss
26437
+ * Zahlungen f�r alle denkbaren elfstelligen BICs, die durch die Wildcard repr�sentiert werden,
26438
+ * aufnehmen.
26439
+ *
26440
+ * D.h., bei 11-stelligen BICs, zu denen eine 8-stellige Wildcard-BIC existiert, sind die Flags
26441
+ * aus beiden Varianten zu kombinieren. Beispiel:
26442
+ *
26443
+ * WELADEDL;SPARKASSE LEVERKUSEN;1;1;0;1;1
26444
+ * WELADEDLLEV;SPARKASSE LEVERKUSEN;1;0;0;0;0
26445
+ *
26446
+ * Die resultierenden Flags f�r WELADEDLLEV werden aus den beiden BICs zusammengesetzt zu 1;1;0;1;1
26447
+ *
26448
+ * Um das Verhalten auch f�r �ltere Installationen von konto_check zu implementieren, wird in die LUT-Datei
26449
+ * ein Block mit den resultierenden Flags als SCL Flags (ID 31) geschrieben; die Original-Version findet sich
26450
+ * als ID 32 mit der Bezeichnung SCL Flags orig, und wird von �teren Installationen ignoriert.
26451
+ *
26452
+ * Von der Problematik betroffen sind in der aktuellen Datei (Stand April 2023) 68 BICs, davon 8 deutsche.
26453
+ */
26454
+
26455
+ f1=f2=f3=f4=f5=0;
26370
26456
  ptr1=scl_bic_block_s=(char *)calloc(1,ptr1-scl_bic_block+16);
26371
26457
  ptr2=scl_name_block_s=(char *)calloc(1,ptr2-scl_name_block+16);
26372
26458
  ptr3=scl_flags_block_s=(char *)calloc(1,ptr3-scl_flags_block+16);
26459
+ ptr4=scl_flags_block_o=(char *)calloc(1,ptr4-scl_flags_block_orig+16);
26373
26460
  for(i=0;i<cnt;i++){
26374
26461
  j=iptr[i];
26375
26462
  for(ptr=scl_bic_array[j];(*ptr1++=*ptr++););
26376
26463
  for(ptr=scl_name_array[j];(*ptr2++=*ptr++););
26377
26464
  for(ptr=scl_flags_array[j];(*ptr3++=*ptr++););
26465
+ if(strlen(scl_bic_array[j])==8){
26466
+ base_ptr=scl_bic_array[j]; /* 8-stelliger BIC, Flags merken */
26467
+ f1=*(scl_flags_array[j]+0)-'0';
26468
+ f2=*(scl_flags_array[j]+1)-'0';
26469
+ f3=*(scl_flags_array[j]+2)-'0';
26470
+ f4=*(scl_flags_array[j]+3)-'0';
26471
+ f5=*(scl_flags_array[j]+4)-'0';
26472
+ }
26473
+ if(!strncmp(scl_bic_array[j],base_ptr,8)){
26474
+ ptr=scl_flags_array_o[j];
26475
+ if(*ptr++=='1' || f1)*ptr4++='1'; else *ptr4++='0';
26476
+ if(*ptr++=='1' || f2)*ptr4++='1'; else *ptr4++='0';
26477
+ if(*ptr++=='1' || f3)*ptr4++='1'; else *ptr4++='0';
26478
+ if(*ptr++=='1' || f4)*ptr4++='1'; else *ptr4++='0';
26479
+ if(*ptr++=='1' || f5)*ptr4++='1'; else *ptr4++='0';
26480
+ *ptr4++=0;
26481
+ }
26482
+ else
26483
+ for(ptr=scl_flags_array_o[j];(*ptr4++=*ptr++););
26378
26484
  }
26379
26485
  free(iptr);
26380
26486
 
26381
26487
  if(!(lut=fopen(lutfile,"rb+")))RETURN(FILE_WRITE_ERROR);
26382
26488
 
26383
26489
  /* zun�chst mal testen ob es auch eine LUT2 Datei ist */
26384
- if(!(ptr=fgets(buffer,SLOT_BUFFER,lut)))RETURN(FILE_READ_ERROR);
26490
+ if(!(ptr=fgets(buffer,512,lut)))RETURN(FILE_READ_ERROR);
26385
26491
  while(*ptr && *ptr!='\n')ptr++;
26386
26492
  *--ptr=0;
26387
26493
  if(!strcmp(buffer,"BLZ Lookup Table/Format 1."))RETURN(LUT1_FILE_USED); /* alte LUT-Datei */
26388
26494
  if(strcmp(buffer,"BLZ Lookup Table/Format 2."))RETURN(INVALID_LUT_FILE); /* keine LUT-Datei */
26389
26495
 
26390
26496
  /* nun die Blocks schreiben */
26391
- rewind(lut);
26392
- sprintf(buffer,"cnt: %d, TS: %ld, Gueltigkeit: %s %s",cnt,(long)ts,scl_gueltigkeit,scl_gueltigkeit_iso);
26497
+ rewind(lut); /* Info schreiben da� korrigierte Flags */
26498
+ sprintf(buffer,"cnt: %d, TS: %ld, Gueltigkeit: %s %s korrigiert",cnt,(long)ts,scl_gueltigkeit,scl_gueltigkeit_iso);
26393
26499
  if((rv=write_lut_block_int(lut,LUT2_SCL_INFO,strlen(buffer)+1,buffer))!=OK){
26394
26500
  fclose(lut);
26395
26501
  FREE(scl_bic_block_s);
26396
26502
  FREE(scl_name_block_s);
26397
26503
  FREE(scl_flags_block_s);
26504
+ FREE(scl_flags_block_o);
26398
26505
  RETURN(rv);
26399
26506
  }
26400
26507
  if((rv=write_lut_block_int(lut,LUT2_SCL_BIC,(UINT4)(ptr1-scl_bic_block_s+1),scl_bic_block_s))!=OK){
@@ -26402,6 +26509,7 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26402
26509
  FREE(scl_bic_block_s);
26403
26510
  FREE(scl_name_block_s);
26404
26511
  FREE(scl_flags_block_s);
26512
+ FREE(scl_flags_block_o);
26405
26513
  RETURN(rv);
26406
26514
  }
26407
26515
  if((rv=write_lut_block_int(lut,LUT2_SCL_NAME,(UINT4)(ptr2-scl_name_block_s+1),scl_name_block_s))!=OK){
@@ -26409,13 +26517,23 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26409
26517
  FREE(scl_bic_block_s);
26410
26518
  FREE(scl_name_block_s);
26411
26519
  FREE(scl_flags_block_s);
26520
+ FREE(scl_flags_block_o);
26521
+ RETURN(rv);
26522
+ }
26523
+ if((rv=write_lut_block_int(lut,LUT2_SCL_FLAGS,(UINT4)(ptr4-scl_flags_block_o+1),scl_flags_block_o))!=OK){
26524
+ fclose(lut);
26525
+ FREE(scl_bic_block_s);
26526
+ FREE(scl_name_block_s);
26527
+ FREE(scl_flags_block_s);
26528
+ FREE(scl_flags_block_o);
26412
26529
  RETURN(rv);
26413
26530
  }
26414
- if((rv=write_lut_block_int(lut,LUT2_SCL_FLAGS,(UINT4)(ptr3-scl_flags_block_s+1),scl_flags_block_s))!=OK){
26531
+ if((rv=write_lut_block_int(lut,LUT2_SCL_FLAGS_ORIG,(UINT4)(ptr3-scl_flags_block_s+1),scl_flags_block_s))!=OK){
26415
26532
  fclose(lut);
26416
26533
  FREE(scl_bic_block_s);
26417
26534
  FREE(scl_name_block_s);
26418
26535
  FREE(scl_flags_block_s);
26536
+ FREE(scl_flags_block_o);
26419
26537
  RETURN(rv);
26420
26538
  }
26421
26539
 
@@ -26423,26 +26541,26 @@ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile)
26423
26541
  FREE(scl_bic_block_s);
26424
26542
  FREE(scl_name_block_s);
26425
26543
  FREE(scl_flags_block_s);
26544
+ FREE(scl_flags_block_o);
26426
26545
  RETURN(OK);
26427
26546
  }
26428
26547
 
26429
- #line 24267 "konto_check.lxx"
26430
26548
  /* Funktion lut_scl_init() +���3 */
26431
26549
  /* ###########################################################################
26432
26550
  * # Die Funktion lut_scl_init() liest die SCL-Blocks aus einer LUT-Datei #
26433
26551
  * # und initialisiert die zugeh�rigen internen Datenstrukturen. #
26434
26552
  * # #
26435
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26553
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26436
26554
  * ###########################################################################
26437
26555
  */
26438
26556
  DLL_EXPORT int lut_scl_init(char *lut_name)
26439
26557
  {
26440
26558
  char *ptr,*end;
26441
26559
  int i,cnt,rv;
26442
- static UINT4 block_size_0,block_size_1,block_size_2,block_size_3;
26560
+ static UINT4 block_size_0,block_size_1,block_size_2,block_size_3,block_size_4;
26443
26561
  FILE *lut;
26444
26562
 
26445
- if(scl_bic_array && scl_name_array && scl_flags_array)return OK; /* schon initialisiert */
26563
+ if(scl_bic_array && scl_name_array && scl_flags_array && scl_flags_array_o)return OK; /* schon initialisiert */
26446
26564
 
26447
26565
  if(!(lut=fopen(lut_name,"rb")))RETURN(FILE_READ_ERROR);
26448
26566
  if((rv=read_lut_block_int(lut,0,LUT2_SCL_INFO,&block_size_0,&scl_info_block))<0){
@@ -26473,6 +26591,15 @@ DLL_EXPORT int lut_scl_init(char *lut_name)
26473
26591
  else
26474
26592
  return rv;
26475
26593
  }
26594
+ if((rv=read_lut_block_int(lut,0,LUT2_SCL_FLAGS_ORIG,&block_size_4,&scl_flags_block_orig))<0){
26595
+ /* hier retval<0 ignorieren, denn bei alten LUT_Dateien ist der Block nicht enthalten.
26596
+ * In dem Fall kann der Block durch den Block LUT2_SCL_FLAGS ersetzt werden. Die BIC Flags
26597
+ * sind in dem Fall dann nicht korrigiert. Lohnt sich nicht, das hier zu machen, da die
26598
+ * LUT-Dateien die mit dieser Version erzeugt werden, den Block enthalten.
26599
+ */
26600
+ scl_flags_block_orig=scl_flags_block;
26601
+ block_size_4=block_size_3;
26602
+ }
26476
26603
  fclose(lut);
26477
26604
  if((i=sscanf(scl_info_block,"cnt: %d, TS: %ld, Gueltigkeit: %15s %15s",
26478
26605
  &cnt,&scl_ts,(char *)&scl_gueltigkeit,(char *)&scl_gueltigkeit_iso))!=4)RETURN(INVALID_SCL_INFO_BLOCK);
@@ -26480,6 +26607,7 @@ DLL_EXPORT int lut_scl_init(char *lut_name)
26480
26607
  scl_bic_array=(char **)calloc(sizeof(char*),cnt);
26481
26608
  scl_name_array=(char **)calloc(sizeof(char*),cnt);
26482
26609
  scl_flags_array=(char **)calloc(sizeof(char*),cnt);
26610
+ scl_flags_array_o=(char **)calloc(sizeof(char*),cnt);
26483
26611
 
26484
26612
  for(i=0,ptr=scl_bic_block,end=scl_bic_block+block_size_1;i<cnt && ptr<end;i++){
26485
26613
  scl_bic_array[i]=ptr;
@@ -26495,6 +26623,11 @@ DLL_EXPORT int lut_scl_init(char *lut_name)
26495
26623
  scl_flags_array[i++]=ptr;
26496
26624
  while(*ptr++ && ptr<end);
26497
26625
  }
26626
+
26627
+ for(i=0,ptr=scl_flags_block_orig,end=scl_flags_block_orig+block_size_4;i<cnt && ptr<end;){
26628
+ scl_flags_array_o[i++]=ptr;
26629
+ while(*ptr++ && ptr<end);
26630
+ }
26498
26631
  scl_cnt=cnt;
26499
26632
  RETURN(OK);
26500
26633
  }
@@ -26504,7 +26637,7 @@ DLL_EXPORT int lut_scl_init(char *lut_name)
26504
26637
  * # Die Funktion lut_scl_info() gibt Infos �ber die Anzahl der Eintr�ge im #
26505
26638
  * # SCL-Verzeichnis sowie das Datum, ab wann die Datei g�ltig ist. #
26506
26639
  * # #
26507
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26640
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26508
26641
  * ###########################################################################
26509
26642
  */
26510
26643
  DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso)
@@ -26540,16 +26673,16 @@ DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,cons
26540
26673
  * # Die Funktion lut_scl_multi() gibt alle Eintr�ge des SCL-Verzeichnisses #
26541
26674
  * # zu einem gegebenen BIC zur�ck. #
26542
26675
  * # #
26543
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26676
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26544
26677
  * ###########################################################################
26545
26678
  */
26546
26679
  DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_bic,const char **scl_name)
26547
26680
  {
26548
- int i,rv;
26681
+ int i,rv,raw;
26549
26682
 
26550
- i=scl_idx(bic,&rv);
26683
+ i=scl_idx(bic,&rv,&raw);
26551
26684
  if(rv<0)return rv;
26552
- if(scl_flags)*scl_flags=scl_flags_array[i];
26685
+ if(scl_flags)*scl_flags=raw?scl_flags_array_o[i]:scl_flags_array[i];
26553
26686
  if(used_bic)*used_bic=scl_bic_array[i];
26554
26687
  if(scl_name)*scl_name=scl_name_array[i];
26555
26688
  return rv;
@@ -26562,15 +26695,15 @@ DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_
26562
26695
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26563
26696
  * # entsprechende Fehlercode (<0) gesetzt. #
26564
26697
  * # #
26565
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26698
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26566
26699
  * ###########################################################################
26567
26700
  */
26568
26701
  DLL_EXPORT int lut_scl_sct(char *bic,int *retval)
26569
26702
  {
26570
26703
  char *flags;
26571
- int i,rv;
26704
+ int i,rv,raw;
26572
26705
 
26573
- i=scl_idx(bic,&rv);
26706
+ i=scl_idx(bic,&rv,&raw);
26574
26707
  if(rv<0){
26575
26708
  if(retval)*retval=rv;
26576
26709
  return -1;
@@ -26588,15 +26721,15 @@ DLL_EXPORT int lut_scl_sct(char *bic,int *retval)
26588
26721
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26589
26722
  * # entsprechende Fehlercode (<0) gesetzt. #
26590
26723
  * # #
26591
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26724
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26592
26725
  * ###########################################################################
26593
26726
  */
26594
26727
  DLL_EXPORT int lut_scl_sdd(char *bic,int *retval)
26595
26728
  {
26596
26729
  char *flags;
26597
- int i,rv;
26730
+ int i,rv,raw;
26598
26731
 
26599
- i=scl_idx(bic,&rv);
26732
+ i=scl_idx(bic,&rv,&raw);
26600
26733
  if(rv<0){
26601
26734
  if(retval)*retval=rv;
26602
26735
  return -1;
@@ -26615,15 +26748,15 @@ DLL_EXPORT int lut_scl_sdd(char *bic,int *retval)
26615
26748
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26616
26749
  * # entsprechende Fehlercode (<0) gesetzt. #
26617
26750
  * # #
26618
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26751
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26619
26752
  * ###########################################################################
26620
26753
  */
26621
26754
  DLL_EXPORT int lut_scl_cor1(char *bic,int *retval)
26622
26755
  {
26623
26756
  char *flags;
26624
- int i,rv;
26757
+ int i,rv,raw;
26625
26758
 
26626
- i=scl_idx(bic,&rv);
26759
+ i=scl_idx(bic,&rv,&raw);
26627
26760
  if(rv<0){
26628
26761
  if(retval)*retval=rv;
26629
26762
  return -1;
@@ -26641,15 +26774,15 @@ DLL_EXPORT int lut_scl_cor1(char *bic,int *retval)
26641
26774
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26642
26775
  * # entsprechende Fehlercode (<0) gesetzt. #
26643
26776
  * # #
26644
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26777
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26645
26778
  * ###########################################################################
26646
26779
  */
26647
26780
  DLL_EXPORT int lut_scl_b2b(char *bic,int *retval)
26648
26781
  {
26649
26782
  char *flags;
26650
- int i,rv;
26783
+ int i,rv,raw;
26651
26784
 
26652
- i=scl_idx(bic,&rv);
26785
+ i=scl_idx(bic,&rv,&raw);
26653
26786
  if(rv<0){
26654
26787
  if(retval)*retval=rv;
26655
26788
  return -1;
@@ -26667,15 +26800,15 @@ DLL_EXPORT int lut_scl_b2b(char *bic,int *retval)
26667
26800
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26668
26801
  * # entsprechende Fehlercode (<0) gesetzt. #
26669
26802
  * # #
26670
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26803
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26671
26804
  * ###########################################################################
26672
26805
  */
26673
26806
  DLL_EXPORT int lut_scl_scc(char *bic,int *retval)
26674
26807
  {
26675
26808
  char *flags;
26676
- int i,rv;
26809
+ int i,rv,raw;
26677
26810
 
26678
- i=scl_idx(bic,&rv);
26811
+ i=scl_idx(bic,&rv,&raw);
26679
26812
  if(rv<0){
26680
26813
  if(retval)*retval=rv;
26681
26814
  return -1;
@@ -26693,17 +26826,17 @@ DLL_EXPORT int lut_scl_scc(char *bic,int *retval)
26693
26826
  * # einen BIC umgewandelt werden mu�, m�ssen auch die Blocks BLZ und BIC #
26694
26827
  * # der LUT-Datei initialisiert sein, sonst wird ein Fehler zur�ckgegeben. #
26695
26828
  * # #
26696
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26829
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26697
26830
  * ###########################################################################
26698
26831
  */
26699
26832
  DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **used_bic,const char **scl_name)
26700
26833
  {
26701
26834
  const char *bic;
26702
- int i,rv;
26835
+ int i,rv,raw;
26703
26836
 
26704
26837
  bic=lut_bic(blz,0,&rv);
26705
26838
  if(rv<0)return rv;
26706
- i=scl_idx(bic,&rv);
26839
+ i=scl_idx(bic,&rv,&raw);
26707
26840
  if(rv<0)return rv;
26708
26841
  if(scl_flags)*scl_flags=scl_flags_array[i];
26709
26842
  if(used_bic)*used_bic=scl_bic_array[i];
@@ -26718,14 +26851,14 @@ DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **u
26718
26851
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26719
26852
  * # entsprechende Fehlercode (<0) gesetzt. #
26720
26853
  * # #
26721
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26854
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26722
26855
  * ###########################################################################
26723
26856
  */
26724
26857
  DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic)
26725
26858
  {
26726
26859
  char *flags;
26727
26860
  const char *bic;
26728
- int i,rv;
26861
+ int i,rv,raw;
26729
26862
 
26730
26863
  bic=lut_bic(blz,0,&rv);
26731
26864
  if(rv<0){
@@ -26734,7 +26867,7 @@ DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic)
26734
26867
  }
26735
26868
  else
26736
26869
  if(retval)*retval=OK;
26737
- i=scl_idx(bic,&rv);
26870
+ i=scl_idx(bic,&rv,&raw);
26738
26871
  if(rv<0){
26739
26872
  if(retval)*retval=rv;
26740
26873
  return -1;
@@ -26753,14 +26886,14 @@ DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic)
26753
26886
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26754
26887
  * # entsprechende Fehlercode (<0) gesetzt. #
26755
26888
  * # #
26756
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26889
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26757
26890
  * ###########################################################################
26758
26891
  */
26759
26892
  DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic)
26760
26893
  {
26761
26894
  char *flags;
26762
26895
  const char *bic;
26763
- int i,rv;
26896
+ int i,rv,raw;
26764
26897
 
26765
26898
  bic=lut_bic(blz,0,&rv);
26766
26899
  if(rv<0){
@@ -26769,7 +26902,7 @@ DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic)
26769
26902
  }
26770
26903
  else
26771
26904
  if(retval)*retval=OK;
26772
- i=scl_idx(bic,&rv);
26905
+ i=scl_idx(bic,&rv,&raw);
26773
26906
  if(rv<0){
26774
26907
  if(retval)*retval=rv;
26775
26908
  return -1;
@@ -26789,14 +26922,14 @@ DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic)
26789
26922
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26790
26923
  * # entsprechende Fehlercode (<0) gesetzt. #
26791
26924
  * # #
26792
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26925
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26793
26926
  * ###########################################################################
26794
26927
  */
26795
26928
  DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic)
26796
26929
  {
26797
26930
  char *flags;
26798
26931
  const char *bic;
26799
- int i,rv;
26932
+ int i,rv,raw;
26800
26933
 
26801
26934
  bic=lut_bic(blz,0,&rv);
26802
26935
  if(rv<0){
@@ -26805,7 +26938,7 @@ DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic)
26805
26938
  }
26806
26939
  else
26807
26940
  if(retval)*retval=OK;
26808
- i=scl_idx(bic,&rv);
26941
+ i=scl_idx(bic,&rv,&raw);
26809
26942
  if(rv<0){
26810
26943
  if(retval)*retval=rv;
26811
26944
  return -1;
@@ -26824,14 +26957,14 @@ DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic)
26824
26957
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26825
26958
  * # entsprechende Fehlercode (<0) gesetzt. #
26826
26959
  * # #
26827
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26960
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26828
26961
  * ###########################################################################
26829
26962
  */
26830
26963
  DLL_EXPORT int lut_scl_b2b_blz(char *blz,int *retval,const char **used_bic)
26831
26964
  {
26832
26965
  char *flags;
26833
26966
  const char *bic;
26834
- int i,rv;
26967
+ int i,rv,raw;
26835
26968
 
26836
26969
  bic=lut_bic(blz,0,&rv);
26837
26970
  if(rv<0){
@@ -26840,7 +26973,7 @@ DLL_EXPORT int lut_scl_b2b_blz(char *blz,int *retval,const char **used_bic)
26840
26973
  }
26841
26974
  else
26842
26975
  if(retval)*retval=OK;
26843
- i=scl_idx(bic,&rv);
26976
+ i=scl_idx(bic,&rv,&raw);
26844
26977
  if(rv<0){
26845
26978
  if(retval)*retval=rv;
26846
26979
  return -1;
@@ -26859,14 +26992,14 @@ DLL_EXPORT int lut_scl_b2b_blz(char *blz,int *retval,const char **used_bic)
26859
26992
  * # Im Fehlerfall wird -1 zur�ckgegeben und die Variable retval auf den #
26860
26993
  * # entsprechende Fehlercode (<0) gesetzt. #
26861
26994
  * # #
26862
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
26995
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26863
26996
  * ###########################################################################
26864
26997
  */
26865
26998
  DLL_EXPORT int lut_scl_scc_blz(char *blz,int *retval,const char **used_bic)
26866
26999
  {
26867
27000
  char *flags;
26868
27001
  const char *bic;
26869
- int i,rv;
27002
+ int i,rv,raw;
26870
27003
 
26871
27004
  bic=lut_bic(blz,0,&rv);
26872
27005
  if(rv<0){
@@ -26875,7 +27008,7 @@ DLL_EXPORT int lut_scl_scc_blz(char *blz,int *retval,const char **used_bic)
26875
27008
  }
26876
27009
  else
26877
27010
  if(retval)*retval=OK;
26878
- i=scl_idx(bic,&rv);
27011
+ i=scl_idx(bic,&rv,&raw);
26879
27012
  if(rv<0){
26880
27013
  if(retval)*retval=rv;
26881
27014
  return -1;
@@ -26892,17 +27025,17 @@ DLL_EXPORT int lut_scl_scc_blz(char *blz,int *retval,const char **used_bic)
26892
27025
  * # Diese Funktion entspricht der Funktion lut_scl_multi_blz(), nur wird #
26893
27026
  * # die BLZ als Integer-Wert statt als String �bergeben. #
26894
27027
  * # #
26895
- * # Copyright (C) 2018 Michael Plugge <m.plugge@hs-mannheim.de> #
27028
+ * # Copyright (C) 2018 Michael Plugge <konto_check@yahoo.com> #
26896
27029
  * ###########################################################################
26897
27030
  */
26898
27031
  DLL_EXPORT int lut_scl_multi_blz_i(int blz,const char **scl_flags,const char **used_bic,const char **scl_name)
26899
27032
  {
26900
27033
  const char *bic;
26901
- int i,rv;
27034
+ int i,rv,raw;
26902
27035
 
26903
27036
  bic=lut_bic_i(blz,0,&rv);
26904
27037
  if(rv<0)return rv;
26905
- i=scl_idx(bic,&rv);
27038
+ i=scl_idx(bic,&rv,&raw);
26906
27039
  if(rv<0)return rv;
26907
27040
  if(scl_flags)*scl_flags=scl_flags_array[i];
26908
27041
  if(used_bic)*used_bic=scl_bic_array[i];
@@ -26960,6 +27093,7 @@ XI lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)EXC
26960
27093
  XI lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)EXCLUDED
26961
27094
  XI lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int *valid2)EXCLUDED
26962
27095
  XI lut_valid(void)EXCLUDED
27096
+ XI lut_valid_date(char *lut_name,int *v11,int *v12,int *v21,int *v22)EXCLUDED
26963
27097
  XI lut_multiple(char *b,int *cnt,int **p_blz,char ***p_name,char ***p_name_kurz,int **p_plz,char ***p_ort,
26964
27098
  int **p_pan,char ***p_bic,int *p_pz,int **p_nr,char **p_aenderung,char **p_loeschung,int **p_nachfolge_blz,
26965
27099
  int *id,int *cnt_all,int **start_idx)EXCLUDED