konto_check 6.00.0 → 6.01.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c83fbdc6f470077ee385b346063ab10f155c75e8
4
- data.tar.gz: 0144f5cd1d75acfcc684fc50c9c116e42dc45d5f
3
+ metadata.gz: e0b9ecf2e4612120b79bfbcbb3adbb22c3ded7e6
4
+ data.tar.gz: 4684d17c54d69b0cc1b01672918ce46f53ca598d
5
5
  SHA512:
6
- metadata.gz: 6db21c82515a82580558d6f445e99fd50f018d21d3d99a459f7e39a8aada42eaaf15169c7d6c6573a049bc9da9a34525e69647b5663e5d138e064ba73435f285
7
- data.tar.gz: 56fa5f762eede0fcb4e8b52a4268bca4c8be618b3feaec3057c87a53b84fe4768165d733299db1f1588744402fb40582b1411304c417d7f9729956ae27039800
6
+ metadata.gz: 156dc5a16fb7ed68ef304ca003c759e53a49779f581044f49a0fdedb394559b41925702cf0b2a30038bdb4a42b7ceb44c45e176a18fd9a17c0631242ded86adf
7
+ data.tar.gz: fd5eb01b83dccb3681c159081dfd845859ec7deb1ae38208e49c030374845f277ee898946158533c859735a1231f4ca295237194b0e525938d760c3067acda7e
@@ -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.00 (final)"
51
+ #define VERSION "6.01 (final)"
53
52
  #define VERSION_MAJOR 6
54
- #define VERSION_MINOR 00
53
+ #define VERSION_MINOR 01
55
54
  #endif
56
- #define VERSION_DATE "2017-06-13"
55
+ #define VERSION_DATE "2017-08-13"
57
56
 
58
57
  #ifndef INCLUDE_KONTO_CHECK_DE
59
58
  #define INCLUDE_KONTO_CHECK_DE 1
@@ -104,8 +103,8 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
104
103
  #define KONTO_CHECK_VARS
105
104
  #include "konto_check.h"
106
105
 
107
- /* Flag, um die �nderungen zum Juni 2017 zu aktivieren */
108
- static int pz_aenderungen_aktivieren_2017_06;
106
+ /* Flag, um die �nderungen zum September 2017 zu aktivieren */
107
+ static int pz_aenderungen_aktivieren_2017_09;
109
108
 
110
109
  /* falls die Variable verbose_debug gesetzt wird, werden bei einigen
111
110
  * Funktionen mittels perror() zus�tzliche Debuginfos ausgegeben. Die
@@ -242,7 +241,6 @@ static int convert_encoding(char **data,UINT4 *len);
242
241
  #define free(ptr) efree(ptr)
243
242
  #endif
244
243
 
245
- #line 770 "konto_check.lxx"
246
244
 
247
245
  /* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
248
246
  #define BLZ_FEHLER 100000000
@@ -378,7 +376,6 @@ static int convert_encoding(char **data,UINT4 *len);
378
376
  */
379
377
  #define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
380
378
  #define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
381
- #line 911 "konto_check.lxx"
382
379
 
383
380
  /* einige Makros zur Umwandlung zwischen unsigned int und char */
384
381
  #define UCP (unsigned char*)
@@ -498,7 +495,6 @@ int pz=-777;
498
495
 
499
496
  #define E_START(x)
500
497
  #define E_END(x)
501
- #line 1036 "konto_check.lxx"
502
498
 
503
499
  /* Variable f�r die Methoden 27, 29 und 69 */
504
500
  static const int m10h_digits[4][10]={
@@ -947,7 +943,6 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
947
943
  * ###########################################################################
948
944
  */
949
945
 
950
- #line 1485 "konto_check.lxx"
951
946
  DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
952
947
  {
953
948
  char buffer[SLOT_BUFFER],*ptr;
@@ -985,7 +980,6 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
985
980
  * #############################################################################
986
981
  */
987
982
 
988
- #line 1523 "konto_check.lxx"
989
983
  static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
990
984
  {
991
985
  char buffer[SLOT_BUFFER],*ptr,*cptr;
@@ -1121,7 +1115,6 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
1121
1115
  * ###########################################################################
1122
1116
  */
1123
1117
 
1124
- #line 1659 "konto_check.lxx"
1125
1118
  DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
1126
1119
  {
1127
1120
  int retval;
@@ -1144,7 +1137,6 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
1144
1137
  * ###########################################################################
1145
1138
  */
1146
1139
 
1147
- #line 1683 "konto_check.lxx"
1148
1140
  DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
1149
1141
  {
1150
1142
  int retval;
@@ -1166,7 +1158,6 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
1166
1158
  * ###########################################################################
1167
1159
  */
1168
1160
 
1169
- #line 1706 "konto_check.lxx"
1170
1161
  static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
1171
1162
  {
1172
1163
  char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
@@ -1256,7 +1247,6 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
1256
1247
  FREE(sbuffer);
1257
1248
  RETURN(ERROR_MALLOC);
1258
1249
  }
1259
- #line 1811 "konto_check.lxx"
1260
1250
 
1261
1251
  if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
1262
1252
  FREE(sbuffer);
@@ -2849,7 +2839,6 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
2849
2839
  * ###########################################################################
2850
2840
  */
2851
2841
 
2852
- #line 3404 "konto_check.lxx"
2853
2842
  DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
2854
2843
  {
2855
2844
  char *ptr,*ptr1,buffer[128];
@@ -2937,7 +2926,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
2937
2926
 
2938
2927
  /* Infoblocks lesen: 1. Infoblock */
2939
2928
  if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
2940
- #line 3493 "konto_check.lxx"
2941
2929
  *(ptr+cnt)=0;
2942
2930
  if(valid1){
2943
2931
  for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
@@ -2985,7 +2973,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
2985
2973
 
2986
2974
  /* Infoblocks lesen: 2. Infoblock */
2987
2975
  if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
2988
- #line 3542 "konto_check.lxx"
2989
2976
  *(ptr+cnt)=0;
2990
2977
  if(valid2){
2991
2978
  for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
@@ -3204,7 +3191,6 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
3204
3191
  qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
3205
3192
  for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
3206
3193
  read_lut_block_int(lut1,0,typ,&len,&data);
3207
- #line 3762 "konto_check.lxx"
3208
3194
  write_lut_block_int(lut2,typ,len,data);
3209
3195
  FREE(data);
3210
3196
  last_slot=typ;
@@ -3434,7 +3420,6 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
3434
3420
  * # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
3435
3421
  * ###########################################################################
3436
3422
  */
3437
- #line 3992 "konto_check.lxx"
3438
3423
  DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
3439
3424
  {
3440
3425
  char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
@@ -3662,7 +3647,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3662
3647
  typ1=typ;
3663
3648
  if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
3664
3649
  retval=read_lut_block_int(lut,0,typ,&len,&data);
3665
- #line 4221 "konto_check.lxx"
3666
3650
 
3667
3651
  switch(retval){
3668
3652
  case LUT_CRC_ERROR:
@@ -3750,7 +3734,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
3750
3734
  if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
3751
3735
  FREE(data);
3752
3736
  i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
3753
- #line 4313 "konto_check.lxx"
3754
3737
  if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
3755
3738
  typ=LUT2_2_NAME_NAME_KURZ;
3756
3739
  typ1=LUT2_NAME_NAME_KURZ;
@@ -4346,7 +4329,6 @@ DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *
4346
4329
  * ###########################################################################
4347
4330
  */
4348
4331
 
4349
- #line 4909 "konto_check.lxx"
4350
4332
  DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
4351
4333
  {
4352
4334
  if(init_status<7 || !current_lutfile){
@@ -5101,7 +5083,6 @@ static int iban_init(void)
5101
5083
  * ###########################################################################
5102
5084
  */
5103
5085
 
5104
- #line 5664 "konto_check.lxx"
5105
5086
  static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
5106
5087
  {
5107
5088
  char tmp_buffer[16];
@@ -8173,6 +8154,9 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8173
8154
  /* SEB AG */
8174
8155
  case 45:
8175
8156
 
8157
+ /* ab September 2017 entf�llt die Regel 45, bleibt jedoch frei */
8158
+ if(pz_aenderungen_aktivieren_2017_09)return OK;
8159
+
8176
8160
  /* Einer nach der Standard IBAN-Regel ermittelten IBAN ist stets
8177
8161
  * der BIC ESSEDE5FXXX zuzuordnen.
8178
8162
  */
@@ -8527,170 +8511,8 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8527
8511
  /* Evangelische Darlehnsgenossenschaft eG */
8528
8512
  case 54:
8529
8513
  /* ab Juni 2017 entf�llt die Regel 54, bleibt jedoch frei */
8530
- if(pz_aenderungen_aktivieren_2017_06)return OK;
8531
-
8532
- /* Spendenkonten */
8533
- if(k1==0)switch(k2){
8534
- case 500: strcpy(kto,"0000500500"); RETURN_OK_KTO_REPLACED;
8535
- case 502: strcpy(kto,"0000502502"); RETURN_OK_KTO_REPLACED;
8536
- case 18067: strcpy(kto,"0000180670"); RETURN_OK_KTO_REPLACED;
8537
- case 484848: strcpy(kto,"0000484849"); RETURN_OK_KTO_REPLACED;
8538
- case 636306: strcpy(kto,"0000063606"); RETURN_OK_KTO_REPLACED;
8539
- case 760440: strcpy(kto,"0000160440"); RETURN_OK_KTO_REPLACED;
8540
- case 1018413: strcpy(kto,"0010108413"); RETURN_OK_KTO_REPLACED;
8541
- case 2601577: strcpy(kto,"0026015776"); RETURN_OK_KTO_REPLACED;
8542
- case 5005000: strcpy(kto,"0000500500"); RETURN_OK_KTO_REPLACED;
8543
- case 10796740: strcpy(kto,"0010796743"); RETURN_OK_KTO_REPLACED;
8544
- case 11796740: strcpy(kto,"0011796743"); RETURN_OK_KTO_REPLACED;
8545
- case 12796740: strcpy(kto,"0012796743"); RETURN_OK_KTO_REPLACED;
8546
- case 13796740: strcpy(kto,"0013796743"); RETURN_OK_KTO_REPLACED;
8547
- case 14796740: strcpy(kto,"0014796743"); RETURN_OK_KTO_REPLACED;
8548
- case 15796740: strcpy(kto,"0015796743"); RETURN_OK_KTO_REPLACED;
8549
- case 16307000: strcpy(kto,"0163107000"); RETURN_OK_KTO_REPLACED;
8550
- case 16610700: strcpy(kto,"0166107000"); RETURN_OK_KTO_REPLACED;
8551
- case 16796740: strcpy(kto,"0016796743"); RETURN_OK_KTO_REPLACED;
8552
- case 17796740: strcpy(kto,"0017796743"); RETURN_OK_KTO_REPLACED;
8553
- case 18796740: strcpy(kto,"0018796743"); RETURN_OK_KTO_REPLACED;
8554
- case 19796740: strcpy(kto,"0019796743"); RETURN_OK_KTO_REPLACED;
8555
- case 20796740: strcpy(kto,"0020796743"); RETURN_OK_KTO_REPLACED;
8556
- case 21796740: strcpy(kto,"0021796743"); RETURN_OK_KTO_REPLACED;
8557
- case 22796740: strcpy(kto,"0022796743"); RETURN_OK_KTO_REPLACED;
8558
- case 23796740: strcpy(kto,"0023796743"); RETURN_OK_KTO_REPLACED;
8559
- case 24796740: strcpy(kto,"0024796743"); RETURN_OK_KTO_REPLACED;
8560
- case 25796740: strcpy(kto,"0025796743"); RETURN_OK_KTO_REPLACED;
8561
- case 26610700: strcpy(kto,"0266107000"); RETURN_OK_KTO_REPLACED;
8562
- case 26796740: strcpy(kto,"0026796743"); RETURN_OK_KTO_REPLACED;
8563
- case 27796740: strcpy(kto,"0027796743"); RETURN_OK_KTO_REPLACED;
8564
- case 28796740: strcpy(kto,"0028796743"); RETURN_OK_KTO_REPLACED;
8565
- case 29796740: strcpy(kto,"0029796743"); RETURN_OK_KTO_REPLACED;
8566
- case 45796740: strcpy(kto,"0045796743"); RETURN_OK_KTO_REPLACED;
8567
- case 50796740: strcpy(kto,"0050796743"); RETURN_OK_KTO_REPLACED;
8568
- case 51796740: strcpy(kto,"0051796743"); RETURN_OK_KTO_REPLACED;
8569
- case 52796740: strcpy(kto,"0052796743"); RETURN_OK_KTO_REPLACED;
8570
- case 53796740: strcpy(kto,"0053796743"); RETURN_OK_KTO_REPLACED;
8571
- case 54796740: strcpy(kto,"0054796743"); RETURN_OK_KTO_REPLACED;
8572
- case 55796740: strcpy(kto,"0055796743"); RETURN_OK_KTO_REPLACED;
8573
- case 56796740: strcpy(kto,"0056796743"); RETURN_OK_KTO_REPLACED;
8574
- case 57796740: strcpy(kto,"0057796743"); RETURN_OK_KTO_REPLACED;
8575
- case 58796740: strcpy(kto,"0058796743"); RETURN_OK_KTO_REPLACED;
8576
- case 59796740: strcpy(kto,"0059796743"); RETURN_OK_KTO_REPLACED;
8577
- case 60796740: strcpy(kto,"0060796743"); RETURN_OK_KTO_REPLACED;
8578
- case 61796740: strcpy(kto,"0061796743"); RETURN_OK_KTO_REPLACED;
8579
- case 62796740: strcpy(kto,"0062796743"); RETURN_OK_KTO_REPLACED;
8580
- case 63796740: strcpy(kto,"0063796743"); RETURN_OK_KTO_REPLACED;
8581
- case 64796740: strcpy(kto,"0064796743"); RETURN_OK_KTO_REPLACED;
8582
- case 65796740: strcpy(kto,"0065796743"); RETURN_OK_KTO_REPLACED;
8583
- case 66796740: strcpy(kto,"0066796743"); RETURN_OK_KTO_REPLACED;
8584
- case 67796740: strcpy(kto,"0067796743"); RETURN_OK_KTO_REPLACED;
8585
- case 68796740: strcpy(kto,"0068796743"); RETURN_OK_KTO_REPLACED;
8586
- case 69796740: strcpy(kto,"0069796743"); RETURN_OK_KTO_REPLACED;
8587
- default: break;
8588
- }
8589
- else if(k1==17 && k2==61070000){strcpy(kto,"0176107000"); RETURN_OK_KTO_REPLACED;}
8590
- else if(k1==22 && k2==10531180){strcpy(kto,"0201053180"); RETURN_OK_KTO_REPLACED;}
8514
+ return OK;
8591
8515
 
8592
- if(version>0){ /* g�ltig ab 3.3.2014 */
8593
- if(k1==0)switch(k2){
8594
- case 624044: return OK_IBAN_WITHOUT_KC_TEST;
8595
- case 4063060: return OK_IBAN_WITHOUT_KC_TEST;
8596
- case 20111908: return OK_IBAN_WITHOUT_KC_TEST;
8597
- case 20211908: return OK_IBAN_WITHOUT_KC_TEST;
8598
- case 20311908: return OK_IBAN_WITHOUT_KC_TEST;
8599
- case 20411908: return OK_IBAN_WITHOUT_KC_TEST;
8600
- case 20511908: return OK_IBAN_WITHOUT_KC_TEST;
8601
- case 20611908: return OK_IBAN_WITHOUT_KC_TEST;
8602
- case 20711908: return OK_IBAN_WITHOUT_KC_TEST;
8603
- case 20811908: return OK_IBAN_WITHOUT_KC_TEST;
8604
- case 20911908: return OK_IBAN_WITHOUT_KC_TEST;
8605
- case 21111908: return OK_IBAN_WITHOUT_KC_TEST;
8606
- case 21211908: return OK_IBAN_WITHOUT_KC_TEST;
8607
- case 21311908: return OK_IBAN_WITHOUT_KC_TEST;
8608
- case 21411908: return OK_IBAN_WITHOUT_KC_TEST;
8609
- case 21511908: return OK_IBAN_WITHOUT_KC_TEST;
8610
- case 21611908: return OK_IBAN_WITHOUT_KC_TEST;
8611
- case 21711908: return OK_IBAN_WITHOUT_KC_TEST;
8612
- case 21811908: return OK_IBAN_WITHOUT_KC_TEST;
8613
- case 21911908: return OK_IBAN_WITHOUT_KC_TEST;
8614
- case 22111908: return OK_IBAN_WITHOUT_KC_TEST;
8615
- case 22211908: return OK_IBAN_WITHOUT_KC_TEST;
8616
- case 22311908: return OK_IBAN_WITHOUT_KC_TEST;
8617
- case 22411908: return OK_IBAN_WITHOUT_KC_TEST;
8618
- case 22511908: return OK_IBAN_WITHOUT_KC_TEST;
8619
- case 22611908: return OK_IBAN_WITHOUT_KC_TEST;
8620
- case 46211991: return OK_IBAN_WITHOUT_KC_TEST;
8621
- case 50111908: return OK_IBAN_WITHOUT_KC_TEST;
8622
- case 50211908: return OK_IBAN_WITHOUT_KC_TEST;
8623
- case 50311908: return OK_IBAN_WITHOUT_KC_TEST;
8624
- case 50411908: return OK_IBAN_WITHOUT_KC_TEST;
8625
- case 50511908: return OK_IBAN_WITHOUT_KC_TEST;
8626
- case 50611908: return OK_IBAN_WITHOUT_KC_TEST;
8627
- case 50711908: return OK_IBAN_WITHOUT_KC_TEST;
8628
- case 50811908: return OK_IBAN_WITHOUT_KC_TEST;
8629
- case 50911908: return OK_IBAN_WITHOUT_KC_TEST;
8630
- case 51111908: return OK_IBAN_WITHOUT_KC_TEST;
8631
- case 51111991: return OK_IBAN_WITHOUT_KC_TEST;
8632
- case 51211908: return OK_IBAN_WITHOUT_KC_TEST;
8633
- case 51211991: return OK_IBAN_WITHOUT_KC_TEST;
8634
- case 51311908: return OK_IBAN_WITHOUT_KC_TEST;
8635
- case 51411908: return OK_IBAN_WITHOUT_KC_TEST;
8636
- case 51511908: return OK_IBAN_WITHOUT_KC_TEST;
8637
- case 51611908: return OK_IBAN_WITHOUT_KC_TEST;
8638
- case 51711908: return OK_IBAN_WITHOUT_KC_TEST;
8639
- case 51811908: return OK_IBAN_WITHOUT_KC_TEST;
8640
- case 51911908: return OK_IBAN_WITHOUT_KC_TEST;
8641
- case 52111908: return OK_IBAN_WITHOUT_KC_TEST;
8642
- case 52111991: return OK_IBAN_WITHOUT_KC_TEST;
8643
- case 52211908: return OK_IBAN_WITHOUT_KC_TEST;
8644
- case 52211991: return OK_IBAN_WITHOUT_KC_TEST;
8645
- case 52311908: return OK_IBAN_WITHOUT_KC_TEST;
8646
- case 52411908: return OK_IBAN_WITHOUT_KC_TEST;
8647
- case 52511908: return OK_IBAN_WITHOUT_KC_TEST;
8648
- case 52611908: return OK_IBAN_WITHOUT_KC_TEST;
8649
- case 52711908: return OK_IBAN_WITHOUT_KC_TEST;
8650
- case 52811908: return OK_IBAN_WITHOUT_KC_TEST;
8651
- case 52911908: return OK_IBAN_WITHOUT_KC_TEST;
8652
- case 53111908: return OK_IBAN_WITHOUT_KC_TEST;
8653
- case 53211908: return OK_IBAN_WITHOUT_KC_TEST;
8654
- case 53311908: return OK_IBAN_WITHOUT_KC_TEST;
8655
- case 57111908: return OK_IBAN_WITHOUT_KC_TEST;
8656
- case 58111908: return OK_IBAN_WITHOUT_KC_TEST;
8657
- case 58211908: return OK_IBAN_WITHOUT_KC_TEST;
8658
- case 58311908: return OK_IBAN_WITHOUT_KC_TEST;
8659
- case 58411908: return OK_IBAN_WITHOUT_KC_TEST;
8660
- case 58511908: return OK_IBAN_WITHOUT_KC_TEST;
8661
- case 80111908: return OK_IBAN_WITHOUT_KC_TEST;
8662
- case 80211908: return OK_IBAN_WITHOUT_KC_TEST;
8663
- case 80311908: return OK_IBAN_WITHOUT_KC_TEST;
8664
- case 80411908: return OK_IBAN_WITHOUT_KC_TEST;
8665
- case 80511908: return OK_IBAN_WITHOUT_KC_TEST;
8666
- case 80611908: return OK_IBAN_WITHOUT_KC_TEST;
8667
- case 80711908: return OK_IBAN_WITHOUT_KC_TEST;
8668
- case 80811908: return OK_IBAN_WITHOUT_KC_TEST;
8669
- case 80911908: return OK_IBAN_WITHOUT_KC_TEST;
8670
- case 81111908: return OK_IBAN_WITHOUT_KC_TEST;
8671
- case 81211908: return OK_IBAN_WITHOUT_KC_TEST;
8672
- case 81311908: return OK_IBAN_WITHOUT_KC_TEST;
8673
- case 81411908: return OK_IBAN_WITHOUT_KC_TEST;
8674
- case 81511908: return OK_IBAN_WITHOUT_KC_TEST;
8675
- case 81611908: return OK_IBAN_WITHOUT_KC_TEST;
8676
- case 81711908: return OK_IBAN_WITHOUT_KC_TEST;
8677
- case 81811908: return OK_IBAN_WITHOUT_KC_TEST;
8678
- case 81911908: return OK_IBAN_WITHOUT_KC_TEST;
8679
- case 82111908: return OK_IBAN_WITHOUT_KC_TEST;
8680
- case 82211908: return OK_IBAN_WITHOUT_KC_TEST;
8681
- case 82311908: return OK_IBAN_WITHOUT_KC_TEST;
8682
- case 82411908: return OK_IBAN_WITHOUT_KC_TEST;
8683
- case 82511908: return OK_IBAN_WITHOUT_KC_TEST;
8684
- case 82611908: return OK_IBAN_WITHOUT_KC_TEST;
8685
- case 82711908: return OK_IBAN_WITHOUT_KC_TEST;
8686
- case 82811908: return OK_IBAN_WITHOUT_KC_TEST;
8687
- case 82911908: return OK_IBAN_WITHOUT_KC_TEST;
8688
- case 99624044: return OK_IBAN_WITHOUT_KC_TEST;
8689
- }
8690
- else
8691
- if(k1==3 && k2==143869)return OK_IBAN_WITHOUT_KC_TEST;
8692
- }
8693
- RETURN_OK;
8694
8516
 
8695
8517
  /* Iban-Regel 0055.00 +���3 */
8696
8518
  /* BHW Kreditservice GmbH */
@@ -8703,54 +8525,58 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8703
8525
  RETURN_OK;
8704
8526
 
8705
8527
  /* Iban-Regel 0056.00 +���3 */
8528
+ /* Iban-Regel 0056.01 (ab September 2017) +���3 */
8706
8529
  /* SEB AG */
8707
8530
  case 56:
8708
- /* Spendenkonten: nur mit festgelegten IBANs -> Konto und evl. BLZ/BIC anpassen */
8709
- if(k1==0)switch(k2){
8710
- case 36: strcpy(kto,"1010240003"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8711
- case 50: strcpy(kto,"1328506100"); if(b!=48010111){strcpy(blz,"48010111"); *bicp="ESSEDE5F480"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8712
- case 99: strcpy(kto,"1826063000"); if(b!=43010111){strcpy(blz,"43010111"); *bicp="ESSEDE5F430"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8713
- case 110: strcpy(kto,"1015597802"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8714
- case 240: strcpy(kto,"1010240000"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8715
- case 333: strcpy(kto,"1011296100"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8716
- case 555: strcpy(kto,"1600220800"); if(b!=10010111){strcpy(blz,"10010111"); *bicp="ESSEDE5F100"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8717
- case 556: strcpy(kto,"1000556100"); if(b!=39010111){strcpy(blz,"39010111"); *bicp="ESSEDE5F390"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8718
- case 606: strcpy(kto,"1967153801"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8719
- case 700: strcpy(kto,"1070088000"); if(b!=26510111){strcpy(blz,"26510111"); *bicp="ESSEDE5F265"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8720
- case 777: strcpy(kto,"1006015200"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8721
- case 999: strcpy(kto,"1010240001"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8722
- case 1234: strcpy(kto,"1369152400"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8723
- case 1313: strcpy(kto,"1017500000"); if(b!=57010111){strcpy(blz,"57010111"); *bicp="ESSEDE5F570"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8724
- case 1888: strcpy(kto,"1241113000"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8725
- case 1953: strcpy(kto,"1026500901"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8726
- case 1998: strcpy(kto,"1547620500"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8727
- case 2007: strcpy(kto,"1026500907"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8728
- case 4004: strcpy(kto,"1635100100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8729
- case 4444: strcpy(kto,"1304610900"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8730
- case 5000: strcpy(kto,"1395676000"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8731
- case 5510: strcpy(kto,"1611754300"); if(b!=29010111){strcpy(blz,"29010111"); *bicp="ESSEDE5F290"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8732
- case 6060: strcpy(kto,"1000400200"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8733
- case 6800: strcpy(kto,"1296401301"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8734
- case 55555: strcpy(kto,"1027758200"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8735
- case 60000: strcpy(kto,"1005007001"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8736
- case 66666: strcpy(kto,"1299807801"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8737
- case 102030: strcpy(kto,"1837501600"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8738
- case 121212: strcpy(kto,"1249461502"); if(b!=70010111){strcpy(blz,"70010111"); *bicp="ESSEDE5F700"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8739
- case 130500: strcpy(kto,"1413482100"); if(b!=30010111){strcpy(blz,"30010111"); *bicp="ESSEDE5F300"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8740
- case 202020: strcpy(kto,"1213431002"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8741
- case 414141: strcpy(kto,"1010555101"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8742
- case 666666: strcpy(kto,"1798758900"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8743
- case 5000000: strcpy(kto,"1403124100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8744
- }
8745
- else if(k1==5 && k2==500500){
8746
- strcpy(kto,"1045720000");
8747
- if(b!=60010111){
8748
- strcpy(blz,"60010111");
8749
- *bicp="ESSEDE5F600";
8750
- return OK_BLZ_KTO_REPLACED;
8531
+ if(!pz_aenderungen_aktivieren_2017_09 || (pz_aenderungen_aktivieren_2017_09 && version<1)){
8532
+
8533
+ /* Spendenkonten: nur mit festgelegten IBANs -> Konto und evl. BLZ/BIC anpassen */
8534
+ if(k1==0)switch(k2){
8535
+ case 36: strcpy(kto,"1010240003"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8536
+ case 50: strcpy(kto,"1328506100"); if(b!=48010111){strcpy(blz,"48010111"); *bicp="ESSEDE5F480"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8537
+ case 99: strcpy(kto,"1826063000"); if(b!=43010111){strcpy(blz,"43010111"); *bicp="ESSEDE5F430"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8538
+ case 110: strcpy(kto,"1015597802"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8539
+ case 240: strcpy(kto,"1010240000"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8540
+ case 333: strcpy(kto,"1011296100"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8541
+ case 555: strcpy(kto,"1600220800"); if(b!=10010111){strcpy(blz,"10010111"); *bicp="ESSEDE5F100"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8542
+ case 556: strcpy(kto,"1000556100"); if(b!=39010111){strcpy(blz,"39010111"); *bicp="ESSEDE5F390"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8543
+ case 606: strcpy(kto,"1967153801"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8544
+ case 700: strcpy(kto,"1070088000"); if(b!=26510111){strcpy(blz,"26510111"); *bicp="ESSEDE5F265"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8545
+ case 777: strcpy(kto,"1006015200"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8546
+ case 999: strcpy(kto,"1010240001"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8547
+ case 1234: strcpy(kto,"1369152400"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8548
+ case 1313: strcpy(kto,"1017500000"); if(b!=57010111){strcpy(blz,"57010111"); *bicp="ESSEDE5F570"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8549
+ case 1888: strcpy(kto,"1241113000"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8550
+ case 1953: strcpy(kto,"1026500901"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8551
+ case 1998: strcpy(kto,"1547620500"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8552
+ case 2007: strcpy(kto,"1026500907"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8553
+ case 4004: strcpy(kto,"1635100100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8554
+ case 4444: strcpy(kto,"1304610900"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8555
+ case 5000: strcpy(kto,"1395676000"); if(b!=25010111){strcpy(blz,"25010111"); *bicp="ESSEDE5F250"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8556
+ case 5510: strcpy(kto,"1611754300"); if(b!=29010111){strcpy(blz,"29010111"); *bicp="ESSEDE5F290"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8557
+ case 6060: strcpy(kto,"1000400200"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8558
+ case 6800: strcpy(kto,"1296401301"); if(b!=67010111){strcpy(blz,"67010111"); *bicp="ESSEDE5F670"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8559
+ case 55555: strcpy(kto,"1027758200"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8560
+ case 60000: strcpy(kto,"1005007001"); if(b!=50010111){strcpy(blz,"50010111"); *bicp="ESSEDE5FXXX"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8561
+ case 66666: strcpy(kto,"1299807801"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8562
+ case 102030: strcpy(kto,"1837501600"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8563
+ case 121212: strcpy(kto,"1249461502"); if(b!=70010111){strcpy(blz,"70010111"); *bicp="ESSEDE5F700"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8564
+ case 130500: strcpy(kto,"1413482100"); if(b!=30010111){strcpy(blz,"30010111"); *bicp="ESSEDE5F300"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8565
+ case 202020: strcpy(kto,"1213431002"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8566
+ case 414141: strcpy(kto,"1010555101"); if(b!=38010111){strcpy(blz,"38010111"); *bicp="ESSEDE5F380"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8567
+ case 666666: strcpy(kto,"1798758900"); if(b!=20010111){strcpy(blz,"20010111"); *bicp="ESSEDE5F200"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8568
+ case 5000000: strcpy(kto,"1403124100"); if(b!=37010111){strcpy(blz,"37010111"); *bicp="ESSEDE5F370"; return OK_BLZ_KTO_REPLACED;} else return OK_KTO_REPLACED;
8569
+ }
8570
+ else if(k1==5 && k2==500500){
8571
+ strcpy(kto,"1045720000");
8572
+ if(b!=60010111){
8573
+ strcpy(blz,"60010111");
8574
+ *bicp="ESSEDE5F600";
8575
+ return OK_BLZ_KTO_REPLACED;
8576
+ }
8577
+ else
8578
+ return OK_KTO_REPLACED;
8751
8579
  }
8752
- else
8753
- return OK_KTO_REPLACED;
8754
8580
  }
8755
8581
 
8756
8582
  /* f�r die folgenden BLZs sind nur zehnstelllige Kontonummern erlaubt: */
@@ -8842,7 +8668,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
8842
8668
  }
8843
8669
  }
8844
8670
 
8845
- #line 9405 "konto_check.lxx"
8846
8671
  /* Funktion lut_multiple() +���2 */
8847
8672
  /* ###########################################################################
8848
8673
  * # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
@@ -9110,7 +8935,6 @@ DLL_EXPORT int lut_cleanup(void)
9110
8935
  FREE(sort_pz_f);
9111
8936
  FREE(sort_plz);
9112
8937
  FREE(sort_iban_regel);
9113
- #line 9667 "konto_check.lxx"
9114
8938
  if(name_raw && name_data!=name_raw)
9115
8939
  FREE(name_raw);
9116
8940
  else
@@ -9179,7 +9003,6 @@ DLL_EXPORT int lut_cleanup(void)
9179
9003
  lut_cleanup(); /* neuer Versuch, aufzur�umen */
9180
9004
  RETURN(INIT_FATAL_ERROR);
9181
9005
  }
9182
- #line 9741 "konto_check.lxx"
9183
9006
  init_status&=1;
9184
9007
  init_in_progress=0;
9185
9008
  return OK;
@@ -9352,8 +9175,8 @@ static void init_atoi_table(void)
9352
9175
  int i,ziffer;
9353
9176
  unsigned long l;
9354
9177
 
9355
- /* �nderungen zum 05.06.2017 aktivieren */
9356
- if(time(NULL)>1496613600 ||0)pz_aenderungen_aktivieren_2017_06=1;
9178
+ /* �nderungen zum 04.09.2017 aktivieren */
9179
+ if(time(NULL)>1504476000 ||0)pz_aenderungen_aktivieren_2017_09=1;
9357
9180
 
9358
9181
  /* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
9359
9182
  * angesehen(!), da die Stellenzuordnung sonst nicht mehr stimmt. Ausnahme:
@@ -9618,7 +9441,6 @@ static void init_atoi_table(void)
9618
9441
  lut_block_name2[126]="2. IBAN Regel idx";
9619
9442
  lut_block_name2[127]="2. BIC Hauptst.idx";
9620
9443
  lut_blocklen_max=453;
9621
- #line 9981 "konto_check.lxx"
9622
9444
  init_status|=1;
9623
9445
  }
9624
9446
 
@@ -9678,7 +9500,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
9678
9500
 
9679
9501
  switch(pz_methode){
9680
9502
 
9681
- #line 10044 "konto_check.lxx"
9682
9503
  /* Berechnungsmethoden 00 bis 09 +���3
9683
9504
  Berechnung nach der Methode 00 +���4 */
9684
9505
  /*
@@ -12013,7 +11834,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12013
11834
  * ######################################################################
12014
11835
  */
12015
11836
 
12016
- #line 12055 "konto_check.lxx"
12017
11837
  case 51:
12018
11838
  if(*(kto+2)=='9'){ /* Ausnahme */
12019
11839
 
@@ -12275,8 +12095,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12275
12095
  else
12276
12096
  return FALSE;
12277
12097
 
12278
- #line 12269 "konto_check.lxx"
12279
- #line 12271 "konto_check.lxx"
12280
12098
  /* Berechnung nach der Methode 53 +���4 */
12281
12099
  /*
12282
12100
  * ######################################################################
@@ -12575,7 +12393,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
12575
12393
  * # bewerten. #
12576
12394
  * ######################################################################
12577
12395
  */
12578
- #line 12540 "konto_check.lxx"
12579
12396
  case 57:
12580
12397
  #if DEBUG>0
12581
12398
  if(retvals){
@@ -13221,7 +13038,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
13221
13038
  * # Pr�fzifferberechnung) #
13222
13039
  * ######################################################################
13223
13040
  */
13224
- #line 13120 "konto_check.lxx"
13225
13041
  case 66:
13226
13042
  #if DEBUG>0
13227
13043
  case 2066:
@@ -18461,7 +18277,13 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
18461
18277
  * # Variante 2: #
18462
18278
  * # Modulus 10, Gewichtung 2, 1, 2, 1, 2, 1, 2, 1, 2 #
18463
18279
  * # Die Berechnung und m�gliche Ergebnisse entsprechen der #
18464
- * # Methode 00. #
18280
+ * # Methode 00. F�hrt die Berechnung nach Variante 2 zu einem #
18281
+ * # Pr�fzifferfehler, so ist nach Variante 3 zu pr�fen. #
18282
+ * # #
18283
+ * # Variante 3: #
18284
+ * # Modulus 11, Gewichtung 2, 3, 4, 5, 6, 7, 2, 3, 4 #
18285
+ * # Die Berechnung und m�gliche Ergebnisse entsprechen der #
18286
+ * # Methode 04. #
18465
18287
  * ######################################################################
18466
18288
  */
18467
18289
 
@@ -18542,6 +18364,30 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
18542
18364
  #endif
18543
18365
  MOD_10_80; /* pz%=10 */
18544
18366
  if(pz)pz=10-pz;
18367
+ CHECK_PZX10;
18368
+
18369
+ #if DEBUG>0
18370
+ case 3122:
18371
+ if(retvals){
18372
+ retvals->methode="C2c";
18373
+ retvals->pz_methode=3122;
18374
+ }
18375
+ #endif
18376
+ /* Variante 3, g�ltig ab September 2017 */
18377
+ if(!pz_aenderungen_aktivieren_2017_09)return UNDEFINED_SUBMETHOD;
18378
+ pz = (kto[0]-'0') * 4
18379
+ + (kto[1]-'0') * 3
18380
+ + (kto[2]-'0') * 2
18381
+ + (kto[3]-'0') * 7
18382
+ + (kto[4]-'0') * 6
18383
+ + (kto[5]-'0') * 5
18384
+ + (kto[6]-'0') * 4
18385
+ + (kto[7]-'0') * 3
18386
+ + (kto[8]-'0') * 2;
18387
+
18388
+ MOD_11_176; /* pz%=11 */
18389
+ if(pz)pz=11-pz;
18390
+ INVALID_PZ10;
18545
18391
  CHECK_PZ10;
18546
18392
 
18547
18393
 
@@ -20532,7 +20378,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
20532
20378
  retvals->pz_methode=144;
20533
20379
  }
20534
20380
  #endif
20535
- if(!pz_aenderungen_aktivieren_2017_06)return NOT_DEFINED;
20536
20381
 
20537
20382
  /* Variante 1: Berechnung nach der Methode 02 */
20538
20383
  #if DEBUG>0
@@ -20604,7 +20449,6 @@ if(!pz_aenderungen_aktivieren_2017_06)return NOT_DEFINED;
20604
20449
  return NOT_IMPLEMENTED;
20605
20450
  }
20606
20451
  }
20607
- #line 19312 "konto_check.lxx"
20608
20452
 
20609
20453
  /*
20610
20454
  * ######################################################################
@@ -20702,7 +20546,6 @@ DLL_EXPORT int kto_check_blz(char *blz,char *kto)
20702
20546
  #if DEBUG>0 /* es werden einige Funktionen benutzt, die nur in der Debug-Variante enthalten sind */
20703
20547
  DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,const char **bic,int *regel,RETVAL *retvals)
20704
20548
  {
20705
- #line 19410 "konto_check.lxx"
20706
20549
  char *blz_o,buffer[32],kto_o[16],*blz_n,*kto_n,*ptr,*dptr;
20707
20550
  const char *bicp;
20708
20551
  int ret,ret_regel,r;
@@ -20750,7 +20593,6 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
20750
20593
  }
20751
20594
  else /* BLZ und Kto gleich */
20752
20595
  return ret;
20753
- #line 19458 "konto_check.lxx"
20754
20596
  }
20755
20597
 
20756
20598
  #else /* !DEBUG */
@@ -20900,7 +20742,6 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
20900
20742
  * # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
20901
20743
  * ###########################################################################
20902
20744
  */
20903
- #line 19608 "konto_check.lxx"
20904
20745
  DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
20905
20746
  {
20906
20747
  int untermethode,pz_methode;
@@ -21136,7 +20977,6 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
21136
20977
  }
21137
20978
  else
21138
20979
  **user_info_p=0;
21139
- #line 19829 "konto_check.lxx"
21140
20980
  FREE(prolog);
21141
20981
  return OK;
21142
20982
  }
@@ -21271,20 +21111,20 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
21271
21111
  case 3:
21272
21112
  return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
21273
21113
  case 4: /* Datum der Pr�fziffermethode */
21274
- if(pz_aenderungen_aktivieren_2017_06)
21275
- return "05.06.2017";
21114
+ if(pz_aenderungen_aktivieren_2017_09)
21115
+ return "04.09.2017";
21276
21116
  else
21277
- return "06.03.2017 (Aenderungen vom 05.06.2017 enthalten aber noch nicht aktiviert)";
21117
+ return "05.06.2017 (Aenderungen vom 04.09.2017 enthalten aber noch nicht aktiviert)";
21278
21118
  case 5:
21279
- return "05.06.2017";
21119
+ return "04.09.2017";
21280
21120
  case 6:
21281
- return "13. Juni 2017"; /* Klartext-Datum der Bibliotheksversion */
21121
+ return "13. August 2017"; /* Klartext-Datum der Bibliotheksversion */
21282
21122
  case 7:
21283
21123
  return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
21284
21124
  case 8:
21285
21125
  return "6"; /* Hauptversionszahl */
21286
21126
  case 9:
21287
- return "00"; /* Unterversionszahl */
21127
+ return "01"; /* Unterversionszahl */
21288
21128
  }
21289
21129
  }
21290
21130
 
@@ -21430,7 +21270,6 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
21430
21270
  default:
21431
21271
  break;
21432
21272
  }
21433
- #line 20062 "konto_check.lxx"
21434
21273
  fputc('\n',out);
21435
21274
  while(--i)fputc('=',out);
21436
21275
  fputc('\n',out);
@@ -21755,7 +21594,6 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
21755
21594
  return iban2bic(iban,retval,b,k);
21756
21595
  }
21757
21596
 
21758
- #line 20387 "konto_check.lxx"
21759
21597
  /* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
21760
21598
  /* ###########################################################################
21761
21599
  * # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
@@ -22588,7 +22426,6 @@ DLL_EXPORT int ipi_check(char *zweck)
22588
22426
  * # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
22589
22427
  * ###########################################################################
22590
22428
  */
22591
- #line 21220 "konto_check.lxx"
22592
22429
 
22593
22430
  /* Funktion volltext_zeichen() +���2 */
22594
22431
  /* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
@@ -23435,7 +23272,6 @@ static int qcmp_bic_h(const void *ap,const void *bp)
23435
23272
  return a-b;
23436
23273
  }
23437
23274
 
23438
- #line 22067 "konto_check.lxx"
23439
23275
 
23440
23276
  /* Funktion qcmp_bic() +���3 */
23441
23277
  static int qcmp_bic(const void *ap,const void *bp)
@@ -23540,7 +23376,6 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
23540
23376
  else
23541
23377
  return a-b;
23542
23378
  }
23543
- #line 22082 "konto_check.lxx"
23544
23379
 
23545
23380
  /* Funktion init_blzf() +���2
23546
23381
  * Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
@@ -23608,7 +23443,6 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
23608
23443
  }
23609
23444
 
23610
23445
  /* Funktion suche_int1() +���2 */
23611
- #line 22150 "konto_check.lxx"
23612
23446
  static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
23613
23447
  int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
23614
23448
  {
@@ -23659,7 +23493,6 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
23659
23493
  }
23660
23494
 
23661
23495
  /* Funktion suche_int2() +���2 */
23662
- #line 22201 "konto_check.lxx"
23663
23496
  static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
23664
23497
  int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
23665
23498
  {
@@ -24274,7 +24107,6 @@ static int cmp_suche_sort(const void *ap,const void *bp)
24274
24107
  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)
24275
24108
  {
24276
24109
  int i,j,last_idx,*idx_a,*cnt_o;
24277
- #line 22817 "konto_check.lxx"
24278
24110
 
24279
24111
  if(idx_op)*idx_op=NULL;
24280
24112
  if(cnt_op)*cnt_op=NULL;
@@ -24356,7 +24188,6 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
24356
24188
  return OK;
24357
24189
  }
24358
24190
 
24359
- #line 22900 "konto_check.lxx"
24360
24191
  /* Funktion lut_suche_volltext() +���2 */
24361
24192
  DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
24362
24193
  int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
@@ -24486,7 +24317,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
24486
24317
  return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
24487
24318
  }
24488
24319
 
24489
- #line 23050 "konto_check.lxx"
24320
+ #line 22918 "konto_check.lxx"
24490
24321
  /* Funktion lut_suche_bic() +���2 */
24491
24322
  DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
24492
24323
  char ***base_name,int **blz_base)
@@ -24540,7 +24371,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
24540
24371
  {
24541
24372
  int retval;
24542
24373
 
24543
-
24544
24374
  if(anzahl)*anzahl=0;
24545
24375
  if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
24546
24376
  if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
@@ -24554,7 +24384,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
24554
24384
  /* Funktion lut_suche_plz() +���2 */
24555
24385
  DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
24556
24386
  {
24557
-
24558
24387
  if(anzahl)*anzahl=0;
24559
24388
  if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
24560
24389
  if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
@@ -24567,7 +24396,6 @@ DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int
24567
24396
  /* Funktion lut_suche_regel() +���2 */
24568
24397
  DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
24569
24398
  {
24570
-
24571
24399
  if(anzahl)*anzahl=0;
24572
24400
  if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
24573
24401
  if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
@@ -24577,7 +24405,6 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
24577
24405
  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);
24578
24406
  }
24579
24407
 
24580
- #line 23083 "konto_check.lxx"
24581
24408
 
24582
24409
  /* Funktion lut_suche_bic_h() +���2 */
24583
24410
  DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
@@ -24963,7 +24790,6 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
24963
24790
  {
24964
24791
  return iban_fkt_s(iban,filiale,retval,lut_ort);
24965
24792
  }
24966
- #line 23172 "konto_check.lxx"
24967
24793
 
24968
24794
  static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
24969
24795
  {
@@ -26215,6 +26041,7 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
26215
26041
  case 3108: return "A8c";
26216
26042
  case 3111: return "B1c";
26217
26043
  case 3118: return "B8c";
26044
+ case 3122: return "C2c";
26218
26045
  case 3125: return "C5c";
26219
26046
  case 3127: return "C7c";
26220
26047
  case 3128: return "C8c";
@@ -26251,7 +26078,6 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
26251
26078
  default: return "???";
26252
26079
  }
26253
26080
  }
26254
- #line 24127 "konto_check.lxx"
26255
26081
 
26256
26082
  /* Funktion lut_keine_iban_berechnung() +���1 */
26257
26083
  /*
@@ -26366,7 +26192,7 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
26366
26192
  /* Funktion pz_aenderungen_enable() +���1 */
26367
26193
  /* ###########################################################################
26368
26194
  * # Die Funktion pz_aenderungen_enable() dient dazu, den Status des Flags #
26369
- * # pz_aenderungen_aktivieren_2017_06 abzufragen bzw. zu setzen. Falls die Variable #
26195
+ * # pz_aenderungen_aktivieren_2017_09 abzufragen bzw. zu setzen. Falls die Variable #
26370
26196
  * # set 1 ist, werden die �nderungen aktiviert, falls sie 0 ist, werden #
26371
26197
  * # die �nderungen deaktiviert. Bei allen anderen Werten wird das aktuelle #
26372
26198
  * # Flag nicht ver�ndert, sondern nur der Status zur�ckgegeben. #
@@ -26382,8 +26208,8 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
26382
26208
 
26383
26209
  DLL_EXPORT int pz_aenderungen_enable(int set)
26384
26210
  {
26385
- if(set==0 || set==1)pz_aenderungen_aktivieren_2017_06=set;
26386
- return pz_aenderungen_aktivieren_2017_06;
26211
+ if(set==0 || set==1)pz_aenderungen_aktivieren_2017_09=set;
26212
+ return pz_aenderungen_aktivieren_2017_09;
26387
26213
  }
26388
26214
 
26389
26215
  #if DEBUG>0
@@ -26415,7 +26241,6 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
26415
26241
  #endif
26416
26242
 
26417
26243
 
26418
- #line 24291 "konto_check.lxx"
26419
26244
  /* Funktionen *_id() +���1 */
26420
26245
  /* ###########################################################################
26421
26246
  * # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
@@ -1,6 +1,5 @@
1
1
  /* vim: ft=c:set si:set fileencoding=iso-8859-1
2
2
  */
3
- #line 9 "konto_check_h.lx"
4
3
 
5
4
  /*
6
5
  * ##########################################################################
@@ -484,7 +483,6 @@ extern const char *lut2_feld_namen[256];
484
483
  #define OK_KTO_REPLACED_NO_PZ 24
485
484
  #define OK_UNTERKONTO_ATTACHED 25
486
485
  #define OK_SHORT_BIC_USED 26
487
- #line 279 "konto_check_h.lx"
488
486
 
489
487
  #define MAX_BLZ_CNT 30000 /* maximale Anzahl BLZ's in generate_lut() */
490
488
 
@@ -1228,7 +1228,7 @@ static VALUE rebuild_blzfile_rb(int argc,VALUE* argv,VALUE self)
1228
1228
  * Rückgabe: aktueller Status des Flags
1229
1229
  */
1230
1230
 
1231
- static int pz_aenderungen_enable_rb(int argc,VALUE *argv)
1231
+ static VALUE pz_aenderungen_enable_rb(int argc,VALUE *argv,VALUE self)
1232
1232
  {
1233
1233
  int mode;
1234
1234
  VALUE mode_rb=Qnil;
@@ -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 E3) are implemented.
4357
+ * (00 to E4) 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. 6.00 from 2017-06-13):
4361
+ * and this version (V. 6.01 from 2017-08-13):
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().
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: konto_check
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.00.0
4
+ version: 6.01.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Provideal Systems GmbH
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-06-08 00:00:00.000000000 Z
13
+ date: 2017-09-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: thoughtbot-shoulda