konto_check 5.8.0 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 053b8ec3c8f061abf51dda3b7a61869f45240975
4
+ data.tar.gz: c07b4ce5d8d9da73d093069c657fcebdd7f8b799
5
+ SHA512:
6
+ metadata.gz: 6b50d6fa5e45d49234decd9cbe6cd6d3773d7d7f9991450519ab5e7a5c9f4df0e0effdf90882ba67527d9233d14a60d00d94a6f33f792a20c62dfc57381bbcc8
7
+ data.tar.gz: 494a525b1b2416f5b978d77c555371c5578dc5ae7716869b2ce559db65bdd8e77f79b97e040cab32a2a433edaa5f3d0bd64be4379d9c241114cf0deac1167e68
@@ -13,7 +13,7 @@
13
13
  * # wurden aus der aktuellen BLZ-Datei der Deutschen Bundesbank #
14
14
  * # �bernommen. #
15
15
  * # #
16
- * # Copyright (C) 2002-2015 Michael Plugge <m.plugge@hs-mannheim.de> #
16
+ * # Copyright (C) 2002-2017 Michael Plugge <m.plugge@hs-mannheim.de> #
17
17
  * # #
18
18
  * # Dieses Programm ist freie Software; Sie d�rfen es unter den #
19
19
  * # Bedingungen der GNU Lesser General Public License, wie von der Free #
@@ -45,15 +45,15 @@
45
45
  * # im Internet herunterladen. #
46
46
  * ##########################################################################
47
47
  */
48
- #line 332 "ruby/ext/konto_check_raw/konto_check.lxx"
48
+ #line 332 "konto_check.lxx"
49
49
 
50
50
  /* Definitionen und Includes */
51
51
  #ifndef VERSION
52
- #define VERSION "5.8 (final)"
52
+ #define VERSION "5.10 (final)"
53
53
  #define VERSION_MAJOR 5
54
- #define VERSION_MINOR 8
54
+ #define VERSION_MINOR 10
55
55
  #endif
56
- #define VERSION_DATE "2015-08-22"
56
+ #define VERSION_DATE "2017-03-10"
57
57
 
58
58
  #ifndef INCLUDE_KONTO_CHECK_DE
59
59
  #define INCLUDE_KONTO_CHECK_DE 1
@@ -104,8 +104,8 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
104
104
  #define KONTO_CHECK_VARS
105
105
  #include "konto_check.h"
106
106
 
107
- /* Flag, um die �nderungen zum September 2015 zu aktivieren */
108
- static int pz_aenderungen_aktivieren_2015_09;
107
+ /* Flag, um die �nderungen zum M�rz 2017 zu aktivieren */
108
+ static int pz_aenderungen_aktivieren_2017_03;
109
109
 
110
110
  /* falls die Variable verbose_debug gesetzt wird, werden bei einigen
111
111
  * Funktionen mittels perror() zus�tzliche Debuginfos ausgegeben. Die
@@ -242,7 +242,7 @@ static int convert_encoding(char **data,UINT4 *len);
242
242
  #define free(ptr) efree(ptr)
243
243
  #endif
244
244
 
245
- #line 770 "ruby/ext/konto_check_raw/konto_check.lxx"
245
+ #line 770 "konto_check.lxx"
246
246
 
247
247
  /* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
248
248
  #define BLZ_FEHLER 100000000
@@ -378,7 +378,7 @@ static int convert_encoding(char **data,UINT4 *len);
378
378
  */
379
379
  #define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
380
380
  #define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
381
- #line 911 "ruby/ext/konto_check_raw/konto_check.lxx"
381
+ #line 911 "konto_check.lxx"
382
382
 
383
383
  /* einige Makros zur Umwandlung zwischen unsigned int und char */
384
384
  #define UCP (unsigned char*)
@@ -498,7 +498,7 @@ int pz=-777;
498
498
 
499
499
  #define E_START(x)
500
500
  #define E_END(x)
501
- #line 1036 "ruby/ext/konto_check_raw/konto_check.lxx"
501
+ #line 1036 "konto_check.lxx"
502
502
 
503
503
  /* Variable f�r die Methoden 27, 29 und 69 */
504
504
  static const int m10h_digits[4][10]={
@@ -947,7 +947,7 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
947
947
  * ###########################################################################
948
948
  */
949
949
 
950
- #line 1485 "ruby/ext/konto_check_raw/konto_check.lxx"
950
+ #line 1485 "konto_check.lxx"
951
951
  DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
952
952
  {
953
953
  char buffer[SLOT_BUFFER],*ptr;
@@ -985,7 +985,7 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
985
985
  * #############################################################################
986
986
  */
987
987
 
988
- #line 1523 "ruby/ext/konto_check_raw/konto_check.lxx"
988
+ #line 1523 "konto_check.lxx"
989
989
  static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
990
990
  {
991
991
  char buffer[SLOT_BUFFER],*ptr,*cptr;
@@ -1121,7 +1121,7 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
1121
1121
  * ###########################################################################
1122
1122
  */
1123
1123
 
1124
- #line 1659 "ruby/ext/konto_check_raw/konto_check.lxx"
1124
+ #line 1659 "konto_check.lxx"
1125
1125
  DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
1126
1126
  {
1127
1127
  int retval;
@@ -1144,7 +1144,7 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
1144
1144
  * ###########################################################################
1145
1145
  */
1146
1146
 
1147
- #line 1683 "ruby/ext/konto_check_raw/konto_check.lxx"
1147
+ #line 1683 "konto_check.lxx"
1148
1148
  DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
1149
1149
  {
1150
1150
  int retval;
@@ -1166,7 +1166,7 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
1166
1166
  * ###########################################################################
1167
1167
  */
1168
1168
 
1169
- #line 1706 "ruby/ext/konto_check_raw/konto_check.lxx"
1169
+ #line 1706 "konto_check.lxx"
1170
1170
  static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
1171
1171
  {
1172
1172
  char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
@@ -1256,7 +1256,7 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
1256
1256
  FREE(sbuffer);
1257
1257
  RETURN(ERROR_MALLOC);
1258
1258
  }
1259
- #line 1811 "ruby/ext/konto_check_raw/konto_check.lxx"
1259
+ #line 1811 "konto_check.lxx"
1260
1260
 
1261
1261
  if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
1262
1262
  FREE(sbuffer);
@@ -2849,7 +2849,7 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
2849
2849
  * ###########################################################################
2850
2850
  */
2851
2851
 
2852
- #line 3404 "ruby/ext/konto_check_raw/konto_check.lxx"
2852
+ #line 3404 "konto_check.lxx"
2853
2853
  DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
2854
2854
  {
2855
2855
  char *ptr,*ptr1,buffer[128];
@@ -2937,7 +2937,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
2937
2937
 
2938
2938
  /* Infoblocks lesen: 1. Infoblock */
2939
2939
  if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
2940
- #line 3493 "ruby/ext/konto_check_raw/konto_check.lxx"
2940
+ #line 3493 "konto_check.lxx"
2941
2941
  *(ptr+cnt)=0;
2942
2942
  if(valid1){
2943
2943
  for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
@@ -2985,7 +2985,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
2985
2985
 
2986
2986
  /* Infoblocks lesen: 2. Infoblock */
2987
2987
  if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
2988
- #line 3542 "ruby/ext/konto_check_raw/konto_check.lxx"
2988
+ #line 3542 "konto_check.lxx"
2989
2989
  *(ptr+cnt)=0;
2990
2990
  if(valid2){
2991
2991
  for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
@@ -3204,7 +3204,7 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
3204
3204
  qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
3205
3205
  for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
3206
3206
  read_lut_block_int(lut1,0,typ,&len,&data);
3207
- #line 3762 "ruby/ext/konto_check_raw/konto_check.lxx"
3207
+ #line 3762 "konto_check.lxx"
3208
3208
  write_lut_block_int(lut2,typ,len,data);
3209
3209
  FREE(data);
3210
3210
  last_slot=typ;
@@ -3434,7 +3434,7 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
3434
3434
  * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3435
3435
  * ###########################################################################
3436
3436
  */
3437
- #line 3992 "ruby/ext/konto_check_raw/konto_check.lxx"
3437
+ #line 3992 "konto_check.lxx"
3438
3438
  DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
3439
3439
  {
3440
3440
  char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
@@ -3662,7 +3662,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3662
3662
  typ1=typ;
3663
3663
  if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
3664
3664
  retval=read_lut_block_int(lut,0,typ,&len,&data);
3665
- #line 4221 "ruby/ext/konto_check_raw/konto_check.lxx"
3665
+ #line 4221 "konto_check.lxx"
3666
3666
 
3667
3667
  switch(retval){
3668
3668
  case LUT_CRC_ERROR:
@@ -3750,7 +3750,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3750
3750
  if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
3751
3751
  FREE(data);
3752
3752
  i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
3753
- #line 4313 "ruby/ext/konto_check_raw/konto_check.lxx"
3753
+ #line 4313 "konto_check.lxx"
3754
3754
  if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
3755
3755
  typ=LUT2_2_NAME_NAME_KURZ;
3756
3756
  typ1=LUT2_NAME_NAME_KURZ;
@@ -3818,7 +3818,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3818
3818
  if(!(blz=(int *)calloc(lut2_cnt_hs+1,sizeof(int)))
3819
3819
  || (!startidx && !(startidx=(int *)calloc(lut2_cnt_hs,sizeof(int)))) /* Index der Hauptstelle in den gro�en Arrays */
3820
3820
  || (!hs_idx && !(hs_idx=(int *)calloc(lut2_cnt,sizeof(int)))) /* reziprok zu startidx */
3821
- || !(hash=(short int *)calloc(sizeof(short),HASH_BUFFER_SIZE)))
3821
+ || !(hash=(short int *)calloc(HASH_BUFFER_SIZE,sizeof(short))))
3822
3822
  lut2_block_status[typ]=lut2_block_status[typ1]=ERROR_MALLOC;
3823
3823
  else{
3824
3824
  for(i=0,eptr=data+len;ptr<eptr && i<lut2_cnt_hs;i++){
@@ -4346,7 +4346,7 @@ DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *
4346
4346
  * ###########################################################################
4347
4347
  */
4348
4348
 
4349
- #line 4909 "ruby/ext/konto_check_raw/konto_check.lxx"
4349
+ #line 4909 "konto_check.lxx"
4350
4350
  DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
4351
4351
  {
4352
4352
  if(init_status<7 || !current_lutfile){
@@ -5100,7 +5100,7 @@ static int iban_init(void)
5100
5100
  * ###########################################################################
5101
5101
  */
5102
5102
 
5103
- #line 5663 "ruby/ext/konto_check_raw/konto_check.lxx"
5103
+ #line 5663 "konto_check.lxx"
5104
5104
  static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
5105
5105
  {
5106
5106
  char tmp_buffer[16];
@@ -8067,8 +8067,16 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8067
8067
  /* Deutsche Bundesbank */
8068
8068
  case 42:
8069
8069
 
8070
- /* nur 8-stellige Konten sind zur IBAN-Berechnung freigegeben */
8071
- if(*kto!='0' || kto[1]!='0')return NO_IBAN_CALCULATION;
8070
+ /* ab Dezember 2016 sind auch 10-stellige Konten der Form nnn4400001 bis nnn4499999 zul�ssig */
8071
+ if(k1>=10){ /* 10-stellige Kontonummern ab Dezember 2016 */
8072
+ if(kto[3]=='4' && kto[4]=='4' && (kto[5]!='0' || kto[6]!='0' || kto[7]!='0' || kto[8]!='0' || kto[9]!='0'))
8073
+ return OK;
8074
+ else
8075
+ return NO_IBAN_CALCULATION;
8076
+ }
8077
+
8078
+ /* ansonsten sind nur noch 8-stellige Konten freigegeben */
8079
+ if(k1!=0 || k2<10000000)return NO_IBAN_CALCULATION;
8072
8080
 
8073
8081
  /* Konten ohne IBAN-Berechnung: nnn 0 0000 bis nnn 0 0999 */
8074
8082
  if(kto[5]=='0' && kto[6]=='0')return NO_IBAN_CALCULATION;
@@ -8777,7 +8785,7 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8777
8785
  }
8778
8786
  }
8779
8787
 
8780
- #line 9340 "ruby/ext/konto_check_raw/konto_check.lxx"
8788
+ #line 9348 "konto_check.lxx"
8781
8789
  /* Funktion lut_multiple() +���2 */
8782
8790
  /* ###########################################################################
8783
8791
  * # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
@@ -9045,7 +9053,7 @@ DLL_EXPORT int lut_cleanup(void)
9045
9053
  FREE(sort_pz_f);
9046
9054
  FREE(sort_plz);
9047
9055
  FREE(sort_iban_regel);
9048
- #line 9602 "ruby/ext/konto_check_raw/konto_check.lxx"
9056
+ #line 9610 "konto_check.lxx"
9049
9057
  if(name_raw && name_data!=name_raw)
9050
9058
  FREE(name_raw);
9051
9059
  else
@@ -9114,7 +9122,7 @@ DLL_EXPORT int lut_cleanup(void)
9114
9122
  lut_cleanup(); /* neuer Versuch, aufzur�umen */
9115
9123
  RETURN(INIT_FATAL_ERROR);
9116
9124
  }
9117
- #line 9676 "ruby/ext/konto_check_raw/konto_check.lxx"
9125
+ #line 9684 "konto_check.lxx"
9118
9126
  init_status&=1;
9119
9127
  init_in_progress=0;
9120
9128
  return OK;
@@ -9287,10 +9295,8 @@ static void init_atoi_table(void)
9287
9295
  int i,ziffer;
9288
9296
  unsigned long l;
9289
9297
 
9290
- #if 1
9291
- /* �nderungen zum 07.09.2015 aktivieren */
9292
- if(time(NULL)>1441576800 ||0)pz_aenderungen_aktivieren_2015_09=1;
9293
- #endif
9298
+ /* �nderungen zum 06.03.2017 aktivieren */
9299
+ if(time(NULL)>1488754800 ||0)pz_aenderungen_aktivieren_2017_03=1;
9294
9300
 
9295
9301
  /* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
9296
9302
  * angesehen(!), da die Stellenzuordnung sonst nicht mehr stimmt. Ausnahme:
@@ -9555,7 +9561,7 @@ static void init_atoi_table(void)
9555
9561
  lut_block_name2[126]="2. IBAN Regel idx";
9556
9562
  lut_block_name2[127]="2. BIC Hauptst.idx";
9557
9563
  lut_blocklen_max=453;
9558
- #line 9918 "ruby/ext/konto_check_raw/konto_check.lxx"
9564
+ #line 9924 "konto_check.lxx"
9559
9565
  init_status|=1;
9560
9566
  }
9561
9567
 
@@ -9615,7 +9621,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
9615
9621
 
9616
9622
  switch(pz_methode){
9617
9623
 
9618
- #line 9981 "ruby/ext/konto_check_raw/konto_check.lxx"
9624
+ #line 9987 "konto_check.lxx"
9619
9625
  /* Berechnungsmethoden 00 bis 09 +���3
9620
9626
  Berechnung nach der Methode 00 +���4 */
9621
9627
  /*
@@ -11950,7 +11956,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
11950
11956
  * ######################################################################
11951
11957
  */
11952
11958
 
11953
- #line 11992 "ruby/ext/konto_check_raw/konto_check.lxx"
11959
+ #line 11998 "konto_check.lxx"
11954
11960
  case 51:
11955
11961
  if(*(kto+2)=='9'){ /* Ausnahme */
11956
11962
 
@@ -12212,8 +12218,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12212
12218
  else
12213
12219
  return FALSE;
12214
12220
 
12215
- #line 12206 "ruby/ext/konto_check_raw/konto_check.lxx"
12216
- #line 12208 "ruby/ext/konto_check_raw/konto_check.lxx"
12221
+ #line 12212 "konto_check.lxx"
12222
+ #line 12214 "konto_check.lxx"
12217
12223
  /* Berechnung nach der Methode 53 +���4 */
12218
12224
  /*
12219
12225
  * ######################################################################
@@ -12512,7 +12518,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12512
12518
  * # bewerten. #
12513
12519
  * ######################################################################
12514
12520
  */
12515
- #line 12477 "ruby/ext/konto_check_raw/konto_check.lxx"
12521
+ #line 12483 "konto_check.lxx"
12516
12522
  case 57:
12517
12523
  #if DEBUG>0
12518
12524
  if(retvals){
@@ -13158,7 +13164,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
13158
13164
  * # Pr�fzifferberechnung) #
13159
13165
  * ######################################################################
13160
13166
  */
13161
- #line 13057 "ruby/ext/konto_check_raw/konto_check.lxx"
13167
+ #line 13063 "konto_check.lxx"
13162
13168
  case 66:
13163
13169
  #if DEBUG>0
13164
13170
  case 2066:
@@ -13750,15 +13756,18 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
13750
13756
  /* Berechnung nach der Methode 74 +���4 */
13751
13757
  /*
13752
13758
  * ######################################################################
13753
- * # Berechnung nach der Methode 74 (ge�ndert zum 4.6.2007) #
13759
+ * # Berechnung nach der Methode 74 (ge�ndert zum 5.12.2016) #
13754
13760
  * ######################################################################
13755
13761
  * # Modulus 10, Gewichtung 2, 1, 2, 1, 2 ff. #
13756
13762
  * # Die Kontonummer (2- bis 10-stellig) ist durch linksb�ndige #
13757
13763
  * # Nullenauff�llung 10-stellig darzustellen. Die 10. Stelle ist #
13758
- * # per Definition die Pr�fziffer. Die f�r die Berechnung #
13759
- * # relevanten Stellen werden von rechts nach links mit den Ziffern #
13760
- * # 2, 1, 2, 1, 2 ff. multipliziert. Die weitere Berechnung und die #
13761
- * # Ergebnisse entsprechen dem Verfahren 00. #
13764
+ * # per Definition die Pr�fziffer. #
13765
+ * # #
13766
+ * # Variante 1: #
13767
+ * # Die f�r die Berechnung relevanten Stellen werden von rechts nach #
13768
+ * # links mit den Ziffern 2, 1, 2, 1, 2 ff. multipliziert. Die #
13769
+ * # weitere Berechnung und die Ergebnisse entsprechen dem Verfahren #
13770
+ * # 00. #
13762
13771
  * # #
13763
13772
  * # Ausnahme: #
13764
13773
  * # Bei 6-stelligen Kontonummern ist folgende Besonderheit zu #
@@ -13767,8 +13776,16 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
13767
13776
  * # einen Pr�fziffernfehler, so ist eine weitere Berechnung #
13768
13777
  * # vorzunehmen. Hierbei ist die Summe der Produkte auf die n�chste #
13769
13778
  * # Halbdekade hochzurechnen. Die Differenz ist die Pr�fziffer. #
13779
+ * # #
13780
+ * # F�hrt die Berechnung nach Variante 1 zu einem Pr�fzifferfehler, #
13781
+ * # so ist nach Variante 2 zu pr�fen. #
13782
+ * # #
13783
+ * # Variante 2: #
13784
+ * # Modulus 11, Gewichtung 2, 3, 4, 5, 6, 7, 2, 3, 4 #
13785
+ * # Gewichtung und Berechnung erfolgen nach der Methode 04. #
13770
13786
  * ######################################################################
13771
13787
  */
13788
+
13772
13789
  case 74:
13773
13790
  if(kto[0]=='0' && kto[1]=='0' && kto[2]=='0' && kto[3]=='0' && kto[4]=='0'
13774
13791
  && kto[5]=='0' && kto[6]=='0' && kto[7]=='0' && kto[8]=='0')return INVALID_KTO;
@@ -13850,8 +13867,28 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
13850
13867
  if(pz)pz=10-pz;
13851
13868
  CHECK_PZ10;
13852
13869
  }
13853
- else
13854
- return FALSE;
13870
+
13871
+ #if DEBUG>0
13872
+ case 3074:
13873
+ if(retvals){
13874
+ retvals->methode="74c";
13875
+ retvals->pz_methode=3074;
13876
+ }
13877
+ #endif
13878
+ pz = (kto[0]-'0') * 4
13879
+ + (kto[1]-'0') * 3
13880
+ + (kto[2]-'0') * 2
13881
+ + (kto[3]-'0') * 7
13882
+ + (kto[4]-'0') * 6
13883
+ + (kto[5]-'0') * 5
13884
+ + (kto[6]-'0') * 4
13885
+ + (kto[7]-'0') * 3
13886
+ + (kto[8]-'0') * 2;
13887
+
13888
+ MOD_11_176; /* pz%=11 */
13889
+ if(pz)pz=11-pz;
13890
+ INVALID_PZ10;
13891
+ CHECK_PZ10;
13855
13892
 
13856
13893
  /* Berechnung nach der Methode 75 +���4 */
13857
13894
  /*
@@ -15317,9 +15354,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
15317
15354
  retvals->pz_methode=4087;
15318
15355
  }
15319
15356
  #endif
15320
- /* die neue Untermethode wird erst ab 7. September 2015 g�ltig */
15321
- if(!pz_aenderungen_aktivieren_2015_09)return UNDEFINED_SUBMETHOD;
15322
-
15323
15357
  pz = (kto[3]-'0') * 7
15324
15358
  + (kto[4]-'0') * 6
15325
15359
  + (kto[5]-'0') * 5
@@ -16060,7 +16094,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
16060
16094
  #endif
16061
16095
  for(p1=0,ptr=kto+4,i=0;i<5;ptr--,i++)
16062
16096
  p1+=(*ptr-'0')*w93[i];
16063
- *(kto+9)= *(kto+5); /* Pr�fziffer nach Stelle 10 */
16097
+ *(kto+9)= *(kto+5); /* Pr�fziffer nach Stelle 10 */
16064
16098
  }
16065
16099
  }
16066
16100
  #endif
@@ -16794,7 +16828,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
16794
16828
  else{
16795
16829
  for(p1=0,ptr=kto+4,i=0;i<5;ptr--,i++)
16796
16830
  p1+=(*ptr-'0')*w93[i];
16797
- *(kto+9)= *(kto+5); /* Pr�fziffer nach Stelle 10 */
16831
+ *(kto+9)= *(kto+5); /* Pr�fziffer nach Stelle 10 */
16798
16832
  }
16799
16833
  }
16800
16834
  #endif
@@ -20287,6 +20321,95 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
20287
20321
  if(pz)pz=10-pz;
20288
20322
  CHECK_PZ10;
20289
20323
 
20324
+ /* Berechnung nach der Methode E3 +���4 */
20325
+ /*
20326
+ * ######################################################################
20327
+ * # Berechnung nach der Methode E3 #
20328
+ * ######################################################################
20329
+ * # Die Kontonummer ist einschlie�lich der Pr�fziffer 10-stellig, #
20330
+ * # ggf. ist die Kontonummer f�r die Pr�fzifferberechnung durch #
20331
+ * # linksb�ndige Auff�llung mit Nullen 10-stellig darzustellen. #
20332
+ * # #
20333
+ * # Variante 1: #
20334
+ * # Modulus 10, Gewichtung 2, 1, 2, 1, 2, 1, 2, 1, 2 #
20335
+ * # #
20336
+ * # Die Berechnung erfolgt nach der Methode 00. #
20337
+ * # F�hrt die Berechnung nach Variante 1 zu einem Pr�fzifferfehler, #
20338
+ * # so ist nach Variante 2 zu pr�fen. #
20339
+ * # #
20340
+ * # Variante 2: #
20341
+ * # Modulus 10, Gewichtung 2, 1, 2, 1, 2, 1, 2, 1, 2 (modifiziert) #
20342
+ * # #
20343
+ * # Die Berechnung erfolgt nach der Methode 21. #
20344
+ * ######################################################################
20345
+ */
20346
+
20347
+ case 143:
20348
+ #if DEBUG>0
20349
+ if(retvals){
20350
+ retvals->methode="E3";
20351
+ retvals->pz_methode=143;
20352
+ }
20353
+ #endif
20354
+ if(!pz_aenderungen_aktivieren_2017_03)return NOT_DEFINED;
20355
+
20356
+ /* Variante 1: Berechnung nach der Methode 00 */
20357
+ #if DEBUG>0
20358
+ case 1143:
20359
+ if(retvals){
20360
+ retvals->methode="E3a";
20361
+ retvals->pz_methode=1143;
20362
+ }
20363
+ #endif
20364
+ #ifdef __ALPHA
20365
+ pz = ((kto[0]<'5') ? (kto[0]-'0')*2 : (kto[0]-'0')*2-9)
20366
+ + (kto[1]-'0')
20367
+ + ((kto[2]<'5') ? (kto[2]-'0')*2 : (kto[2]-'0')*2-9)
20368
+ + (kto[3]-'0')
20369
+ + ((kto[4]<'5') ? (kto[4]-'0')*2 : (kto[4]-'0')*2-9)
20370
+ + (kto[5]-'0')
20371
+ + ((kto[6]<'5') ? (kto[6]-'0')*2 : (kto[6]-'0')*2-9)
20372
+ + (kto[7]-'0')
20373
+ + ((kto[8]<'5') ? (kto[8]-'0')*2 : (kto[8]-'0')*2-9);
20374
+ #else
20375
+ pz=(kto[1]-'0')+(kto[3]-'0')+(kto[5]-'0')+(kto[7]-'0');
20376
+ if(kto[0]<'5')pz+=(kto[0]-'0')*2; else pz+=(kto[0]-'0')*2-9;
20377
+ if(kto[2]<'5')pz+=(kto[2]-'0')*2; else pz+=(kto[2]-'0')*2-9;
20378
+ if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
20379
+ if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
20380
+ if(kto[8]<'5')pz+=(kto[8]-'0')*2; else pz+=(kto[8]-'0')*2-9;
20381
+ #endif
20382
+ MOD_10_80; /* pz%=10 */
20383
+ if(pz)pz=10-pz;
20384
+ CHECK_PZX10;
20385
+
20386
+ /* Variante 2: Berechnung nach der Methode 21 */
20387
+ #if DEBUG>0
20388
+ case 2143:
20389
+ if(retvals){
20390
+ retvals->methode="E3b";
20391
+ retvals->pz_methode=2143;
20392
+ }
20393
+ #endif
20394
+
20395
+ pz = (kto[0]-'0') * 2
20396
+ + (kto[1]-'0')
20397
+ + (kto[2]-'0') * 2
20398
+ + (kto[3]-'0')
20399
+ + (kto[4]-'0') * 2
20400
+ + (kto[5]-'0')
20401
+ + (kto[6]-'0') * 2
20402
+ + (kto[7]-'0')
20403
+ + (kto[8]-'0') * 2;
20404
+
20405
+ if(pz>=80)pz=pz-80+8;
20406
+ if(pz>=40)pz=pz-40+4;
20407
+ if(pz>=20)pz=pz-20+2;
20408
+ if(pz>=10)pz=pz-10+1;
20409
+ if(pz>=10)pz=pz-10+1;
20410
+ if(pz)pz=10-pz;
20411
+ CHECK_PZ10;
20412
+
20290
20413
  /* nicht abgedeckte F�lle +���3 */
20291
20414
  /*
20292
20415
  * ######################################################################
@@ -20304,7 +20427,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
20304
20427
  return NOT_IMPLEMENTED;
20305
20428
  }
20306
20429
  }
20307
- #line 19060 "ruby/ext/konto_check_raw/konto_check.lxx"
20430
+ #line 19159 "konto_check.lxx"
20308
20431
 
20309
20432
  /*
20310
20433
  * ######################################################################
@@ -20402,7 +20525,7 @@ DLL_EXPORT int kto_check_blz(char *blz,char *kto)
20402
20525
  #if DEBUG>0 /* es werden einige Funktionen benutzt, die nur in der Debug-Variante enthalten sind */
20403
20526
  DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,const char **bic,int *regel,RETVAL *retvals)
20404
20527
  {
20405
- #line 19158 "ruby/ext/konto_check_raw/konto_check.lxx"
20528
+ #line 19257 "konto_check.lxx"
20406
20529
  char *blz_o,buffer[32],kto_o[16],*blz_n,*kto_n,*ptr,*dptr;
20407
20530
  const char *bicp;
20408
20531
  int ret,ret_regel,r;
@@ -20450,7 +20573,7 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
20450
20573
  }
20451
20574
  else /* BLZ und Kto gleich */
20452
20575
  return ret;
20453
- #line 19206 "ruby/ext/konto_check_raw/konto_check.lxx"
20576
+ #line 19305 "konto_check.lxx"
20454
20577
  }
20455
20578
 
20456
20579
  #else /* !DEBUG */
@@ -20600,7 +20723,7 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
20600
20723
  * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20601
20724
  * ###########################################################################
20602
20725
  */
20603
- #line 19356 "ruby/ext/konto_check_raw/konto_check.lxx"
20726
+ #line 19455 "konto_check.lxx"
20604
20727
  DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
20605
20728
  {
20606
20729
  int untermethode,pz_methode;
@@ -20836,7 +20959,7 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
20836
20959
  }
20837
20960
  else
20838
20961
  **user_info_p=0;
20839
- #line 19577 "ruby/ext/konto_check_raw/konto_check.lxx"
20962
+ #line 19676 "konto_check.lxx"
20840
20963
  FREE(prolog);
20841
20964
  return OK;
20842
20965
  }
@@ -20972,23 +21095,23 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
20972
21095
  return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
20973
21096
  case 4: /* Datum der Pr�fziffermethode */
20974
21097
  #if 1
20975
- if(pz_aenderungen_aktivieren_2015_09)
20976
- return "07.09.2015";
21098
+ if(pz_aenderungen_aktivieren_2017_03)
21099
+ return "06.03.2017";
20977
21100
  else
20978
- return "08.06.2015 (Aenderungen vom 07.09.2015 enthalten aber noch nicht aktiviert)";
21101
+ return "05.12.2016 (Aenderungen vom 06.03.2017 enthalten aber noch nicht aktiviert)";
20979
21102
  #else
20980
- return "07.09.2015";
21103
+ return "06.03.2017";
20981
21104
  #endif
20982
21105
  case 5:
20983
- return "07.09.2015";
21106
+ return "05.12.2016";
20984
21107
  case 6:
20985
- return "22. August 2015"; /* Klartext-Datum der Bibliotheksversion */
21108
+ return "3. M�rz 2017"; /* Klartext-Datum der Bibliotheksversion */
20986
21109
  case 7:
20987
21110
  return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
20988
21111
  case 8:
20989
21112
  return "5"; /* Hauptversionszahl */
20990
21113
  case 9:
20991
- return "8"; /* Unterversionszahl */
21114
+ return "10"; /* Unterversionszahl */
20992
21115
  }
20993
21116
  }
20994
21117
 
@@ -21134,7 +21257,7 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
21134
21257
  default:
21135
21258
  break;
21136
21259
  }
21137
- #line 19814 "ruby/ext/konto_check_raw/konto_check.lxx"
21260
+ #line 19913 "konto_check.lxx"
21138
21261
  fputc('\n',out);
21139
21262
  while(--i)fputc('=',out);
21140
21263
  fputc('\n',out);
@@ -21270,7 +21393,7 @@ DLL_EXPORT int rebuild_blzfile(char *inputname,char *outputname,UINT4 set)
21270
21393
  }
21271
21394
  else /* set-Parameter 1 oder 2: LUT-Datei als Eingabedatei */
21272
21395
  if(set>2)set=2; /* set darf nur 0, 1 oder 2 sein; 0 wurde schon behandelt, negative Werte gibt es nicht (UINT4 Parameter) */
21273
- if((ret=kto_check_init_p(inputname,9,set,0))<=0)RETURN(ret);
21396
+ if((ret=kto_check_init_p(inputname,9,set,0))<=0)RETURN(ret);
21274
21397
 
21275
21398
  if(!(out=fopen(outputname,"w"))){
21276
21399
  PRINT_VERBOSE_DEBUG_FILE("fopen");
@@ -21459,7 +21582,7 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
21459
21582
  return iban2bic(iban,retval,b,k);
21460
21583
  }
21461
21584
 
21462
- #line 20139 "ruby/ext/konto_check_raw/konto_check.lxx"
21585
+ #line 20238 "konto_check.lxx"
21463
21586
  /* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
21464
21587
  /* ###########################################################################
21465
21588
  * # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
@@ -22292,7 +22415,7 @@ DLL_EXPORT int ipi_check(char *zweck)
22292
22415
  * # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
22293
22416
  * ###########################################################################
22294
22417
  */
22295
- #line 20972 "ruby/ext/konto_check_raw/konto_check.lxx"
22418
+ #line 21071 "konto_check.lxx"
22296
22419
 
22297
22420
  /* Funktion volltext_zeichen() +���2 */
22298
22421
  /* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
@@ -23084,11 +23207,12 @@ static int binary_search(char *a,char **base,int *sort_a,int cnt,int *unten,int
23084
23207
  l=x+1;
23085
23208
  x=(l+r)/2;
23086
23209
  }
23087
- if(y){
23210
+ if(y){ /* Suchwort im kompletten Bereich nicht gefunden */
23088
23211
  *unten=*anzahl=0;
23089
23212
  return KEY_NOT_FOUND;
23090
23213
  }
23091
23214
 
23215
+ /* Grenzen nach unten und oben bestimmen */
23092
23216
  for(l=x;l>=0 && !(*fkt)(a,base[sort_a[l]]);l--);
23093
23217
  l++;
23094
23218
  *unten=l;
@@ -23138,7 +23262,7 @@ static int qcmp_bic_h(const void *ap,const void *bp)
23138
23262
  return a-b;
23139
23263
  }
23140
23264
 
23141
- #line 21818 "ruby/ext/konto_check_raw/konto_check.lxx"
23265
+ #line 21918 "konto_check.lxx"
23142
23266
 
23143
23267
  /* Funktion qcmp_bic() +���3 */
23144
23268
  static int qcmp_bic(const void *ap,const void *bp)
@@ -23243,7 +23367,7 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
23243
23367
  else
23244
23368
  return a-b;
23245
23369
  }
23246
- #line 21833 "ruby/ext/konto_check_raw/konto_check.lxx"
23370
+ #line 21933 "konto_check.lxx"
23247
23371
 
23248
23372
  /* Funktion init_blzf() +���2
23249
23373
  * Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
@@ -23311,7 +23435,7 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
23311
23435
  }
23312
23436
 
23313
23437
  /* Funktion suche_int1() +���2 */
23314
- #line 21901 "ruby/ext/konto_check_raw/konto_check.lxx"
23438
+ #line 22001 "konto_check.lxx"
23315
23439
  static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
23316
23440
  int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
23317
23441
  {
@@ -23362,7 +23486,7 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
23362
23486
  }
23363
23487
 
23364
23488
  /* Funktion suche_int2() +���2 */
23365
- #line 21952 "ruby/ext/konto_check_raw/konto_check.lxx"
23489
+ #line 22052 "konto_check.lxx"
23366
23490
  static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
23367
23491
  int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
23368
23492
  {
@@ -23527,7 +23651,7 @@ static int *lut_suche_multiple_and(int *such_array,int *start1,int cnt1,int *sta
23527
23651
 
23528
23652
  if(cnt)*cnt=lut2_cnt;
23529
23653
  if(!such_array){
23530
- if(!(such_array=(int *)calloc(sizeof(int),lut2_cnt))){
23654
+ if(!(such_array=(int *)calloc(lut2_cnt,sizeof(int)))){
23531
23655
  if(retval)*retval=ERROR_MALLOC;
23532
23656
  return NULL;
23533
23657
  }
@@ -23592,8 +23716,8 @@ DLL_EXPORT int lut_suche_init(int uniq)
23592
23716
  int i,id;
23593
23717
  LUT_SUCHE_ARR *a;
23594
23718
 
23595
- if(!(a=(LUT_SUCHE_ARR *)calloc(sizeof(LUT_SUCHE_ARR),1)))return ERROR_MALLOC;
23596
- if(!lut_suche_arr && !(lut_suche_arr=(LUT_SUCHE_ARR **)calloc(sizeof(LUT_SUCHE_ARR*),last_lut_suche_idx=100)))return ERROR_MALLOC;
23719
+ if(!(a=(LUT_SUCHE_ARR *)calloc(1,sizeof(LUT_SUCHE_ARR))))return ERROR_MALLOC;
23720
+ if(!lut_suche_arr && !(lut_suche_arr=(LUT_SUCHE_ARR **)calloc(last_lut_suche_idx=100,sizeof(LUT_SUCHE_ARR*))))return ERROR_MALLOC;
23597
23721
  for(i=id=0;i<last_lut_suche_idx;i++)if(!lut_suche_arr[i]){ /* freien Index suchen */
23598
23722
  id=i;
23599
23723
  break;
@@ -23805,6 +23929,41 @@ DLL_EXPORT int lut_suche(int such_id,char *such_cmd,UINT4 *such_cnt,UINT4 **fili
23805
23929
  else
23806
23930
  return OK;
23807
23931
  }
23932
+ #if 0
23933
+ /* Funktion lut_suche_namen_re() +���2 */
23934
+ DLL_EXPORT int lut_suche_namen_re(char *such_str,int *anzahl,int **start_idx,int **zweigstellen_base,
23935
+ char ***base_name,int **blz_base)
23936
+ //#error lut_suche_namen_re hier; zun�chst mal die Suche nach Namen, dann erst Volltext etc.
23937
+ {
23938
+ if(anzahl)*anzahl=0;
23939
+ if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
23940
+ if(lut_id_status==FALSE)return LUT1_FILE_USED;
23941
+ if(!name)return LUT2_NAME_NOT_INITIALIZED;
23942
+ if(base_name)*base_name=name;
23943
+ {
23944
+ typedef struct{
23945
+ char *pbuffer;
23946
+ int *cnt1;
23947
+ int *cnt2;
23948
+ int *special;
23949
+ char *regexp;
23950
+ int caseless;
23951
+ int pcre;
23952
+ int re_last_index;
23953
+ } MATCH_CTX;
23954
+
23955
+ char *buf;
23956
+ int i,j;
23957
+ MATCH_CTX mctx;
23958
+
23959
+ buf=calloc(500,sizeof(int));
23960
+ for (i=j=0;i<500;i++)if(match(such_str,base_name[i],&mctx))buf[j++]=i;
23961
+ }
23962
+
23963
+ fprintf(stderr,"Suchstring: %s\n",such_str);
23964
+ // return suche_str(such_str,anzahl,start_idx,zweigstellen_base,blz_base,&name,&sort_name,qcmp_name,LUT2_NAME_SORT);
23965
+ }
23966
+ #endif
23808
23967
 
23809
23968
  /* Funktion lut_suche_multiple() +���2 */
23810
23969
  DLL_EXPORT int lut_suche_multiple(char *such_str,int uniq,char *such_cmd,UINT4 *anzahl,UINT4 **zweigstellen,UINT4 **blz)
@@ -23846,8 +24005,9 @@ DLL_EXPORT int lut_suche_multiple(char *such_str,int uniq,char *such_cmd,UINT4 *
23846
24005
  }
23847
24006
  else
23848
24007
  idx=j;
24008
+ //#error volltext_zeichen() nur bei suche_volltext???
23849
24009
  while(volltext_zeichen(UCPP &ptr))ptr++;
23850
- typ=LUT_SUCHE_VOLLTEXT;
24010
+ typ=LUT_SUCHE_VOLLTEXT; /* Default-Einstellung */
23851
24011
  i1=i2=0;
23852
24012
  if(*ptr=='-'){ /* Bereich (f�r numerische Suche) angegeben */
23853
24013
  pi2=++ptr;
@@ -23941,7 +24101,7 @@ static int cmp_suche_sort(const void *ap,const void *bp)
23941
24101
  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)
23942
24102
  {
23943
24103
  int i,j,last_idx,*idx_a,*cnt_o;
23944
- #line 22532 "ruby/ext/konto_check_raw/konto_check.lxx"
24104
+ #line 22668 "konto_check.lxx"
23945
24105
 
23946
24106
  if(idx_op)*idx_op=NULL;
23947
24107
  if(cnt_op)*cnt_op=NULL;
@@ -24023,7 +24183,7 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
24023
24183
  return OK;
24024
24184
  }
24025
24185
 
24026
- #line 22615 "ruby/ext/konto_check_raw/konto_check.lxx"
24186
+ #line 22751 "konto_check.lxx"
24027
24187
  /* Funktion lut_suche_volltext() +���2 */
24028
24188
  DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
24029
24189
  int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
@@ -24153,7 +24313,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
24153
24313
  return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
24154
24314
  }
24155
24315
 
24156
- #line 22765 "ruby/ext/konto_check_raw/konto_check.lxx"
24316
+ #line 22901 "konto_check.lxx"
24157
24317
  /* Funktion lut_suche_bic() +���2 */
24158
24318
  DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
24159
24319
  char ***base_name,int **blz_base)
@@ -24244,7 +24404,7 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
24244
24404
  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);
24245
24405
  }
24246
24406
 
24247
- #line 22798 "ruby/ext/konto_check_raw/konto_check.lxx"
24407
+ #line 22934 "konto_check.lxx"
24248
24408
 
24249
24409
  /* Funktion lut_suche_bic_h() +���2 */
24250
24410
  DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
@@ -24630,7 +24790,7 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
24630
24790
  {
24631
24791
  return iban_fkt_s(iban,filiale,retval,lut_ort);
24632
24792
  }
24633
- #line 22887 "ruby/ext/konto_check_raw/konto_check.lxx"
24793
+ #line 23023 "konto_check.lxx"
24634
24794
 
24635
24795
  static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
24636
24796
  {
@@ -25575,7 +25735,7 @@ static int convert_encoding(char **data,UINT4 *len)
25575
25735
  DLL_EXPORT const char *pz2str(int pz,int *ret)
25576
25736
  {
25577
25737
  if(ret){
25578
- if(pz%1000>=143)
25738
+ if(pz%1000>=144)
25579
25739
  *ret=NOT_DEFINED;
25580
25740
  else
25581
25741
  *ret=OK;
@@ -25724,6 +25884,7 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
25724
25884
  case 140: return "E0";
25725
25885
  case 141: return "E1";
25726
25886
  case 142: return "E2";
25887
+ case 143: return "E3";
25727
25888
  case 1013: return "13a";
25728
25889
  case 1049: return "49a";
25729
25890
  case 1050: return "50a";
@@ -25789,6 +25950,7 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
25789
25950
  case 1136: return "D6a";
25790
25951
  case 1138: return "D8a";
25791
25952
  case 1139: return "D9a";
25953
+ case 1143: return "E3a";
25792
25954
  case 2013: return "13b";
25793
25955
  case 2049: return "49b";
25794
25956
  case 2050: return "50b";
@@ -25854,10 +26016,12 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
25854
26016
  case 2136: return "D6b";
25855
26017
  case 2138: return "D8b";
25856
26018
  case 2139: return "D9b";
26019
+ case 2143: return "E3b";
25857
26020
  case 3051: return "51c";
25858
26021
  case 3057: return "57c";
25859
26022
  case 3068: return "68c";
25860
26023
  case 3073: return "73c";
26024
+ case 3074: return "74c";
25861
26025
  case 3075: return "75c";
25862
26026
  case 3080: return "80c";
25863
26027
  case 3081: return "81c";
@@ -25910,7 +26074,7 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
25910
26074
  default: return "???";
25911
26075
  }
25912
26076
  }
25913
- #line 23842 "ruby/ext/konto_check_raw/konto_check.lxx"
26077
+ #line 23978 "konto_check.lxx"
25914
26078
 
25915
26079
  /* Funktion lut_keine_iban_berechnung() +���1 */
25916
26080
  /*
@@ -26025,7 +26189,7 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
26025
26189
  /* Funktion pz_aenderungen_enable() +���1 */
26026
26190
  /* ###########################################################################
26027
26191
  * # Die Funktion pz_aenderungen_enable() dient dazu, den Status des Flags #
26028
- * # pz_aenderungen_aktivieren_2015_09 abzufragen bzw. zu setzen. Falls die Variable #
26192
+ * # pz_aenderungen_aktivieren_2017_03 abzufragen bzw. zu setzen. Falls die Variable #
26029
26193
  * # set 1 ist, werden die �nderungen aktiviert, falls sie 0 ist, werden #
26030
26194
  * # die �nderungen deaktiviert. Bei allen anderen Werten wird das aktuelle #
26031
26195
  * # Flag nicht ver�ndert, sondern nur der Status zur�ckgegeben. #
@@ -26041,8 +26205,8 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
26041
26205
 
26042
26206
  DLL_EXPORT int pz_aenderungen_enable(int set)
26043
26207
  {
26044
- if(set==0 || set==1)pz_aenderungen_aktivieren_2015_09=set;
26045
- return pz_aenderungen_aktivieren_2015_09;
26208
+ if(set==0 || set==1)pz_aenderungen_aktivieren_2017_03=set;
26209
+ return pz_aenderungen_aktivieren_2017_03;
26046
26210
  }
26047
26211
 
26048
26212
  #if DEBUG>0
@@ -26074,7 +26238,7 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
26074
26238
  #endif
26075
26239
 
26076
26240
 
26077
- #line 24006 "ruby/ext/konto_check_raw/konto_check.lxx"
26241
+ #line 24142 "konto_check.lxx"
26078
26242
  /* Funktionen *_id() +���1 */
26079
26243
  /* ###########################################################################
26080
26244
  * # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
@@ -26261,7 +26425,7 @@ static int kc_ptr2id(char *ptr,int *handle,int release_mem)
26261
26425
 
26262
26426
  *handle=-1; /* f�r evl. malloc-Fehler vorbelegen */
26263
26427
  if(!h_cnt){
26264
- if(!(handle_ptr=(char **)calloc(sizeof(char*),HANDLE_CNT_INCREMENT)) || !(handle_free=(int*)calloc(sizeof(int),HANDLE_CNT_INCREMENT)))return ERROR_MALLOC;
26428
+ if(!(handle_ptr=(char **)calloc(HANDLE_CNT_INCREMENT,sizeof(char*))) || !(handle_free=(int*)calloc(HANDLE_CNT_INCREMENT,sizeof(int))))return ERROR_MALLOC;
26265
26429
  h_cnt=HANDLE_CNT_INCREMENT;
26266
26430
  }
26267
26431
  if(!release_mem) /* Handle f�r fixen String, suchen ob er schon vergeben wurde */
@@ -10,7 +10,7 @@
10
10
  * # Verwendung in anderen Programmen bzw. Programmiersprachen benutzt #
11
11
  * # werden. #
12
12
  * # #
13
- * # Copyright (C) 2002-2015 Michael Plugge <m.plugge@hs-mannheim.de> #
13
+ * # Copyright (C) 2002-2017 Michael Plugge <m.plugge@hs-mannheim.de> #
14
14
  * # #
15
15
  * # Dieses Programm ist freie Software; Sie d�rfen es unter den #
16
16
  * # Bedingungen der GNU Lesser General Public License, wie von der Free #
@@ -77,7 +77,10 @@
77
77
  * einige Arrays damit initialisiert werden.
78
78
  */
79
79
 
80
- #define DEFAULT_ENCODING 1
80
+ #ifndef DEFAULT_ENCODING
81
+ # define DEFAULT_ENCODING 1
82
+ #endif
83
+
81
84
  #define KEEP_RAW_DATA 1
82
85
 
83
86
  /*
@@ -328,6 +331,8 @@ extern const char *lut2_feld_namen[256];
328
331
  */
329
332
 
330
333
  #undef FALSE
334
+ #define INVALID_REGULAR_EXPRESSION_CNT -152
335
+ #define INVALID_REGULAR_EXPRESSION -151
331
336
  #define INVALID_HANDLE -150
332
337
  #define INVALID_BIQ_INDEX -149
333
338
  #define ARRAY_INDEX_OUT_OF_RANGE -148
@@ -479,7 +484,7 @@ extern const char *lut2_feld_namen[256];
479
484
  #define OK_KTO_REPLACED_NO_PZ 24
480
485
  #define OK_UNTERKONTO_ATTACHED 25
481
486
  #define OK_SHORT_BIC_USED 26
482
- #line 276 "konto_check_h.lx"
487
+ #line 279 "konto_check_h.lx"
483
488
 
484
489
  #define MAX_BLZ_CNT 30000 /* maximale Anzahl BLZ's in generate_lut() */
485
490
 
@@ -811,7 +811,7 @@ static VALUE lut_blocks_rb(int argc,VALUE* argv,VALUE self)
811
811
  */
812
812
  static VALUE lut_blocks1_rb(int argc,VALUE* argv,VALUE self)
813
813
  {
814
- rb_scan_args(argc,argv,"0");
814
+ rb_scan_args(argc,argv,"0",NULL);
815
815
  return INT2FIX(lut_blocks(0,NULL,NULL,NULL));
816
816
  }
817
817
 
@@ -4354,11 +4354,11 @@ void Init_konto_check_raw()
4354
4354
  /*
4355
4355
  * This is a C/Ruby library to check the validity of German Bank Account
4356
4356
  * Numbers. All currently defined test methods by Deutsche Bundesbank
4357
- * (00 to E2) are implemented.
4357
+ * (00 to E3) are implemented.
4358
4358
  *
4359
4359
  * <b>ATTENTION:</b> There are a few important changes in the API between
4360
4360
  * version 0.0.2 (version by Peter Horn/Provideal), version 0.0.6 (jeanmartin)
4361
- * and this version (V. 5.8 from 2015-08-22):
4361
+ * and this version (V. 5.10 from 2017-03-10):
4362
4362
  *
4363
4363
  * * The function KontoCheck::load_bank_data() is no longer used; it is
4364
4364
  * replaced by KontoCheck::init() and KontoCheck::generate_lutfile().
@@ -4540,6 +4540,10 @@ void Init_konto_check_raw()
4540
4540
  rb_define_module_function(KontoCheck,"load_bank_data",load_bank_data,1);
4541
4541
 
4542
4542
  /* Rückgabewerte der konto_check Bibliothek */
4543
+ /* (-152) Ungültiger Zähler in regulärem Ausdruck (innerhalb von {}) */
4544
+ rb_define_const(KontoCheck,"INVALID_REGULAR_EXPRESSION_CNT",INT2FIX(INVALID_REGULAR_EXPRESSION_CNT));
4545
+ /* (-151) Ungültiger regulärer Ausdruck (enthält zwei Zeichen aus [+?*] nacheinander) */
4546
+ rb_define_const(KontoCheck,"INVALID_REGULAR_EXPRESSION",INT2FIX(INVALID_REGULAR_EXPRESSION));
4543
4547
  /* (-150) Ungültiges Handle angegeben */
4544
4548
  rb_define_const(KontoCheck,"INVALID_HANDLE",INT2FIX(INVALID_HANDLE));
4545
4549
  /* (-149) Ungültiger Index für die biq_*() Funktionen */
@@ -48,6 +48,8 @@ DLL_EXPORT const char *kto_check_retval2txt(int retval)
48
48
  DLL_EXPORT const char *kto_check_retval2iso(int retval)
49
49
  {
50
50
  switch(retval){
51
+ case INVALID_REGULAR_EXPRESSION_CNT: return "Ung�ltiger Z�hler in regul�rem Ausdruck (innerhalb von {})";
52
+ case INVALID_REGULAR_EXPRESSION: return "Ung�ltiger regul�rer Ausdruck (enth�lt zwei Zeichen aus [+?*] nacheinander)";
51
53
  case INVALID_HANDLE: return "Ung�ltiges Handle angegeben";
52
54
  case INVALID_BIQ_INDEX: return "Ung�ltiger Index f�r die biq_*() Funktionen";
53
55
  case ARRAY_INDEX_OUT_OF_RANGE: return "Der Array-Index liegt au�erhalb des g�ltigen Bereichs";
@@ -216,6 +218,8 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
216
218
  DLL_EXPORT const char *kto_check_retval2dos(int retval)
217
219
  {
218
220
  switch(retval){
221
+ case INVALID_REGULAR_EXPRESSION_CNT: return "Ung�ltiger Z� hler in regul� rem Ausdruck (innerhalb von {})";
222
+ case INVALID_REGULAR_EXPRESSION: return "Ung�ltiger regul� rer Ausdruck (enth� lt zwei Zeichen aus [+?*] nacheinander)";
219
223
  case INVALID_HANDLE: return "Ung�ltiges Handle angegeben";
220
224
  case INVALID_BIQ_INDEX: return "Ung�ltiger Index f�r die biq_*() Funktionen";
221
225
  case ARRAY_INDEX_OUT_OF_RANGE: return "Der Array-Index liegt au�erhalb des g�ltigen Bereichs";
@@ -384,6 +388,8 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
384
388
  DLL_EXPORT const char *kto_check_retval2html(int retval)
385
389
  {
386
390
  switch(retval){
391
+ case INVALID_REGULAR_EXPRESSION_CNT: return "Ung&uuml;ltiger Z&auml;hler in regul&auml;rem Ausdruck (innerhalb von {})";
392
+ case INVALID_REGULAR_EXPRESSION: return "Ung&uuml;ltiger regul&auml;rer Ausdruck (enth&auml;lt zwei Zeichen aus [+?*] nacheinander)";
387
393
  case INVALID_HANDLE: return "Ung&uuml;ltiges Handle angegeben";
388
394
  case INVALID_BIQ_INDEX: return "Ung&uuml;ltiger Index f&uuml;r die biq_*() Funktionen";
389
395
  case ARRAY_INDEX_OUT_OF_RANGE: return "Der Array-Index liegt au&szlig;erhalb des g&uuml;ltigen Bereichs";
@@ -552,6 +558,8 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
552
558
  DLL_EXPORT const char *kto_check_retval2utf8(int retval)
553
559
  {
554
560
  switch(retval){
561
+ case INVALID_REGULAR_EXPRESSION_CNT: return "Ungültiger Zähler in regulärem Ausdruck (innerhalb von {})";
562
+ case INVALID_REGULAR_EXPRESSION: return "Ungültiger regulärer Ausdruck (enthält zwei Zeichen aus [+?*] nacheinander)";
555
563
  case INVALID_HANDLE: return "Ungültiges Handle angegeben";
556
564
  case INVALID_BIQ_INDEX: return "Ungültiger Index für die biq_*() Funktionen";
557
565
  case ARRAY_INDEX_OUT_OF_RANGE: return "Der Array-Index liegt außerhalb des gültigen Bereichs";
@@ -720,6 +728,8 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
720
728
  DLL_EXPORT const char *kto_check_retval2txt_short(int retval)
721
729
  {
722
730
  switch(retval){
731
+ case INVALID_REGULAR_EXPRESSION_CNT: return "INVALID_REGULAR_EXPRESSION_CNT";
732
+ case INVALID_REGULAR_EXPRESSION: return "INVALID_REGULAR_EXPRESSION";
723
733
  case INVALID_HANDLE: return "INVALID_HANDLE";
724
734
  case INVALID_BIQ_INDEX: return "INVALID_BIQ_INDEX";
725
735
  case ARRAY_INDEX_OUT_OF_RANGE: return "ARRAY_INDEX_OUT_OF_RANGE";
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: konto_check
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.0
5
- prerelease:
4
+ version: 5.10.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Provideal Systems GmbH
@@ -11,22 +10,20 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2015-09-13 00:00:00.000000000 Z
13
+ date: 2017-03-10 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: thoughtbot-shoulda
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - ">="
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :development
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - ">="
30
27
  - !ruby/object:Gem::Version
31
28
  version: '0'
32
29
  description: Check whether a certain bic/account-no-combination or an IBAN can possibly
@@ -42,39 +39,37 @@ extra_rdoc_files:
42
39
  - README.textile
43
40
  - ext/konto_check_raw/konto_check_raw_ruby.c
44
41
  files:
42
+ - LICENSE
43
+ - README.textile
45
44
  - ext/konto_check_raw/extconf.rb
46
45
  - ext/konto_check_raw/konto_check.c
47
46
  - ext/konto_check_raw/konto_check.h
48
47
  - ext/konto_check_raw/konto_check_raw_ruby.c
49
48
  - ext/konto_check_raw/retvals.h
50
49
  - lib/konto_check.rb
51
- - LICENSE
52
- - README.textile
53
50
  homepage: http://kontocheck.sourceforge.net
54
51
  licenses: []
52
+ metadata: {}
55
53
  post_install_message:
56
54
  rdoc_options: []
57
55
  require_paths:
58
56
  - lib
59
57
  required_ruby_version: !ruby/object:Gem::Requirement
60
- none: false
61
58
  requirements:
62
- - - ! '>='
59
+ - - ">="
63
60
  - !ruby/object:Gem::Version
64
61
  version: '0'
65
62
  required_rubygems_version: !ruby/object:Gem::Requirement
66
- none: false
67
63
  requirements:
68
- - - ! '>='
64
+ - - ">="
69
65
  - !ruby/object:Gem::Version
70
66
  version: '0'
71
67
  requirements: []
72
68
  rubyforge_project:
73
- rubygems_version: 1.8.25
69
+ rubygems_version: 2.5.2
74
70
  signing_key:
75
- specification_version: 3
71
+ specification_version: 4
76
72
  summary: Checking german BICs/Bank account numbers and IBANs, generate IBANs, retrieve
77
73
  information about german Banks, search for Banks matching certain criteria, check
78
74
  IBAN or BIC, convert bic/account to IBAN and BIC
79
75
  test_files: []
80
- has_rdoc: