konto_check 5.5.0 → 5.8.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.
@@ -13,7 +13,7 @@
|
|
13
13
|
* # wurden aus der aktuellen BLZ-Datei der Deutschen Bundesbank #
|
14
14
|
* # �bernommen. #
|
15
15
|
* # #
|
16
|
-
* # Copyright (C) 2002-
|
16
|
+
* # Copyright (C) 2002-2015 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,12 +45,15 @@
|
|
45
45
|
* # im Internet herunterladen. #
|
46
46
|
* ##########################################################################
|
47
47
|
*/
|
48
|
+
#line 332 "ruby/ext/konto_check_raw/konto_check.lxx"
|
48
49
|
|
49
50
|
/* Definitionen und Includes */
|
50
51
|
#ifndef VERSION
|
51
|
-
#define VERSION "5.
|
52
|
+
#define VERSION "5.8 (final)"
|
53
|
+
#define VERSION_MAJOR 5
|
54
|
+
#define VERSION_MINOR 8
|
52
55
|
#endif
|
53
|
-
#define VERSION_DATE "
|
56
|
+
#define VERSION_DATE "2015-08-22"
|
54
57
|
|
55
58
|
#ifndef INCLUDE_KONTO_CHECK_DE
|
56
59
|
#define INCLUDE_KONTO_CHECK_DE 1
|
@@ -101,8 +104,8 @@ static lzo_align_t __LZO_MMODEL wrkmem[LZO1X_1_MEM_COMPRESS];
|
|
101
104
|
#define KONTO_CHECK_VARS
|
102
105
|
#include "konto_check.h"
|
103
106
|
|
104
|
-
/* Flag, um die �nderungen zum
|
105
|
-
static int
|
107
|
+
/* Flag, um die �nderungen zum September 2015 zu aktivieren */
|
108
|
+
static int pz_aenderungen_aktivieren_2015_09;
|
106
109
|
|
107
110
|
/* falls die Variable verbose_debug gesetzt wird, werden bei einigen
|
108
111
|
* Funktionen mittels perror() zus�tzliche Debuginfos ausgegeben. Die
|
@@ -239,6 +242,7 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
239
242
|
#define free(ptr) efree(ptr)
|
240
243
|
#endif
|
241
244
|
|
245
|
+
#line 770 "ruby/ext/konto_check_raw/konto_check.lxx"
|
242
246
|
|
243
247
|
/* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
|
244
248
|
#define BLZ_FEHLER 100000000
|
@@ -374,6 +378,7 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
374
378
|
*/
|
375
379
|
#define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
|
376
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"
|
377
382
|
|
378
383
|
/* einige Makros zur Umwandlung zwischen unsigned int und char */
|
379
384
|
#define UCP (unsigned char*)
|
@@ -493,6 +498,7 @@ int pz=-777;
|
|
493
498
|
|
494
499
|
#define E_START(x)
|
495
500
|
#define E_END(x)
|
501
|
+
#line 1036 "ruby/ext/konto_check_raw/konto_check.lxx"
|
496
502
|
|
497
503
|
/* Variable f�r die Methoden 27, 29 und 69 */
|
498
504
|
static const int m10h_digits[4][10]={
|
@@ -530,7 +536,6 @@ static char *default_buffer,*default_ptr,*default_key[DEFAULT_CNT],*default_val[
|
|
530
536
|
static int default_cnt,default_bufsize,default_val_size[DEFAULT_CNT];
|
531
537
|
|
532
538
|
static int kto_check_clear_default(void);
|
533
|
-
static int kto_check_blz_x(char *blz,char *kto,int *uk_cnt);
|
534
539
|
|
535
540
|
#if DEBUG>0
|
536
541
|
/* "aktuelles" Datum f�r die Testumgebung (um einen Datumswechsel zu simulieren) */
|
@@ -942,6 +947,7 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
|
|
942
947
|
* ###########################################################################
|
943
948
|
*/
|
944
949
|
|
950
|
+
#line 1485 "ruby/ext/konto_check_raw/konto_check.lxx"
|
945
951
|
DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
946
952
|
{
|
947
953
|
char buffer[SLOT_BUFFER],*ptr;
|
@@ -979,6 +985,7 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
|
979
985
|
* #############################################################################
|
980
986
|
*/
|
981
987
|
|
988
|
+
#line 1523 "ruby/ext/konto_check_raw/konto_check.lxx"
|
982
989
|
static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
983
990
|
{
|
984
991
|
char buffer[SLOT_BUFFER],*ptr,*cptr;
|
@@ -1114,6 +1121,7 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
|
1114
1121
|
* ###########################################################################
|
1115
1122
|
*/
|
1116
1123
|
|
1124
|
+
#line 1659 "ruby/ext/konto_check_raw/konto_check.lxx"
|
1117
1125
|
DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
|
1118
1126
|
{
|
1119
1127
|
int retval;
|
@@ -1136,6 +1144,7 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
|
|
1136
1144
|
* ###########################################################################
|
1137
1145
|
*/
|
1138
1146
|
|
1147
|
+
#line 1683 "ruby/ext/konto_check_raw/konto_check.lxx"
|
1139
1148
|
DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
1140
1149
|
{
|
1141
1150
|
int retval;
|
@@ -1157,6 +1166,7 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
|
1157
1166
|
* ###########################################################################
|
1158
1167
|
*/
|
1159
1168
|
|
1169
|
+
#line 1706 "ruby/ext/konto_check_raw/konto_check.lxx"
|
1160
1170
|
static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
|
1161
1171
|
{
|
1162
1172
|
char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
|
@@ -1246,6 +1256,7 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
|
|
1246
1256
|
FREE(sbuffer);
|
1247
1257
|
RETURN(ERROR_MALLOC);
|
1248
1258
|
}
|
1259
|
+
#line 1811 "ruby/ext/konto_check_raw/konto_check.lxx"
|
1249
1260
|
|
1250
1261
|
if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
|
1251
1262
|
FREE(sbuffer);
|
@@ -2838,6 +2849,7 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
|
|
2838
2849
|
* ###########################################################################
|
2839
2850
|
*/
|
2840
2851
|
|
2852
|
+
#line 3404 "ruby/ext/konto_check_raw/konto_check.lxx"
|
2841
2853
|
DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
|
2842
2854
|
{
|
2843
2855
|
char *ptr,*ptr1,buffer[128];
|
@@ -2925,6 +2937,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2925
2937
|
|
2926
2938
|
/* Infoblocks lesen: 1. Infoblock */
|
2927
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"
|
2928
2941
|
*(ptr+cnt)=0;
|
2929
2942
|
if(valid1){
|
2930
2943
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -2972,6 +2985,7 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2972
2985
|
|
2973
2986
|
/* Infoblocks lesen: 2. Infoblock */
|
2974
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"
|
2975
2989
|
*(ptr+cnt)=0;
|
2976
2990
|
if(valid2){
|
2977
2991
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -3190,6 +3204,7 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
|
|
3190
3204
|
qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
|
3191
3205
|
for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
|
3192
3206
|
read_lut_block_int(lut1,0,typ,&len,&data);
|
3207
|
+
#line 3762 "ruby/ext/konto_check_raw/konto_check.lxx"
|
3193
3208
|
write_lut_block_int(lut2,typ,len,data);
|
3194
3209
|
FREE(data);
|
3195
3210
|
last_slot=typ;
|
@@ -3419,6 +3434,7 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
|
|
3419
3434
|
* # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
|
3420
3435
|
* ###########################################################################
|
3421
3436
|
*/
|
3437
|
+
#line 3992 "ruby/ext/konto_check_raw/konto_check.lxx"
|
3422
3438
|
DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
|
3423
3439
|
{
|
3424
3440
|
char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
|
@@ -3646,6 +3662,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3646
3662
|
typ1=typ;
|
3647
3663
|
if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
|
3648
3664
|
retval=read_lut_block_int(lut,0,typ,&len,&data);
|
3665
|
+
#line 4221 "ruby/ext/konto_check_raw/konto_check.lxx"
|
3649
3666
|
|
3650
3667
|
switch(retval){
|
3651
3668
|
case LUT_CRC_ERROR:
|
@@ -3733,6 +3750,7 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3733
3750
|
if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
|
3734
3751
|
FREE(data);
|
3735
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"
|
3736
3754
|
if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
|
3737
3755
|
typ=LUT2_2_NAME_NAME_KURZ;
|
3738
3756
|
typ1=LUT2_NAME_NAME_KURZ;
|
@@ -4328,6 +4346,7 @@ DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *
|
|
4328
4346
|
* ###########################################################################
|
4329
4347
|
*/
|
4330
4348
|
|
4349
|
+
#line 4909 "ruby/ext/konto_check_raw/konto_check.lxx"
|
4331
4350
|
DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
|
4332
4351
|
{
|
4333
4352
|
if(init_status<7 || !current_lutfile){
|
@@ -4727,7 +4746,6 @@ DLL_EXPORT int lut_pan_i(int b,int zweigstelle,int *retval)
|
|
4727
4746
|
|
4728
4747
|
DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval)
|
4729
4748
|
{
|
4730
|
-
#if USE_IBAN_RULES
|
4731
4749
|
char blz2[12],kto2[12];
|
4732
4750
|
const char *bic,*bic_neu;
|
4733
4751
|
int ret,regel;
|
@@ -4752,9 +4770,6 @@ DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval)
|
|
4752
4770
|
* Falls der BIC durch die Regel modifiziert wird, wird das nur durch retval angezeigt.
|
4753
4771
|
*/
|
4754
4772
|
return bic;
|
4755
|
-
#else
|
4756
|
-
return lut_bic_int(b,zweigstelle,retval);
|
4757
|
-
#endif
|
4758
4773
|
}
|
4759
4774
|
|
4760
4775
|
static const char *lut_bic_int(char *b,int zweigstelle,int *retval)
|
@@ -4815,36 +4830,18 @@ DLL_EXPORT const char *lut_bic_h(char *b,int zweigstelle,int *retval)
|
|
4815
4830
|
*/
|
4816
4831
|
DLL_EXPORT const char *lut_bic_i(int b,int zweigstelle,int *retval)
|
4817
4832
|
{
|
4818
|
-
#if !USE_IBAN_RULES
|
4819
|
-
int idx;
|
4820
|
-
|
4821
|
-
if(!bic)INVALID_C(LUT2_BIC_NOT_INITIALIZED);
|
4822
|
-
if((idx=lut_index_i(b))<0)INVALID_C(idx);
|
4823
|
-
CHECK_OFFSET_S;
|
4824
|
-
return bic[startidx[idx]+zweigstelle];
|
4825
|
-
#else
|
4826
4833
|
char b_a[9];
|
4827
4834
|
|
4828
4835
|
snprintf(b_a,9,"%08d",b);
|
4829
4836
|
return lut_bic(b_a,zweigstelle,retval);
|
4830
|
-
#endif
|
4831
4837
|
}
|
4832
4838
|
|
4833
4839
|
DLL_EXPORT const char *lut_bic_hi(int b,int zweigstelle,int *retval)
|
4834
4840
|
{
|
4835
|
-
#if !USE_IBAN_RULES
|
4836
|
-
int idx;
|
4837
|
-
|
4838
|
-
if(!bic_h)INVALID_C(LUT2_BIC_NOT_INITIALIZED);
|
4839
|
-
if((idx=lut_index_i(b))<0)INVALID_C(idx);
|
4840
|
-
CHECK_OFFSET_S;
|
4841
|
-
return bic_h[startidx[idx]+zweigstelle];
|
4842
|
-
#else
|
4843
4841
|
char b_a[9];
|
4844
4842
|
|
4845
4843
|
snprintf(b_a,9,"%08d",b);
|
4846
4844
|
return lut_bic_h(b_a,zweigstelle,retval);
|
4847
|
-
#endif
|
4848
4845
|
}
|
4849
4846
|
|
4850
4847
|
/* Funktion lut_nr() +���2 */
|
@@ -5103,11 +5100,11 @@ static int iban_init(void)
|
|
5103
5100
|
* ###########################################################################
|
5104
5101
|
*/
|
5105
5102
|
|
5106
|
-
#
|
5103
|
+
#line 5663 "ruby/ext/konto_check_raw/konto_check.lxx"
|
5107
5104
|
static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
|
5108
5105
|
{
|
5109
5106
|
char tmp_buffer[16];
|
5110
|
-
int regel,version,b,b_alt,b_neu,k1,k2,k3,not_ok,i,ret,loesch,idx,pz_methode,
|
5107
|
+
int regel,version,b,b_alt,b_neu,k1,k2,k3,not_ok,i,ret,loesch,idx,pz_methode,tmp;
|
5111
5108
|
|
5112
5109
|
/* pr�fen, ob bereits initialisiert wurde */
|
5113
5110
|
INITIALIZE_WAIT;
|
@@ -5123,56 +5120,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5123
5120
|
*bicp=NULL;
|
5124
5121
|
ret=OK;
|
5125
5122
|
|
5126
|
-
/* zun�chst einige Sonderf�lle (weggelassene Unterkonten) f�r Regel 0 behandeln;
|
5127
|
-
* diese sind auch wichtig, falls die IBAN-Regeln nicht in der LUT-Datei enthalten sind.
|
5128
|
-
* Die R�ckgabe differenziert allerdings nicht mehr nach der Art der Unterkonten; diese
|
5129
|
-
* werden nur stillschweigend eingef�gt (wie im "SEPA Account Converter").
|
5130
|
-
*/
|
5131
|
-
if(regel==0){ /* in den anderen Regeln wird die Verschiebung bei Bedarf ebenfalls gemacht */
|
5132
|
-
if(((ret=kto_check_blz_x(blz,kto,&uk_cnt))<=0))return ret; /* Fehler bei Regel 0: zur�ckgeben, keine Berechnung */
|
5133
|
-
switch(uk_cnt){
|
5134
|
-
case 1:
|
5135
|
-
ret=OK_UNTERKONTO_ATTACHED;
|
5136
|
-
kto[0]=kto[1];
|
5137
|
-
kto[1]=kto[2];
|
5138
|
-
kto[2]=kto[3];
|
5139
|
-
kto[3]=kto[4];
|
5140
|
-
kto[4]=kto[5];
|
5141
|
-
kto[5]=kto[6];
|
5142
|
-
kto[6]=kto[7];
|
5143
|
-
kto[7]=kto[8];
|
5144
|
-
kto[8]=kto[9];
|
5145
|
-
kto[9]='0';
|
5146
|
-
break;
|
5147
|
-
case 2:
|
5148
|
-
ret=OK_UNTERKONTO_ATTACHED;
|
5149
|
-
kto[0]=kto[2];
|
5150
|
-
kto[1]=kto[3];
|
5151
|
-
kto[2]=kto[4];
|
5152
|
-
kto[3]=kto[5];
|
5153
|
-
kto[4]=kto[6];
|
5154
|
-
kto[5]=kto[7];
|
5155
|
-
kto[6]=kto[8];
|
5156
|
-
kto[7]=kto[9];
|
5157
|
-
kto[8]=kto[9]='0';
|
5158
|
-
break;
|
5159
|
-
case 3:
|
5160
|
-
ret=OK_UNTERKONTO_ATTACHED;
|
5161
|
-
kto[0]=kto[3];
|
5162
|
-
kto[1]=kto[4];
|
5163
|
-
kto[2]=kto[5];
|
5164
|
-
kto[3]=kto[6];
|
5165
|
-
kto[4]=kto[7];
|
5166
|
-
kto[5]=kto[8];
|
5167
|
-
kto[6]=kto[9];
|
5168
|
-
kto[7]=kto[8]=kto[9]='0';
|
5169
|
-
break;
|
5170
|
-
default:
|
5171
|
-
break;
|
5172
|
-
}
|
5173
|
-
}
|
5174
|
-
|
5175
|
-
|
5176
5123
|
/* erstmal Konto und BLZ nach Integer umwandeln */
|
5177
5124
|
k1=b2[I kto[0]]+b1[I kto[1]];
|
5178
5125
|
k2=b8[I kto[2]]+b7[I kto[3]]+b6[I kto[4]]+b5[I kto[5]]+b4[I kto[6]]+b3[I kto[7]]+b2[I kto[8]]+b1[I kto[9]];
|
@@ -8829,8 +8776,8 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8829
8776
|
return IBAN_RULE_UNKNOWN;
|
8830
8777
|
}
|
8831
8778
|
}
|
8832
|
-
#endif
|
8833
8779
|
|
8780
|
+
#line 9340 "ruby/ext/konto_check_raw/konto_check.lxx"
|
8834
8781
|
/* Funktion lut_multiple() +���2 */
|
8835
8782
|
/* ###########################################################################
|
8836
8783
|
* # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
|
@@ -9098,6 +9045,7 @@ DLL_EXPORT int lut_cleanup(void)
|
|
9098
9045
|
FREE(sort_pz_f);
|
9099
9046
|
FREE(sort_plz);
|
9100
9047
|
FREE(sort_iban_regel);
|
9048
|
+
#line 9602 "ruby/ext/konto_check_raw/konto_check.lxx"
|
9101
9049
|
if(name_raw && name_data!=name_raw)
|
9102
9050
|
FREE(name_raw);
|
9103
9051
|
else
|
@@ -9166,6 +9114,7 @@ DLL_EXPORT int lut_cleanup(void)
|
|
9166
9114
|
lut_cleanup(); /* neuer Versuch, aufzur�umen */
|
9167
9115
|
RETURN(INIT_FATAL_ERROR);
|
9168
9116
|
}
|
9117
|
+
#line 9676 "ruby/ext/konto_check_raw/konto_check.lxx"
|
9169
9118
|
init_status&=1;
|
9170
9119
|
init_in_progress=0;
|
9171
9120
|
return OK;
|
@@ -9339,8 +9288,8 @@ static void init_atoi_table(void)
|
|
9339
9288
|
unsigned long l;
|
9340
9289
|
|
9341
9290
|
#if 1
|
9342
|
-
/* �nderungen zum
|
9343
|
-
if(time(NULL)>
|
9291
|
+
/* �nderungen zum 07.09.2015 aktivieren */
|
9292
|
+
if(time(NULL)>1441576800 ||0)pz_aenderungen_aktivieren_2015_09=1;
|
9344
9293
|
#endif
|
9345
9294
|
|
9346
9295
|
/* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
|
@@ -9606,6 +9555,7 @@ static void init_atoi_table(void)
|
|
9606
9555
|
lut_block_name2[126]="2. IBAN Regel idx";
|
9607
9556
|
lut_block_name2[127]="2. BIC Hauptst.idx";
|
9608
9557
|
lut_blocklen_max=453;
|
9558
|
+
#line 9918 "ruby/ext/konto_check_raw/konto_check.lxx"
|
9609
9559
|
init_status|=1;
|
9610
9560
|
}
|
9611
9561
|
|
@@ -9665,6 +9615,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9665
9615
|
|
9666
9616
|
switch(pz_methode){
|
9667
9617
|
|
9618
|
+
#line 9981 "ruby/ext/konto_check_raw/konto_check.lxx"
|
9668
9619
|
/* Berechnungsmethoden 00 bis 09 +���3
|
9669
9620
|
Berechnung nach der Methode 00 +���4 */
|
9670
9621
|
/*
|
@@ -9975,8 +9926,36 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9975
9926
|
retvals->pz_methode=8;
|
9976
9927
|
}
|
9977
9928
|
#endif
|
9978
|
-
|
9979
|
-
|
9929
|
+
|
9930
|
+
/* Kontonummern unter 60 000: keine Pr�fzifferberechnung oder falsch???
|
9931
|
+
*
|
9932
|
+
* Die Beschreibung in der PDF-Datei sagt nichts dar�ber aus, was mit Kontonummern
|
9933
|
+
* unter 60 000 ist. Ich bekam jetzt zwei Emails, bei denen reale Konten in diesem
|
9934
|
+
* Bereich existieren; ein kleiner Test mit verschiedenen "Konkurrenzprodukten"
|
9935
|
+
* ergibt folgendes Bild:
|
9936
|
+
*
|
9937
|
+
* ckonto.de: ok
|
9938
|
+
* ktoblzcheck: ok
|
9939
|
+
* kontonummern.de: ok, ohne Pr�fzifferberechnung
|
9940
|
+
* iban-rechner.de: ok, ohne Pr�fzifferberechnung
|
9941
|
+
* VR-IBAN-Konverter: ok
|
9942
|
+
* SEPA-Account-Konverter (Sparkasse): ok
|
9943
|
+
*
|
9944
|
+
* BAV: falsch
|
9945
|
+
* bankleitzahlen.de: Pr�ffehler.
|
9946
|
+
* bankdatencheck.de: nicht g�ltig
|
9947
|
+
*
|
9948
|
+
* Die Mehrheit der Programme sieht die Konten als richtig an (bzw. ohne
|
9949
|
+
* Pr�fzifferberechnung als g�ltig). Daher - und vor allem auch aufgrund der vorhandenen
|
9950
|
+
* realen Konten - wird der R�ckgabewert f�r diesen Kontenkreis von INVALID_KTO auf
|
9951
|
+
* OK_NO_CHK ge�ndert.
|
9952
|
+
*
|
9953
|
+
* Markus Malkusch hat nach einer kurzen R�ckfrage auch den BAV umgestellt, da� die Konten
|
9954
|
+
* ohne Pr�fung als richtig angesehen werden.
|
9955
|
+
*/
|
9956
|
+
|
9957
|
+
if(strcmp(kto,"0000060000")<0)RETURN(OK_NO_CHK);
|
9958
|
+
|
9980
9959
|
#ifdef __ALPHA
|
9981
9960
|
pz = ((kto[0]<'5') ? (kto[0]-'0')*2 : (kto[0]-'0')*2-9)
|
9982
9961
|
+ (kto[1]-'0')
|
@@ -10300,14 +10279,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
10300
10279
|
* zur�ckgegeben.
|
10301
10280
|
*/
|
10302
10281
|
return FALSE;
|
10303
|
-
#if 0
|
10304
|
-
/* alte Version */
|
10305
|
-
#if BAV_KOMPATIBEL
|
10306
|
-
return BAV_FALSE;
|
10307
|
-
#else
|
10308
|
-
pz=0;
|
10309
|
-
#endif
|
10310
|
-
#endif
|
10311
10282
|
}
|
10312
10283
|
CHECK_PZ10;
|
10313
10284
|
|
@@ -10861,29 +10832,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
10861
10832
|
pz=0;
|
10862
10833
|
else
|
10863
10834
|
pz=11-pz;
|
10864
|
-
|
10865
|
-
/* evl. wurde eine Unterkontonummer weggelassen => nur 8-stellige
|
10866
|
-
* Kontonummer; neuer Versuch mit den Stellen ab der 3. Stelle
|
10867
|
-
*/
|
10868
|
-
if(kto_len==8){
|
10869
|
-
pz = (kto[2]-'0') * 8
|
10870
|
-
+ (kto[3]-'0') * 7
|
10871
|
-
+ (kto[4]-'0') * 6
|
10872
|
-
+ (kto[5]-'0') * 5
|
10873
|
-
+ (kto[6]-'0') * 4
|
10874
|
-
+ (kto[7]-'0') * 3
|
10875
|
-
+ (kto[8]-'0') * 2;
|
10876
|
-
|
10877
|
-
MOD_11_176; /* pz%=11 */
|
10878
|
-
if(pz<=1)
|
10879
|
-
pz=0;
|
10880
|
-
else
|
10881
|
-
pz=11-pz;
|
10882
|
-
CHECK_PZ10;
|
10883
|
-
}
|
10884
|
-
else
|
10885
|
-
return FALSE;
|
10886
|
-
|
10835
|
+
CHECK_PZ8;
|
10887
10836
|
|
10888
10837
|
/* Berechnung nach der Methode 29 +���4 */
|
10889
10838
|
/*
|
@@ -11105,29 +11054,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11105
11054
|
pz=0;
|
11106
11055
|
else
|
11107
11056
|
pz=11-pz;
|
11108
|
-
|
11109
|
-
|
11110
|
-
/* evl. wurde eine Unterkontonummer weggelassen => nur 8-stellige
|
11111
|
-
* Kontonummer; neuer Versuch mit den Stellen ab der 3. Stelle
|
11112
|
-
*/
|
11113
|
-
if(kto_len==8){
|
11114
|
-
pz = (kto[2]-'0') * 7
|
11115
|
-
+ (kto[3]-'0') * 9
|
11116
|
-
+ (kto[4]-'0') * 10
|
11117
|
-
+ (kto[5]-'0') * 5
|
11118
|
-
+ (kto[6]-'0') * 8
|
11119
|
-
+ (kto[7]-'0') * 4
|
11120
|
-
+ (kto[8]-'0') * 2;
|
11121
|
-
|
11122
|
-
MOD_11_352; /* pz%=11 */
|
11123
|
-
if(pz<=1)
|
11124
|
-
pz=0;
|
11125
|
-
else
|
11126
|
-
pz=11-pz;
|
11127
|
-
CHECK_PZ10;
|
11128
|
-
}
|
11129
|
-
else
|
11130
|
-
return FALSE;
|
11057
|
+
CHECK_PZ8;
|
11131
11058
|
|
11132
11059
|
/* Berechnung nach der Methode 35 +���4 */
|
11133
11060
|
/*
|
@@ -11545,7 +11472,37 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11545
11472
|
pz=0;
|
11546
11473
|
else
|
11547
11474
|
pz=11-pz;
|
11548
|
-
|
11475
|
+
CHECK_PZX10;
|
11476
|
+
|
11477
|
+
/* Noch ein Sonderfall aus der IBAN-Regel 49 (WGZ-Bank, diese Pr�fziffermethode
|
11478
|
+
* wird nur von der Bank verwendet). Bei Konten mit einer '9' an der 5. Stelle
|
11479
|
+
* oder 10-stellige Konten die mit '9' beginnen (diese sind schon herumgedreht)
|
11480
|
+
* wird die Ausnahme aus IBAN-Regel 49 angewendet:
|
11481
|
+
*
|
11482
|
+
* F�r Kontonummern mit einer '9' an der 5. Stelle muss die
|
11483
|
+
* Kontonummer, auf deren Basis die IBAN ermittelt wird, abweichend
|
11484
|
+
* berechnet werden. Die ersten 4 Stellen (inkl. aufgef�llter
|
11485
|
+
* Nullen) m�ssen ans Ende gestellt werden, so dass die Kontonummer
|
11486
|
+
* dann immer mit der '9' anf�ngt.
|
11487
|
+
*
|
11488
|
+
* Beispiel:
|
11489
|
+
*
|
11490
|
+
* Kontonummer alt: 0001991182
|
11491
|
+
* Kontonummer f�r die Berechnung der IBAN: 9911820001
|
11492
|
+
*
|
11493
|
+
* Diese neu ermittelte Kontonummer hat keine Pr�fziffer, die
|
11494
|
+
* daher auch nicht gepr�ft werden darf. Ansonsten kann mit
|
11495
|
+
* dieser Kontonummer die IBAN mit der Standard-IBAN-Regel
|
11496
|
+
* ermittelt werden.
|
11497
|
+
*
|
11498
|
+
* Das Verhalten mit der f�hrenden '9' ist nicht in der IBAN-Regel angegeben,
|
11499
|
+
* wurde aber aufgrund realer Kontodaten gefunden und durch eine Nachfrage bei
|
11500
|
+
* der Bank best�tigt (Vielen Dank an Stefan Banse f�r den Hinweis).
|
11501
|
+
*/
|
11502
|
+
if(*kto=='9' || *(kto+4)=='9')
|
11503
|
+
return OK_NO_CHK;
|
11504
|
+
else
|
11505
|
+
return FALSE;
|
11549
11506
|
|
11550
11507
|
/* Berechnung nach der Methode 45 +���4 */
|
11551
11508
|
/*
|
@@ -11993,6 +11950,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11993
11950
|
* ######################################################################
|
11994
11951
|
*/
|
11995
11952
|
|
11953
|
+
#line 11992 "ruby/ext/konto_check_raw/konto_check.lxx"
|
11996
11954
|
case 51:
|
11997
11955
|
if(*(kto+2)=='9'){ /* Ausnahme */
|
11998
11956
|
|
@@ -12254,6 +12212,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12254
12212
|
else
|
12255
12213
|
return FALSE;
|
12256
12214
|
|
12215
|
+
#line 12206 "ruby/ext/konto_check_raw/konto_check.lxx"
|
12216
|
+
#line 12208 "ruby/ext/konto_check_raw/konto_check.lxx"
|
12257
12217
|
/* Berechnung nach der Methode 53 +���4 */
|
12258
12218
|
/*
|
12259
12219
|
* ######################################################################
|
@@ -12552,6 +12512,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12552
12512
|
* # bewerten. #
|
12553
12513
|
* ######################################################################
|
12554
12514
|
*/
|
12515
|
+
#line 12477 "ruby/ext/konto_check_raw/konto_check.lxx"
|
12555
12516
|
case 57:
|
12556
12517
|
#if DEBUG>0
|
12557
12518
|
if(retvals){
|
@@ -13197,6 +13158,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
13197
13158
|
* # Pr�fzifferberechnung) #
|
13198
13159
|
* ######################################################################
|
13199
13160
|
*/
|
13161
|
+
#line 13057 "ruby/ext/konto_check_raw/konto_check.lxx"
|
13200
13162
|
case 66:
|
13201
13163
|
#if DEBUG>0
|
13202
13164
|
case 2066:
|
@@ -15092,8 +15054,18 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15092
15054
|
/* Berechnung nach der Methode 87 +���4 */
|
15093
15055
|
/*
|
15094
15056
|
* ######################################################################
|
15095
|
-
* # Berechnung nach der Methode 87 (ge�ndert zum
|
15057
|
+
* # Berechnung nach der Methode 87 (ge�ndert zum 7.9.15) #
|
15096
15058
|
* ######################################################################
|
15059
|
+
* # #
|
15060
|
+
* # Die Kontonummer ist durch linksb�ndige Nullenauff�llung 10-stellig #
|
15061
|
+
* # darzustellen. Der zur Pr�fzifferberechnung heranzuziehende Teil #
|
15062
|
+
* # befindet sich bei der Methode A und D in den Stellen 4 bis 9 der #
|
15063
|
+
* # Kontonummer und bei den Methoden B und C in Stellen 5 - 9, die #
|
15064
|
+
* # Pr�fziffer in Stelle 10 der Kontonummer. Ergibt die erste #
|
15065
|
+
* # Berechnung der Pr�fziffer nach der Methode A einen Pr�fziffer- #
|
15066
|
+
* # fehler, so sind weitere Berechnungen mit den anderen Methoden #
|
15067
|
+
* # vorzunehmen. #
|
15068
|
+
* # #
|
15097
15069
|
* # Ausnahme: #
|
15098
15070
|
* # Ist nach linksb�ndiger Auff�llung mit Nullen auf 10 Stellen die #
|
15099
15071
|
* # 3. Stelle der Kontonummer = 9 (Sachkonten), so erfolgt die #
|
@@ -15126,18 +15098,28 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15126
15098
|
* # verbleibende Rest wird vom Divisor (7) subtrahiert. Das #
|
15127
15099
|
* # Ergebnis ist die Pr�fziffer. Verbleibt nach der Division kein #
|
15128
15100
|
* # Rest, ist die Pr�fziffer = 0. #
|
15101
|
+
* # #
|
15102
|
+
* # Methode D: #
|
15103
|
+
* # Modulus 11, Gewichtung 2, 3, 4, 5, 6, 7 #
|
15104
|
+
* # Die Stellen 4 bis 9 werden von rechts nach links mit den Ziffern #
|
15105
|
+
* # 2, 3, 4, 5, 6, 7 multipliziert. Die weitere Berechnung und #
|
15106
|
+
* # m�gliche Ergebnisse entsprechen dem Verfahren 06. #
|
15129
15107
|
* ######################################################################
|
15130
15108
|
*/
|
15131
15109
|
|
15132
15110
|
case 87:
|
15133
15111
|
|
15134
|
-
/* Ausnahme, Variante 1
|
15112
|
+
/* Ausnahme, Variante 1
|
15113
|
+
* Die Untermethoden f�r die Sachkonten verschieben sich mit
|
15114
|
+
* der �nderung zum September 2015 (Einf�hrung von Methode D)
|
15115
|
+
* leider auf E und F (statt vorher D und E).
|
15116
|
+
*/
|
15135
15117
|
if(*(kto+2)=='9'){ /* Berechnung wie in Verfahren 51 */
|
15136
15118
|
#if DEBUG>0
|
15137
|
-
case
|
15119
|
+
case 5087:
|
15138
15120
|
if(retvals){
|
15139
|
-
retvals->methode="
|
15140
|
-
retvals->pz_methode=
|
15121
|
+
retvals->methode="87e";
|
15122
|
+
retvals->pz_methode=5087;
|
15141
15123
|
}
|
15142
15124
|
#endif
|
15143
15125
|
pz = 9 * 8
|
@@ -15157,10 +15139,10 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15157
15139
|
|
15158
15140
|
/* Ausnahme, Variante 2 */
|
15159
15141
|
#if DEBUG>0
|
15160
|
-
case
|
15142
|
+
case 6087:
|
15161
15143
|
if(retvals){
|
15162
|
-
retvals->methode="
|
15163
|
-
retvals->pz_methode=
|
15144
|
+
retvals->methode="87f";
|
15145
|
+
retvals->pz_methode=6087;
|
15164
15146
|
}
|
15165
15147
|
#endif
|
15166
15148
|
pz = (kto[0]-'0') * 10
|
@@ -15326,10 +15308,31 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15326
15308
|
retvals->pz_pos=10;
|
15327
15309
|
}
|
15328
15310
|
#endif
|
15329
|
-
if(pz==*(kto+9)-'0')
|
15330
|
-
|
15311
|
+
if(pz==*(kto+9)-'0')return OK;
|
15312
|
+
|
15313
|
+
#if DEBUG>0
|
15314
|
+
case 4087:
|
15315
|
+
if(retvals){
|
15316
|
+
retvals->methode="87d";
|
15317
|
+
retvals->pz_methode=4087;
|
15318
|
+
}
|
15319
|
+
#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
|
+
pz = (kto[3]-'0') * 7
|
15324
|
+
+ (kto[4]-'0') * 6
|
15325
|
+
+ (kto[5]-'0') * 5
|
15326
|
+
+ (kto[6]-'0') * 4
|
15327
|
+
+ (kto[7]-'0') * 3
|
15328
|
+
+ (kto[8]-'0') * 2;
|
15329
|
+
|
15330
|
+
MOD_11_176; /* pz%=11 */
|
15331
|
+
if(pz<=1)
|
15332
|
+
pz=0;
|
15331
15333
|
else
|
15332
|
-
|
15334
|
+
pz=11-pz;
|
15335
|
+
CHECK_PZ10;
|
15333
15336
|
|
15334
15337
|
|
15335
15338
|
/* Berechnung nach der Methode 88 +���4 */
|
@@ -15564,8 +15567,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15564
15567
|
* # Methode A: #
|
15565
15568
|
* # Modulus 11, Gewichtung 2, 3, 4, 5, 6, 7 #
|
15566
15569
|
* # Stellennr.: 1 2 3 4 5 6 7 8 9 A (A = 10) #
|
15567
|
-
* # Kontonr.:
|
15568
|
-
* # Gewichtung:
|
15570
|
+
* # Kontonr.: x x x K K K K K K P #
|
15571
|
+
* # Gewichtung: 7 6 5 4 3 2 #
|
15569
15572
|
* # #
|
15570
15573
|
* # Die Berechnung und m�gliche Ergebnisse entsprechen dem Verfahren #
|
15571
15574
|
* # 06. #
|
@@ -15573,8 +15576,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15573
15576
|
* # Methode B #
|
15574
15577
|
* # Modulus 11, Gewichtung 2, 3, 4, 5, 6 #
|
15575
15578
|
* # Stellennr.: 1 2 3 4 5 6 7 8 9 A (A = 10) #
|
15576
|
-
* # Kontonr.:
|
15577
|
-
* # Gewichtung:
|
15579
|
+
* # Kontonr.: x x x x K K K K K P #
|
15580
|
+
* # Gewichtung: 6 5 4 3 2 #
|
15578
15581
|
* # #
|
15579
15582
|
* # Die Berechnung und die m�glichen Ergebnisse entsprechen dem #
|
15580
15583
|
* # Verfahren 06. #
|
@@ -15582,8 +15585,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15582
15585
|
* # Methode C #
|
15583
15586
|
* # Modulus 7, Gewichtung 2, 3, 4, 5, 6 #
|
15584
15587
|
* # Stellennr.: 1 2 3 4 5 6 7 8 9 A (A = 10) #
|
15585
|
-
* # Kontonr.:
|
15586
|
-
* # Gewichtung:
|
15588
|
+
* # Kontonr.: x x x x K K K K K P #
|
15589
|
+
* # Gewichtung: 6 5 4 3 2 #
|
15587
15590
|
* # #
|
15588
15591
|
* # Die einzelnen Stellen der Kontonummer sind von rechts nach links #
|
15589
15592
|
* # mit den Gewichten zu multiplizieren. Die jeweiligen Produkte #
|
@@ -15785,30 +15788,16 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15785
15788
|
retvals->pz_methode=7090;
|
15786
15789
|
}
|
15787
15790
|
#endif
|
15788
|
-
|
15789
|
-
|
15790
|
-
|
15791
|
-
|
15792
|
-
|
15793
|
-
|
15794
|
-
+ (kto[8]-'0') * 2;
|
15791
|
+
pz = (kto[3]-'0')
|
15792
|
+
+ (kto[4]-'0') * 2
|
15793
|
+
+ (kto[5]-'0')
|
15794
|
+
+ (kto[6]-'0') * 2
|
15795
|
+
+ (kto[7]-'0')
|
15796
|
+
+ (kto[8]-'0') * 2;
|
15795
15797
|
|
15796
|
-
|
15797
|
-
|
15798
|
-
|
15799
|
-
}
|
15800
|
-
else{
|
15801
|
-
#if DEBUG>0
|
15802
|
-
if(!pz_aenderungen_aktivieren){ /* switch-code derzeit noch nicht g�ltig */
|
15803
|
-
if(untermethode==7)return UNDEFINED_SUBMETHOD;
|
15804
|
-
if(retvals){ /* Methode zur�cksetzen, nicht definiert */
|
15805
|
-
retvals->methode="90e";
|
15806
|
-
retvals->pz_methode=5090;
|
15807
|
-
}
|
15808
|
-
}
|
15809
|
-
#endif
|
15810
|
-
return FALSE;
|
15811
|
-
}
|
15798
|
+
MOD_7_56; /* pz%=7 */
|
15799
|
+
if(pz)pz=7-pz;
|
15800
|
+
CHECK_PZ10;
|
15812
15801
|
|
15813
15802
|
/* Berechnung nach der Methode 91 +���4 */
|
15814
15803
|
/*
|
@@ -19222,9 +19211,9 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
19222
19211
|
* # 1. Stelle von links Zahl (Konstante) #
|
19223
19212
|
* # der 10-stelligen #
|
19224
19213
|
* # Kontonummer #
|
19225
|
-
* # 0 4363380 #
|
19226
|
-
* # 1 4363381 #
|
19227
|
-
* # 2 4363382 #
|
19214
|
+
* # 0 4363380 #
|
19215
|
+
* # 1 4363381 #
|
19216
|
+
* # 2 4363382 #
|
19228
19217
|
* # 3 4363383 #
|
19229
19218
|
* # 4 4363384 #
|
19230
19219
|
* # 5 4363385 #
|
@@ -20220,6 +20209,83 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
20220
20209
|
if(pz==10)return FALSE;
|
20221
20210
|
CHECK_PZ10;
|
20222
20211
|
|
20212
|
+
/* Berechnung nach der Methode E2 +���4 */
|
20213
|
+
/*
|
20214
|
+
* ######################################################################
|
20215
|
+
* # Berechnung nach der Methode E2 #
|
20216
|
+
* ######################################################################
|
20217
|
+
* # Modulus 10, Gewichtung 1, 2, 1, 2, 1, 2, 1, 2 #
|
20218
|
+
* # #
|
20219
|
+
* # Die Kontonummer ist 10-stellig, ggf. ist die Kontonummer f�r die #
|
20220
|
+
* # Pr�fzifferberechnung durch linksb�ndige Auff�llung mit Nullen #
|
20221
|
+
* # 10-stellig darzustellen. Die 10. Stelle der Kontonummer ist die #
|
20222
|
+
* # Pr�fziffer. #
|
20223
|
+
* # #
|
20224
|
+
* # Kontonummern, die an der 1. Stelle von links der 10-stelligen #
|
20225
|
+
* # Kontonummer den Wert 6, 7, 8 oder 9 beinhalten, sind falsch. #
|
20226
|
+
* # #
|
20227
|
+
* # Kontonummern, die an der 1. Stelle von links der 10-stelligen #
|
20228
|
+
* # Kontonummer den Wert 0, 1, 2, 3, 4 oder 5 beinhalten, sind wie #
|
20229
|
+
* # folgt zu pr�fen: #
|
20230
|
+
* # #
|
20231
|
+
* # F�r die Berechnung der Pr�fziffer werden die Stellen 2 bis 9 der #
|
20232
|
+
* # Kontonummer von links verwendet. Diese Stellen sind links um #
|
20233
|
+
* # eine Zahl (Konstante) gem�� der folgenden Tabelle zu erg�nzen. #
|
20234
|
+
* # #
|
20235
|
+
* # 1. Stelle von links Zahl (Konstante) #
|
20236
|
+
* # der 10-stelligen #
|
20237
|
+
* # Kontonummer #
|
20238
|
+
* # 0 4383200 #
|
20239
|
+
* # 1 4383201 #
|
20240
|
+
* # 2 4383202 #
|
20241
|
+
* # 3 4383203 #
|
20242
|
+
* # 4 4383204 #
|
20243
|
+
* # 5 4383205 #
|
20244
|
+
* # #
|
20245
|
+
* # Die Berechnung und m�gliche Ergebnisse entsprechen der #
|
20246
|
+
* # Methode 00. #
|
20247
|
+
* ######################################################################
|
20248
|
+
* # Anmerkung zur Berechnung (MP): Die Methode entspricht (bis auf #
|
20249
|
+
* # die Konstante und die zugelassenen Anfangsziffern) genau der #
|
20250
|
+
* # Methode D1. die Berechnung ist daher auch analog. Die #
|
20251
|
+
* # zus�tzliche feste Konstante wird im voraus berechnet und als #
|
20252
|
+
* # Initialwert f�r die Quersumme verwendet. Die Berechnung beginnt #
|
20253
|
+
* # allerdings - entgegen der Beschreibung - mit der ersten Stelle #
|
20254
|
+
* # der Kontonummer, da diese in der Konstanten enthalten ist. #
|
20255
|
+
* ######################################################################
|
20256
|
+
*/
|
20257
|
+
|
20258
|
+
case 142:
|
20259
|
+
#if DEBUG>0
|
20260
|
+
if(retvals){
|
20261
|
+
retvals->methode="E2";
|
20262
|
+
retvals->pz_methode=142;
|
20263
|
+
}
|
20264
|
+
#endif
|
20265
|
+
if(*kto>'5')return INVALID_KTO;
|
20266
|
+
pz=25;
|
20267
|
+
|
20268
|
+
#ifdef __ALPHA
|
20269
|
+
pz+= ((kto[0]<'5') ? (kto[0]-'0')*2 : (kto[0]-'0')*2-9)
|
20270
|
+
+ (kto[1]-'0')
|
20271
|
+
+ ((kto[2]<'5') ? (kto[2]-'0')*2 : (kto[2]-'0')*2-9)
|
20272
|
+
+ (kto[3]-'0')
|
20273
|
+
+ ((kto[4]<'5') ? (kto[4]-'0')*2 : (kto[4]-'0')*2-9)
|
20274
|
+
+ (kto[5]-'0')
|
20275
|
+
+ ((kto[6]<'5') ? (kto[6]-'0')*2 : (kto[6]-'0')*2-9)
|
20276
|
+
+ (kto[7]-'0')
|
20277
|
+
+ ((kto[8]<'5') ? (kto[8]-'0')*2 : (kto[8]-'0')*2-9);
|
20278
|
+
#else
|
20279
|
+
pz+=(kto[1]-'0')+(kto[3]-'0')+(kto[5]-'0')+(kto[7]-'0');
|
20280
|
+
if(kto[0]<'5')pz+=(kto[0]-'0')*2; else pz+=(kto[0]-'0')*2-9;
|
20281
|
+
if(kto[2]<'5')pz+=(kto[2]-'0')*2; else pz+=(kto[2]-'0')*2-9;
|
20282
|
+
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20283
|
+
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20284
|
+
if(kto[8]<'5')pz+=(kto[8]-'0')*2; else pz+=(kto[8]-'0')*2-9;
|
20285
|
+
#endif
|
20286
|
+
MOD_10_80; /* pz%=10 */
|
20287
|
+
if(pz)pz=10-pz;
|
20288
|
+
CHECK_PZ10;
|
20223
20289
|
|
20224
20290
|
/* nicht abgedeckte F�lle +���3 */
|
20225
20291
|
/*
|
@@ -20238,6 +20304,7 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
20238
20304
|
return NOT_IMPLEMENTED;
|
20239
20305
|
}
|
20240
20306
|
}
|
20307
|
+
#line 19060 "ruby/ext/konto_check_raw/konto_check.lxx"
|
20241
20308
|
|
20242
20309
|
/*
|
20243
20310
|
* ######################################################################
|
@@ -20335,7 +20402,7 @@ DLL_EXPORT int kto_check_blz(char *blz,char *kto)
|
|
20335
20402
|
#if DEBUG>0 /* es werden einige Funktionen benutzt, die nur in der Debug-Variante enthalten sind */
|
20336
20403
|
DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,const char **bic,int *regel,RETVAL *retvals)
|
20337
20404
|
{
|
20338
|
-
#
|
20405
|
+
#line 19158 "ruby/ext/konto_check_raw/konto_check.lxx"
|
20339
20406
|
char *blz_o,buffer[32],kto_o[16],*blz_n,*kto_n,*ptr,*dptr;
|
20340
20407
|
const char *bicp;
|
20341
20408
|
int ret,ret_regel,r;
|
@@ -20383,11 +20450,7 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
|
|
20383
20450
|
}
|
20384
20451
|
else /* BLZ und Kto gleich */
|
20385
20452
|
return ret;
|
20386
|
-
#
|
20387
|
-
if(regel)*regel=0;
|
20388
|
-
if(retvals)*retvals=NULL;
|
20389
|
-
return kto_check_regel(blz,kto);
|
20390
|
-
#endif
|
20453
|
+
#line 19206 "ruby/ext/konto_check_raw/konto_check.lxx"
|
20391
20454
|
}
|
20392
20455
|
|
20393
20456
|
#else /* !DEBUG */
|
@@ -20396,7 +20459,6 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
|
|
20396
20459
|
|
20397
20460
|
DLL_EXPORT int kto_check_regel(char *blz,char *kto)
|
20398
20461
|
{
|
20399
|
-
#if USE_IBAN_RULES
|
20400
20462
|
char *blz_o,blz_n[10],kto_o[16],kto_n[16],*ptr,*dptr;
|
20401
20463
|
const char *bicp;
|
20402
20464
|
int ret,ret_regel,regel;
|
@@ -20424,9 +20486,6 @@ DLL_EXPORT int kto_check_regel(char *blz,char *kto)
|
|
20424
20486
|
}
|
20425
20487
|
else /* BLZ und Kto gleich */
|
20426
20488
|
return ret;
|
20427
|
-
#else
|
20428
|
-
return kto_check_blz(blz,kto);
|
20429
|
-
#endif
|
20430
20489
|
}
|
20431
20490
|
|
20432
20491
|
/* Funktion kto_check_pz() +���1 */
|
@@ -20471,288 +20530,6 @@ DLL_EXPORT int kto_check_pz(char *pz,char *kto,char *blz)
|
|
20471
20530
|
#endif
|
20472
20531
|
}
|
20473
20532
|
|
20474
|
-
/* Funktion kto_check_blz_x() +���1 */
|
20475
|
-
/* ###########################################################################
|
20476
|
-
* # Die Funktion kto_check_blz_x() ist eine Hilfsfunktion f�r die Funktion #
|
20477
|
-
* # iban_gen(). Diese Funktion bestimmt, ob f�r ein angegebenes Konto evl. #
|
20478
|
-
* # ein Unterkonto weggelassen wurde (betrifft die Methode 13, 26, 50, 63, #
|
20479
|
-
* # 76 und C7; ansonsten entspricht sie der Funktion kto_check_blz(). #
|
20480
|
-
* # #
|
20481
|
-
* # Parameter: #
|
20482
|
-
* # blz: Bankleitzahl (immer 8-stellig) #
|
20483
|
-
* # kto: Kontonummer #
|
20484
|
-
* # uk_cnt: R�ckgabewert: Anzahl weggelassener Unterkontostellen #
|
20485
|
-
* # #
|
20486
|
-
* # Copyright (C) 2010 Michael Plugge <m.plugge@hs-mannheim.de> #
|
20487
|
-
* ###########################################################################
|
20488
|
-
*/
|
20489
|
-
|
20490
|
-
static int kto_check_blz_x(char *blz,char *kto,int *uk_cnt)
|
20491
|
-
{
|
20492
|
-
char *ptr,*dptr,xkto[32];
|
20493
|
-
int i,p1=0,kto_len,pz,fuehrende_nullen;
|
20494
|
-
int idx,pz_methode,untermethode=0;
|
20495
|
-
RETVAL *retvals=NULL;
|
20496
|
-
|
20497
|
-
if(!blz || !kto)return MISSING_PARAMETER;
|
20498
|
-
*uk_cnt=0;
|
20499
|
-
if(init_status!=7){
|
20500
|
-
if(init_status&24)INITIALIZE_WAIT;
|
20501
|
-
if(init_status<7)return LUT2_NOT_INITIALIZED;
|
20502
|
-
}
|
20503
|
-
if((idx=lut_index(blz))<0)return idx;
|
20504
|
-
pz_methode=pz_methoden[idx];
|
20505
|
-
|
20506
|
-
memset(xkto,'0',12);
|
20507
|
-
for(ptr=kto;*ptr=='0' || *ptr==' ' || *ptr=='\t';ptr++);
|
20508
|
-
for(kto_len=0;*ptr && *ptr!=' ' && *ptr!='\t';kto_len++,ptr++);
|
20509
|
-
dptr=xkto+10;
|
20510
|
-
*dptr--=0;
|
20511
|
-
if(kto_len<1 || kto_len>10)return INVALID_KTO_LENGTH;
|
20512
|
-
for(ptr--,i=kto_len;i-->0;*dptr--= *ptr--);
|
20513
|
-
kto=xkto;
|
20514
|
-
for(fuehrende_nullen=i=0;i<3;i++)if(kto[i]=='0')fuehrende_nullen++; else break;
|
20515
|
-
|
20516
|
-
switch(pz_methode){
|
20517
|
-
case 13:
|
20518
|
-
/* Methode 13a */
|
20519
|
-
pz =(kto[1]-'0')+(kto[3]-'0')+(kto[5]-'0');
|
20520
|
-
if(kto[2]<'5')pz+=(kto[2]-'0')*2; else pz+=(kto[2]-'0')*2-9;
|
20521
|
-
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20522
|
-
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20523
|
-
MOD_10_80; /* pz%=10 */
|
20524
|
-
if(pz)pz=10-pz;
|
20525
|
-
CHECK_PZX8;
|
20526
|
-
if(fuehrende_nullen<2)return FALSE; /* Methode 13b nur m�glich, falls 1. und 2. Stelle '0' sind */
|
20527
|
-
|
20528
|
-
/* Methode 13b: 2-stelliges Unterkonto weggelassen */
|
20529
|
-
*uk_cnt=2;
|
20530
|
-
pz =(kto[3]-'0')+(kto[5]-'0')+(kto[7]-'0');
|
20531
|
-
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20532
|
-
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20533
|
-
if(kto[8]<'5')pz+=(kto[8]-'0')*2; else pz+=(kto[8]-'0')*2-9;
|
20534
|
-
|
20535
|
-
MOD_10_80; /* pz%=10 */
|
20536
|
-
if(pz)pz=10-pz;
|
20537
|
-
CHECK_PZ10;
|
20538
|
-
|
20539
|
-
case 26:
|
20540
|
-
if(fuehrende_nullen>=2){
|
20541
|
-
/* Unterkontonummer ausgelassen */
|
20542
|
-
*uk_cnt=2;
|
20543
|
-
pz = (kto[2]-'0') * 2
|
20544
|
-
+ (kto[3]-'0') * 7
|
20545
|
-
+ (kto[4]-'0') * 6
|
20546
|
-
+ (kto[5]-'0') * 5
|
20547
|
-
+ (kto[6]-'0') * 4
|
20548
|
-
+ (kto[7]-'0') * 3
|
20549
|
-
+ (kto[8]-'0') * 2;
|
20550
|
-
|
20551
|
-
MOD_11_176; /* pz%=11 */
|
20552
|
-
if(pz<=1)
|
20553
|
-
pz=0;
|
20554
|
-
else
|
20555
|
-
pz=11-pz;
|
20556
|
-
CHECK_PZ10;
|
20557
|
-
}
|
20558
|
-
else{
|
20559
|
-
*uk_cnt=-1; /* Unterkonto angegeben */
|
20560
|
-
pz = (kto[0]-'0') * 2
|
20561
|
-
+ (kto[1]-'0') * 7
|
20562
|
-
+ (kto[2]-'0') * 6
|
20563
|
-
+ (kto[3]-'0') * 5
|
20564
|
-
+ (kto[4]-'0') * 4
|
20565
|
-
+ (kto[5]-'0') * 3
|
20566
|
-
+ (kto[6]-'0') * 2;
|
20567
|
-
|
20568
|
-
MOD_11_176; /* pz%=11 */
|
20569
|
-
if(pz<=1)
|
20570
|
-
pz=0;
|
20571
|
-
else
|
20572
|
-
pz=11-pz;
|
20573
|
-
CHECK_PZ8;
|
20574
|
-
}
|
20575
|
-
|
20576
|
-
case 50:
|
20577
|
-
/* Methode 50a */
|
20578
|
-
pz = (kto[0]-'0') * 7
|
20579
|
-
+ (kto[1]-'0') * 6
|
20580
|
-
+ (kto[2]-'0') * 5
|
20581
|
-
+ (kto[3]-'0') * 4
|
20582
|
-
+ (kto[4]-'0') * 3
|
20583
|
-
+ (kto[5]-'0') * 2;
|
20584
|
-
|
20585
|
-
MOD_11_176; /* pz%=11 */
|
20586
|
-
if(pz<=1)
|
20587
|
-
pz=0;
|
20588
|
-
else
|
20589
|
-
pz=11-pz;
|
20590
|
-
CHECK_PZX7;
|
20591
|
-
|
20592
|
-
/* Methode 50b
|
20593
|
-
*
|
20594
|
-
* es ist eine reale Kontonummer bekannt, bei der rechts nur eine
|
20595
|
-
* Null weggelassen wurde; daher wird die Berechnung f�r die
|
20596
|
-
* Methode 50b leicht modifiziert, so da� eine, zwei oder drei
|
20597
|
-
* Stellen der Unterkontonummer 000 weggelassen werden k�nnen.
|
20598
|
-
*/
|
20599
|
-
if(kto[0]=='0' && kto[1]=='0' && kto[2]=='0'){
|
20600
|
-
*uk_cnt=3;
|
20601
|
-
pz = (kto[3]-'0') * 7
|
20602
|
-
+ (kto[4]-'0') * 6
|
20603
|
-
+ (kto[5]-'0') * 5
|
20604
|
-
+ (kto[6]-'0') * 4
|
20605
|
-
+ (kto[7]-'0') * 3
|
20606
|
-
+ (kto[8]-'0') * 2;
|
20607
|
-
|
20608
|
-
MOD_11_176; /* pz%=11 */
|
20609
|
-
if(pz<=1)
|
20610
|
-
pz=0;
|
20611
|
-
else
|
20612
|
-
pz=11-pz;
|
20613
|
-
CHECK_PZ10;
|
20614
|
-
}
|
20615
|
-
else if(kto[0]=='0' && kto[1]=='0' && kto[9]=='0'){
|
20616
|
-
*uk_cnt=2;
|
20617
|
-
pz = (kto[2]-'0') * 7
|
20618
|
-
+ (kto[3]-'0') * 6
|
20619
|
-
+ (kto[4]-'0') * 5
|
20620
|
-
+ (kto[5]-'0') * 4
|
20621
|
-
+ (kto[6]-'0') * 3
|
20622
|
-
+ (kto[7]-'0') * 2;
|
20623
|
-
|
20624
|
-
MOD_11_176; /* pz%=11 */
|
20625
|
-
if(pz<=1)
|
20626
|
-
pz=0;
|
20627
|
-
else
|
20628
|
-
pz=11-pz;
|
20629
|
-
CHECK_PZ9;
|
20630
|
-
}
|
20631
|
-
else if(kto[0]=='0' && kto[8]=='0' && kto[9]=='0'){
|
20632
|
-
*uk_cnt=1;
|
20633
|
-
pz = (kto[1]-'0') * 7
|
20634
|
-
+ (kto[2]-'0') * 6
|
20635
|
-
+ (kto[3]-'0') * 5
|
20636
|
-
+ (kto[4]-'0') * 4
|
20637
|
-
+ (kto[5]-'0') * 3
|
20638
|
-
+ (kto[6]-'0') * 2;
|
20639
|
-
|
20640
|
-
MOD_11_176; /* pz%=11 */
|
20641
|
-
if(pz<=1)
|
20642
|
-
pz=0;
|
20643
|
-
else
|
20644
|
-
pz=11-pz;
|
20645
|
-
CHECK_PZ8;
|
20646
|
-
}
|
20647
|
-
return FALSE;
|
20648
|
-
|
20649
|
-
case 63:
|
20650
|
-
if(*kto!='0')return INVALID_KTO;
|
20651
|
-
if(*(kto+1)=='0' && *(kto+2)=='0'){ /* wahrscheinlich Unterkonto weggelassen */
|
20652
|
-
*uk_cnt=2;
|
20653
|
-
pz=(kto[3]-'0')+(kto[5]-'0')+(kto[7]-'0');
|
20654
|
-
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20655
|
-
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20656
|
-
if(kto[8]<'5')pz+=(kto[8]-'0')*2; else pz+=(kto[8]-'0')*2-9;
|
20657
|
-
MOD_10_80; /* pz%=10 */
|
20658
|
-
if(pz)pz=10-pz;
|
20659
|
-
CHECK_PZX10;
|
20660
|
-
}
|
20661
|
-
pz=(kto[1]-'0')+(kto[3]-'0')+(kto[5]-'0');
|
20662
|
-
if(kto[2]<'5')pz+=(kto[2]-'0')*2; else pz+=(kto[2]-'0')*2-9;
|
20663
|
-
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20664
|
-
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20665
|
-
MOD_10_80; /* pz%=10 */
|
20666
|
-
if(pz)pz=10-pz;
|
20667
|
-
CHECK_PZ8;
|
20668
|
-
|
20669
|
-
case 76:
|
20670
|
-
/* Methode 76a */
|
20671
|
-
if((p1= *kto)=='1' || p1=='2' || p1=='3' || p1=='5')return INVALID_KTO;
|
20672
|
-
pz = (kto[1]-'0') * 7
|
20673
|
-
+ (kto[2]-'0') * 6
|
20674
|
-
+ (kto[3]-'0') * 5
|
20675
|
-
+ (kto[4]-'0') * 4
|
20676
|
-
+ (kto[5]-'0') * 3
|
20677
|
-
+ (kto[6]-'0') * 2;
|
20678
|
-
|
20679
|
-
MOD_11_176; /* pz%=11 */
|
20680
|
-
CHECK_PZX8;
|
20681
|
-
|
20682
|
-
/* Methode 76b */
|
20683
|
-
if(kto[0]!='0' || kto[1]!='0')return FALSE;
|
20684
|
-
if((p1=kto[2])=='1' || p1=='2' || p1=='3' || p1=='5')return INVALID_KTO;
|
20685
|
-
*uk_cnt=2;
|
20686
|
-
pz = (kto[3]-'0') * 7
|
20687
|
-
+ (kto[4]-'0') * 6
|
20688
|
-
+ (kto[5]-'0') * 5
|
20689
|
-
+ (kto[6]-'0') * 4
|
20690
|
-
+ (kto[7]-'0') * 3
|
20691
|
-
+ (kto[8]-'0') * 2;
|
20692
|
-
|
20693
|
-
MOD_11_176; /* pz%=11 */
|
20694
|
-
if(pz==10)return INVALID_KTO;
|
20695
|
-
CHECK_PZ10;
|
20696
|
-
|
20697
|
-
case 127:
|
20698
|
-
if(*kto=='0'){ /* bei Methode 63 sind 10-stellige Kontonummern falsch */
|
20699
|
-
if(*(kto+1)=='0' && *(kto+2)=='0'){
|
20700
|
-
|
20701
|
-
/* Methode C7c */
|
20702
|
-
|
20703
|
-
/* wahrscheinlich Unterkonto weggelassen; das kommt wohl eher
|
20704
|
-
* vor als 7-stellige Nummern (Hinweis T.F.); stimmt auch mit
|
20705
|
-
* http://www.kontonummern.de/check.php �berein.
|
20706
|
-
*/
|
20707
|
-
*uk_cnt=2;
|
20708
|
-
pz=(kto[3]-'0')+(kto[5]-'0')+(kto[7]-'0');
|
20709
|
-
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20710
|
-
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20711
|
-
if(kto[8]<'5')pz+=(kto[8]-'0')*2; else pz+=(kto[8]-'0')*2-9;
|
20712
|
-
MOD_10_80; /* pz%=10 */
|
20713
|
-
if(pz)pz=10-pz;
|
20714
|
-
CHECK_PZX10;
|
20715
|
-
*uk_cnt=0; /* Bedingung nicht erf�llt, Unterkto. zur�cksetzen */
|
20716
|
-
}
|
20717
|
-
/* Methode C7a */
|
20718
|
-
pz=(kto[1]-'0')+(kto[3]-'0')+(kto[5]-'0');
|
20719
|
-
if(kto[2]<'5')pz+=(kto[2]-'0')*2; else pz+=(kto[2]-'0')*2-9;
|
20720
|
-
if(kto[4]<'5')pz+=(kto[4]-'0')*2; else pz+=(kto[4]-'0')*2-9;
|
20721
|
-
if(kto[6]<'5')pz+=(kto[6]-'0')*2; else pz+=(kto[6]-'0')*2-9;
|
20722
|
-
MOD_10_80; /* pz%=10 */
|
20723
|
-
if(pz)pz=10-pz;
|
20724
|
-
CHECK_PZX8;
|
20725
|
-
}
|
20726
|
-
|
20727
|
-
/* Methode C7b */
|
20728
|
-
/* Variante 2 */
|
20729
|
-
pz = (kto[0]-'0') * 4
|
20730
|
-
+ (kto[1]-'0') * 3
|
20731
|
-
+ (kto[2]-'0') * 2
|
20732
|
-
+ (kto[3]-'0') * 7
|
20733
|
-
+ (kto[4]-'0') * 6
|
20734
|
-
+ (kto[5]-'0') * 5
|
20735
|
-
+ (kto[6]-'0') * 4
|
20736
|
-
+ (kto[7]-'0') * 3
|
20737
|
-
+ (kto[8]-'0') * 2;
|
20738
|
-
|
20739
|
-
MOD_11_176; /* pz%=11 */
|
20740
|
-
if(pz<=1)
|
20741
|
-
pz=0;
|
20742
|
-
else
|
20743
|
-
pz=11-pz;
|
20744
|
-
CHECK_PZ10;
|
20745
|
-
|
20746
|
-
default:
|
20747
|
-
*uk_cnt=-2;
|
20748
|
-
#if DEBUG>0
|
20749
|
-
return kto_check_int(blz,pz_methode,kto,untermethode,NULL);
|
20750
|
-
#else
|
20751
|
-
return kto_check_int(blz,pz_methode,kto);
|
20752
|
-
#endif
|
20753
|
-
}
|
20754
|
-
}
|
20755
|
-
|
20756
20533
|
/* Funktion kto_check_blz_dbg() +���1 */
|
20757
20534
|
/* ###########################################################################
|
20758
20535
|
* # Die Funktion kto_check_blz_dbg() ist die Debug-Version von #
|
@@ -20823,6 +20600,7 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
|
|
20823
20600
|
* # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
|
20824
20601
|
* ###########################################################################
|
20825
20602
|
*/
|
20603
|
+
#line 19356 "ruby/ext/konto_check_raw/konto_check.lxx"
|
20826
20604
|
DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
|
20827
20605
|
{
|
20828
20606
|
int untermethode,pz_methode;
|
@@ -21058,6 +20836,7 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
|
|
21058
20836
|
}
|
21059
20837
|
else
|
21060
20838
|
**user_info_p=0;
|
20839
|
+
#line 19577 "ruby/ext/konto_check_raw/konto_check.lxx"
|
21061
20840
|
FREE(prolog);
|
21062
20841
|
return OK;
|
21063
20842
|
}
|
@@ -21193,19 +20972,23 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
|
|
21193
20972
|
return __DATE__ ", " __TIME__; /* Compilierdatum und -zeit */
|
21194
20973
|
case 4: /* Datum der Pr�fziffermethode */
|
21195
20974
|
#if 1
|
21196
|
-
if(
|
21197
|
-
return "
|
20975
|
+
if(pz_aenderungen_aktivieren_2015_09)
|
20976
|
+
return "07.09.2015";
|
21198
20977
|
else
|
21199
|
-
return "
|
20978
|
+
return "08.06.2015 (Aenderungen vom 07.09.2015 enthalten aber noch nicht aktiviert)";
|
21200
20979
|
#else
|
21201
|
-
return "
|
20980
|
+
return "07.09.2015";
|
21202
20981
|
#endif
|
21203
20982
|
case 5:
|
21204
|
-
return "
|
20983
|
+
return "07.09.2015";
|
21205
20984
|
case 6:
|
21206
|
-
return "
|
20985
|
+
return "22. August 2015"; /* Klartext-Datum der Bibliotheksversion */
|
21207
20986
|
case 7:
|
21208
|
-
return "final";
|
20987
|
+
return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
|
20988
|
+
case 8:
|
20989
|
+
return "5"; /* Hauptversionszahl */
|
20990
|
+
case 9:
|
20991
|
+
return "8"; /* Unterversionszahl */
|
21209
20992
|
}
|
21210
20993
|
}
|
21211
20994
|
|
@@ -21351,6 +21134,7 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
|
|
21351
21134
|
default:
|
21352
21135
|
break;
|
21353
21136
|
}
|
21137
|
+
#line 19814 "ruby/ext/konto_check_raw/konto_check.lxx"
|
21354
21138
|
fputc('\n',out);
|
21355
21139
|
while(--i)fputc('=',out);
|
21356
21140
|
fputc('\n',out);
|
@@ -21485,10 +21269,7 @@ DLL_EXPORT int rebuild_blzfile(char *inputname,char *outputname,UINT4 set)
|
|
21485
21269
|
if(ret<=0)RETURN(ret);
|
21486
21270
|
}
|
21487
21271
|
else /* set-Parameter 1 oder 2: LUT-Datei als Eingabedatei */
|
21488
|
-
if(set
|
21489
|
-
set=1;
|
21490
|
-
else if(set>2)
|
21491
|
-
set=2;
|
21272
|
+
if(set>2)set=2; /* set darf nur 0, 1 oder 2 sein; 0 wurde schon behandelt, negative Werte gibt es nicht (UINT4 Parameter) */
|
21492
21273
|
if((ret=kto_check_init_p(inputname,9,set,0))<=0)RETURN(ret);
|
21493
21274
|
|
21494
21275
|
if(!(out=fopen(outputname,"w"))){
|
@@ -21621,7 +21402,7 @@ DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto)
|
|
21621
21402
|
* iban_bic_gen() genommen, ansonsten der aus lut_bic().
|
21622
21403
|
*/
|
21623
21404
|
if(retval)*retval=OK;
|
21624
|
-
if((j=lut_index(blz2))
|
21405
|
+
if((j=lut_index(blz2))<0){
|
21625
21406
|
if(retval)*retval=j;
|
21626
21407
|
return "";
|
21627
21408
|
}
|
@@ -21678,6 +21459,7 @@ DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
|
|
21678
21459
|
return iban2bic(iban,retval,b,k);
|
21679
21460
|
}
|
21680
21461
|
|
21462
|
+
#line 20139 "ruby/ext/konto_check_raw/konto_check.lxx"
|
21681
21463
|
/* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
|
21682
21464
|
/* ###########################################################################
|
21683
21465
|
* # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
|
@@ -21812,9 +21594,6 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
|
|
21812
21594
|
char c,check[128],iban[128],kto_n[16],blz_n[12],*ptr,*dptr;
|
21813
21595
|
const char *bic;
|
21814
21596
|
int j,ret,ret_regel,blz_i,flags,regel;
|
21815
|
-
#if !USE_IBAN_RULES
|
21816
|
-
int uk_cnt=-1;
|
21817
|
-
#endif
|
21818
21597
|
UINT4 zahl,rest;
|
21819
21598
|
|
21820
21599
|
if(bicp)*bicp=NULL;
|
@@ -21845,7 +21624,6 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
|
|
21845
21624
|
blz_i=b8[I blz[0]]+b7[I blz[1]]+b6[I blz[2]]+b5[I blz[3]]+b4[I blz[4]]+b3[I blz[5]]+b2[I blz[6]]+b1[I blz[7]];
|
21846
21625
|
|
21847
21626
|
/* BLZ und Kontonummer in eigenen Speicherbereich kopieren, Konto links mit Nullen f�llen */
|
21848
|
-
#if USE_IBAN_RULES
|
21849
21627
|
for(ptr=blz,dptr=blz_n;(*dptr++=*ptr++););
|
21850
21628
|
for(ptr=kto;*ptr;ptr++); /* Ende von kto suchen */
|
21851
21629
|
ptr--;
|
@@ -21886,16 +21664,6 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
|
|
21886
21664
|
ret_regel=OK;
|
21887
21665
|
}
|
21888
21666
|
if(ret_regel==OK_IBAN_WITHOUT_KC_TEST || ret_regel==OK_KTO_REPLACED_NO_PZ)flags|=1; /* kein Test der Bankverbindung */
|
21889
|
-
#else
|
21890
|
-
ret_regel=OK;
|
21891
|
-
if(!(flags&2) && own_iban){
|
21892
|
-
/* testen, ob die BLZ in der "Verbotsliste" steht */
|
21893
|
-
if(bsearch(&blz_i,own_iban,own_iban_cnt,sizeof(int),cmp_int)){
|
21894
|
-
if(retval)*retval=NO_OWN_IBAN_CALCULATION;
|
21895
|
-
return NULL;
|
21896
|
-
}
|
21897
|
-
}
|
21898
|
-
#endif
|
21899
21667
|
|
21900
21668
|
/* IBAN-Regel 0000 00: BLZ durch Nachfolge-BLZ ersetzen, falls eine
|
21901
21669
|
* solche existiert. F�r einige Konten wird die BLZ auch in den
|
@@ -21934,53 +21702,10 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
|
|
21934
21702
|
|
21935
21703
|
/* erstmal das Konto testen */
|
21936
21704
|
if(!(flags&1)){ /* Test der Bankverbindung */
|
21937
|
-
#if USE_IBAN_RULES
|
21938
21705
|
if((ret=kto_check_blz(blz,kto))<=0){ /* Konto fehlerhaft */
|
21939
21706
|
if(retval)*retval=ret;
|
21940
21707
|
return NULL;
|
21941
21708
|
}
|
21942
|
-
#else
|
21943
|
-
if((ret=kto_check_blz_x(blz,kto,&uk_cnt))<=0){ /* Konto fehlerhaft */
|
21944
|
-
if(retval)*retval=ret;
|
21945
|
-
return NULL;
|
21946
|
-
}
|
21947
|
-
|
21948
|
-
/* bei einigen Methoden (13, 26, 50, 63, 76 und C7) kann u.U. ein
|
21949
|
-
* Unterkonto weggelassen worden sein. N�heres dazu in der Funktion
|
21950
|
-
* kto_check_blz_x().
|
21951
|
-
*
|
21952
|
-
* *** (alter Code, mit den IBAN-Regeln ist dieser Kommentar nicht mehr aktuell) ***
|
21953
|
-
* Falls dies der Fall war (uk_cnt>0) wird es hier wieder an der
|
21954
|
-
* richtigen Stelle eingef�gt; es wird allerdings als Fehler angesehen
|
21955
|
-
* (mit dem Fehlercode OK_UNTERKONTO_ATTACHED). Falls ein Unterkonto
|
21956
|
-
* m�glich bzw. angegeben ist, ist das normalerweise ein Zeichen daf�r
|
21957
|
-
* da� das betreffende Institut einer Selbstberechnung nicht zugestimmt
|
21958
|
-
* hat; es wird dann nur eine Warnung ausgegeben (OK_UNTERKONTO_POSSIBLE
|
21959
|
-
* bzw. OK_UNTERKONTO_GIVEN), aber diese Werte sind gr��er als 0 und
|
21960
|
-
* werden insofern nicht als Fehler gerechnet. Das Ergebnis kann
|
21961
|
-
* allerdings u.U. falsch sein und sollte mit Vorsicht benutzt werden.
|
21962
|
-
*/
|
21963
|
-
if(uk_cnt>0){
|
21964
|
-
for(ptr=kto,dptr=kto_n;(*dptr=*ptr++);dptr++);
|
21965
|
-
*dptr++='0';
|
21966
|
-
if(uk_cnt>1)*dptr++='0';
|
21967
|
-
if(uk_cnt>2)*dptr++='0';
|
21968
|
-
*dptr=0;
|
21969
|
-
if((ret=kto_check_blz(blz,kto_n))>0){ /* Unterkonto mu� angeh�ngt werden */
|
21970
|
-
kto=kto_n;
|
21971
|
-
ret_regel=OK_UNTERKONTO_ATTACHED;
|
21972
|
-
}
|
21973
|
-
}
|
21974
|
-
else if(!uk_cnt){
|
21975
|
-
ret_regel=OK_UNTERKONTO_POSSIBLE;
|
21976
|
-
}
|
21977
|
-
else if(uk_cnt==-1){
|
21978
|
-
ret_regel=OK_UNTERKONTO_GIVEN;
|
21979
|
-
}
|
21980
|
-
else{ /* uk_cnt==-2 */
|
21981
|
-
ret_regel=OK;
|
21982
|
-
}
|
21983
|
-
#endif
|
21984
21709
|
}
|
21985
21710
|
else
|
21986
21711
|
if(ret_regel!=OK_IBAN_WITHOUT_KC_TEST && ret_regel!=OK_KTO_REPLACED_NO_PZ)ret_regel=LUT2_KTO_NOT_CHECKED;
|
@@ -22341,7 +22066,7 @@ DLL_EXPORT int iban_check(char *iban,int *retval)
|
|
22341
22066
|
* falls nicht, Fehlermeldung/Warnung.
|
22342
22067
|
*/
|
22343
22068
|
j=lut_index(blz2);
|
22344
|
-
if(j
|
22069
|
+
if(j>=0){
|
22345
22070
|
if((ret=iban_init())<OK)return ret; /* alle notwendigen Blocks kontrollieren, evl. nachladen */
|
22346
22071
|
uk=uk_pz_methoden[pz_methoden[j]];
|
22347
22072
|
nachfolge=nachfolge_blz[startidx[j]];
|
@@ -22567,6 +22292,7 @@ DLL_EXPORT int ipi_check(char *zweck)
|
|
22567
22292
|
* # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
|
22568
22293
|
* ###########################################################################
|
22569
22294
|
*/
|
22295
|
+
#line 20972 "ruby/ext/konto_check_raw/konto_check.lxx"
|
22570
22296
|
|
22571
22297
|
/* Funktion volltext_zeichen() +���2 */
|
22572
22298
|
/* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
|
@@ -23412,6 +23138,7 @@ static int qcmp_bic_h(const void *ap,const void *bp)
|
|
23412
23138
|
return a-b;
|
23413
23139
|
}
|
23414
23140
|
|
23141
|
+
#line 21818 "ruby/ext/konto_check_raw/konto_check.lxx"
|
23415
23142
|
|
23416
23143
|
/* Funktion qcmp_bic() +���3 */
|
23417
23144
|
static int qcmp_bic(const void *ap,const void *bp)
|
@@ -23516,6 +23243,7 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
|
|
23516
23243
|
else
|
23517
23244
|
return a-b;
|
23518
23245
|
}
|
23246
|
+
#line 21833 "ruby/ext/konto_check_raw/konto_check.lxx"
|
23519
23247
|
|
23520
23248
|
/* Funktion init_blzf() +���2
|
23521
23249
|
* Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
|
@@ -23583,6 +23311,7 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
|
|
23583
23311
|
}
|
23584
23312
|
|
23585
23313
|
/* Funktion suche_int1() +���2 */
|
23314
|
+
#line 21901 "ruby/ext/konto_check_raw/konto_check.lxx"
|
23586
23315
|
static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23587
23316
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
|
23588
23317
|
{
|
@@ -23633,6 +23362,7 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
|
|
23633
23362
|
}
|
23634
23363
|
|
23635
23364
|
/* Funktion suche_int2() +���2 */
|
23365
|
+
#line 21952 "ruby/ext/konto_check_raw/konto_check.lxx"
|
23636
23366
|
static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23637
23367
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
|
23638
23368
|
{
|
@@ -24020,6 +23750,7 @@ DLL_EXPORT int lut_suche(int such_id,char *such_cmd,UINT4 *such_cnt,UINT4 **fili
|
|
24020
23750
|
if(ret==KEY_NOT_FOUND)key_not_found=1;
|
24021
23751
|
}
|
24022
23752
|
for(s=s1=s2=NULL,typ=SUCHE_STD,ptr=such_cmd;*ptr;ptr++){
|
23753
|
+
|
24023
23754
|
if(*ptr=='+'){
|
24024
23755
|
if(typ==SUCHE_STD)
|
24025
23756
|
s=lut_suche_multiple_or(s,&s1,NULL);
|
@@ -24210,6 +23941,7 @@ static int cmp_suche_sort(const void *ap,const void *bp)
|
|
24210
23941
|
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)
|
24211
23942
|
{
|
24212
23943
|
int i,j,last_idx,*idx_a,*cnt_o;
|
23944
|
+
#line 22532 "ruby/ext/konto_check_raw/konto_check.lxx"
|
24213
23945
|
|
24214
23946
|
if(idx_op)*idx_op=NULL;
|
24215
23947
|
if(cnt_op)*cnt_op=NULL;
|
@@ -24291,6 +24023,7 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
|
|
24291
24023
|
return OK;
|
24292
24024
|
}
|
24293
24025
|
|
24026
|
+
#line 22615 "ruby/ext/konto_check_raw/konto_check.lxx"
|
24294
24027
|
/* Funktion lut_suche_volltext() +���2 */
|
24295
24028
|
DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
|
24296
24029
|
int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
|
@@ -24420,7 +24153,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24420
24153
|
return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
|
24421
24154
|
}
|
24422
24155
|
|
24423
|
-
#line
|
24156
|
+
#line 22765 "ruby/ext/konto_check_raw/konto_check.lxx"
|
24424
24157
|
/* Funktion lut_suche_bic() +���2 */
|
24425
24158
|
DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
24426
24159
|
char ***base_name,int **blz_base)
|
@@ -24474,6 +24207,7 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24474
24207
|
{
|
24475
24208
|
int retval;
|
24476
24209
|
|
24210
|
+
|
24477
24211
|
if(anzahl)*anzahl=0;
|
24478
24212
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24479
24213
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24487,6 +24221,7 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24487
24221
|
/* Funktion lut_suche_plz() +���2 */
|
24488
24222
|
DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
|
24489
24223
|
{
|
24224
|
+
|
24490
24225
|
if(anzahl)*anzahl=0;
|
24491
24226
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24492
24227
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24499,6 +24234,7 @@ DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24499
24234
|
/* Funktion lut_suche_regel() +���2 */
|
24500
24235
|
DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
|
24501
24236
|
{
|
24237
|
+
|
24502
24238
|
if(anzahl)*anzahl=0;
|
24503
24239
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24504
24240
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24508,6 +24244,7 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
|
|
24508
24244
|
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);
|
24509
24245
|
}
|
24510
24246
|
|
24247
|
+
#line 22798 "ruby/ext/konto_check_raw/konto_check.lxx"
|
24511
24248
|
|
24512
24249
|
/* Funktion lut_suche_bic_h() +���2 */
|
24513
24250
|
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
@@ -24893,6 +24630,7 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
|
|
24893
24630
|
{
|
24894
24631
|
return iban_fkt_s(iban,filiale,retval,lut_ort);
|
24895
24632
|
}
|
24633
|
+
#line 22887 "ruby/ext/konto_check_raw/konto_check.lxx"
|
24896
24634
|
|
24897
24635
|
static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
|
24898
24636
|
{
|
@@ -25837,7 +25575,7 @@ static int convert_encoding(char **data,UINT4 *len)
|
|
25837
25575
|
DLL_EXPORT const char *pz2str(int pz,int *ret)
|
25838
25576
|
{
|
25839
25577
|
if(ret){
|
25840
|
-
if(pz%1000>=
|
25578
|
+
if(pz%1000>=143)
|
25841
25579
|
*ret=NOT_DEFINED;
|
25842
25580
|
else
|
25843
25581
|
*ret=OK;
|
@@ -25985,6 +25723,7 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
|
|
25985
25723
|
case 139: return "D9";
|
25986
25724
|
case 140: return "E0";
|
25987
25725
|
case 141: return "E1";
|
25726
|
+
case 142: return "E2";
|
25988
25727
|
case 1013: return "13a";
|
25989
25728
|
case 1049: return "49a";
|
25990
25729
|
case 1050: return "50a";
|
@@ -26165,11 +25904,13 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
|
|
26165
25904
|
case 5090: return "90e";
|
26166
25905
|
case 5104: return "A4e";
|
26167
25906
|
case 6051: return "51f";
|
25907
|
+
case 6087: return "87f";
|
26168
25908
|
case 6090: return "90f";
|
26169
25909
|
case 7090: return "90g";
|
26170
25910
|
default: return "???";
|
26171
25911
|
}
|
26172
25912
|
}
|
25913
|
+
#line 23842 "ruby/ext/konto_check_raw/konto_check.lxx"
|
26173
25914
|
|
26174
25915
|
/* Funktion lut_keine_iban_berechnung() +���1 */
|
26175
25916
|
/*
|
@@ -26284,7 +26025,7 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
26284
26025
|
/* Funktion pz_aenderungen_enable() +���1 */
|
26285
26026
|
/* ###########################################################################
|
26286
26027
|
* # Die Funktion pz_aenderungen_enable() dient dazu, den Status des Flags #
|
26287
|
-
* #
|
26028
|
+
* # pz_aenderungen_aktivieren_2015_09 abzufragen bzw. zu setzen. Falls die Variable #
|
26288
26029
|
* # set 1 ist, werden die �nderungen aktiviert, falls sie 0 ist, werden #
|
26289
26030
|
* # die �nderungen deaktiviert. Bei allen anderen Werten wird das aktuelle #
|
26290
26031
|
* # Flag nicht ver�ndert, sondern nur der Status zur�ckgegeben. #
|
@@ -26300,8 +26041,8 @@ DLL_EXPORT int lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int
|
|
26300
26041
|
|
26301
26042
|
DLL_EXPORT int pz_aenderungen_enable(int set)
|
26302
26043
|
{
|
26303
|
-
if(set==0 || set==1)
|
26304
|
-
return
|
26044
|
+
if(set==0 || set==1)pz_aenderungen_aktivieren_2015_09=set;
|
26045
|
+
return pz_aenderungen_aktivieren_2015_09;
|
26305
26046
|
}
|
26306
26047
|
|
26307
26048
|
#if DEBUG>0
|
@@ -26333,6 +26074,7 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
|
|
26333
26074
|
#endif
|
26334
26075
|
|
26335
26076
|
|
26077
|
+
#line 24006 "ruby/ext/konto_check_raw/konto_check.lxx"
|
26336
26078
|
/* Funktionen *_id() +���1 */
|
26337
26079
|
/* ###########################################################################
|
26338
26080
|
* # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
|