konto_check 6.02.0 → 6.13.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.
@@ -1,5 +1,6 @@
1
1
  /* vim: ft=c:set si:set fileencoding=iso-8859-1
2
2
  */
3
+ #line 9 "konto_check_h.lx"
3
4
 
4
5
  /*
5
6
  * ##########################################################################
@@ -9,7 +10,7 @@
9
10
  * # Verwendung in anderen Programmen bzw. Programmiersprachen benutzt #
10
11
  * # werden. #
11
12
  * # #
12
- * # Copyright (C) 2002-2017 Michael Plugge <m.plugge@hs-mannheim.de> #
13
+ * # Copyright (C) 2002-2020 Michael Plugge <m.plugge@hs-mannheim.de> #
13
14
  * # #
14
15
  * # Dieses Programm ist freie Software; Sie d�rfen es unter den #
15
16
  * # Bedingungen der GNU Lesser General Public License, wie von der Free #
@@ -167,17 +168,19 @@
167
168
 
168
169
  #if _WIN32>0 || _WIN64>0
169
170
  # if USE_CDECL
170
- # if BUILD_DLL /* DLL kompilieren */
171
- # define DLL_EXPORT __declspec (dllexport)
172
- # define DLL_EXPORT_V __declspec (dllexport)
173
- # elif USE_DLL /* DLL in einem anderen Programm benutzen */
174
- # define DLL_EXPORT __declspec (dllimport)
175
- # define DLL_EXPORT_V __declspec (dllimport)
176
- # else /* kein DLL-Krempel erforderlich */
177
- # define DLL_EXPORT
178
- # define DLL_EXPORT_V
179
- # endif
171
+ # define STDCALL
172
+ # if BUILD_DLL /* DLL kompilieren */
173
+ # define DLL_EXPORT __declspec (dllexport)
174
+ # define DLL_EXPORT_V __declspec (dllexport)
175
+ # elif USE_DLL /* DLL in einem anderen Programm benutzen */
176
+ # define DLL_EXPORT __declspec (dllimport)
177
+ # define DLL_EXPORT_V __declspec (dllimport)
178
+ # else /* kein DLL-Krempel erforderlich */
179
+ # define DLL_EXPORT
180
+ # define DLL_EXPORT_V
181
+ # endif
180
182
  # else
183
+ # define STDCALL __stdcall
181
184
  # if BUILD_DLL /* DLL kompilieren */
182
185
  # define DLL_EXPORT __declspec (dllexport) __stdcall
183
186
  # define DLL_EXPORT_V __declspec (dllexport)
@@ -185,12 +188,13 @@
185
188
  # define DLL_EXPORT __declspec (dllimport) __stdcall
186
189
  # define DLL_EXPORT_V __declspec (dllimport)
187
190
  # else /* kein DLL-Krempel erforderlich */
188
- # define DLL_EXPORT
191
+ # define DLL_EXPORT __stdcall
189
192
  # define DLL_EXPORT_V
190
193
  # endif
191
194
  # endif
192
195
  # define localtime_r(timep,result) localtime(timep)
193
196
  #else
197
+ # define STDCALL
194
198
  # define DLL_EXPORT
195
199
  # define DLL_EXPORT_V
196
200
  #endif
@@ -286,6 +290,10 @@
286
290
  #define LUT2_IBAN_REGEL 25
287
291
  #define LUT2_IBAN_REGEL_SORT 26
288
292
  #define LUT2_BIC_H_SORT 27
293
+ #define LUT2_SCL_INFO 28
294
+ #define LUT2_SCL_BIC 29
295
+ #define LUT2_SCL_NAME 30
296
+ #define LUT2_SCL_FLAGS 31
289
297
 
290
298
  #define LUT2_2_BLZ 101
291
299
  #define LUT2_2_FILIALEN 102
@@ -314,6 +322,10 @@
314
322
  #define LUT2_2_IBAN_REGEL 125
315
323
  #define LUT2_2_IBAN_REGEL_SORT 126
316
324
  #define LUT2_2_BIC_H_SORT 127
325
+ #define LUT2_2_SCL_INFO 128
326
+ #define LUT2_2_SCL_BIC 129
327
+ #define LUT2_2_SCL_NAME 130
328
+ #define LUT2_2_SCL_FLAGS 131
317
329
 
318
330
  #define LUT2_DEFAULT 501
319
331
 
@@ -330,6 +342,12 @@ extern const char *lut2_feld_namen[256];
330
342
  */
331
343
 
332
344
  #undef FALSE
345
+ #define NO_SCL_BLOCKS_LOADED -158
346
+ #define NO_SCL_INFO_BLOCK -157
347
+ #define SCL_BIC_NOT_FOUND -156
348
+ #define INVALID_SCL_INFO_BLOCK -155
349
+ #define NO_SCL_BLOCKS -154
350
+ #define SCL_INPUT_FORMAT_ERROR -153
333
351
  #define INVALID_REGULAR_EXPRESSION_CNT -152
334
352
  #define INVALID_REGULAR_EXPRESSION -151
335
353
  #define INVALID_HANDLE -150
@@ -483,6 +501,9 @@ extern const char *lut2_feld_namen[256];
483
501
  #define OK_KTO_REPLACED_NO_PZ 24
484
502
  #define OK_UNTERKONTO_ATTACHED 25
485
503
  #define OK_SHORT_BIC_USED 26
504
+ #define OK_SCL_EXTENSION_BIC_USED 27
505
+ #define OK_SCL_WILDCARD_BIC_USED 28
506
+ #line 282 "konto_check_h.lx"
486
507
 
487
508
  #define MAX_BLZ_CNT 30000 /* maximale Anzahl BLZ's in generate_lut() */
488
509
 
@@ -856,6 +877,7 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
856
877
  DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval);
857
878
  DLL_EXPORT int current_lutfile_name_id(int *set,int *level,int *retval);
858
879
  DLL_EXPORT int lut_valid(void);
880
+ DLL_EXPORT int lut_valid_date(char *lut_name,int *v11,int *v12,int *v21,int *v22);
859
881
  DLL_EXPORT int get_lut_info2(char *lut_name,int *version_p,char **prolog_p,char **info_p,char **user_info_p);
860
882
  DLL_EXPORT int get_lut_info_b(char **info,char *lutname);
861
883
  DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char **info_p,char **user_info_p);
@@ -1090,6 +1112,24 @@ DLL_EXPORT int iban_name_id(char *iban,int filiale,int*retval);
1090
1112
  DLL_EXPORT int iban_name_kurz_id(char *iban,int filiale,int*retval);
1091
1113
  DLL_EXPORT int iban_ort_id(char *iban,int filiale,int*retval);
1092
1114
 
1115
+ /* Funktionen f�r das SCL-Verzeichnis */
1116
+ DLL_EXPORT int lut_scl_init(char *lut_name);
1117
+ DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso);
1118
+ DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile);
1119
+ DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_bic,const char **scl_name);
1120
+ DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **used_bic,const char **scl_name);
1121
+ DLL_EXPORT int lut_scl_multi_blz_i(int blz,const char **scl_flags,const char **used_bic,const char **scl_name);
1122
+ DLL_EXPORT int lut_scl_sct(char *bic,int *retval);
1123
+ DLL_EXPORT int lut_scl_sdd(char *bic,int *retval);
1124
+ DLL_EXPORT int lut_scl_cor1(char *bic,int *retval);
1125
+ DLL_EXPORT int lut_scl_b2b(char *bic,int *retval);
1126
+ DLL_EXPORT int lut_scl_scc(char *bic,int *retval);
1127
+ DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic);
1128
+ DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic);
1129
+ DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic);
1130
+ DLL_EXPORT int lut_scl_b2b_blz(char *blz,int *retval,const char **used_bic);
1131
+ DLL_EXPORT int lut_scl_scc_blz(char *blz,int *retval,const char **used_bic);
1132
+
1093
1133
  /*
1094
1134
  * ######################################################################
1095
1135
  * # globale Variablen #
@@ -48,6 +48,7 @@ vim: ft=c:set si:set fileencoding=utf-8
48
48
  #include "ruby.h"
49
49
  #include <stdio.h>
50
50
  #include "konto_check.h"
51
+ #line 64 "konto_check_raw_ruby.lxx"
51
52
 
52
53
  /* Ruby 1.8/1.9 compatibility definitions */
53
54
  #ifndef RSTRING_PTR
@@ -285,6 +286,38 @@ static void get_params_int(int argc,VALUE* argv,int *arg1,int *arg2,int *uniq_p)
285
286
  if(uniq_p)*uniq_p=uniq;
286
287
  }
287
288
 
289
+
290
+ /**
291
+ * get_params_scl()
292
+ *
293
+ * get one string parameter from argc/argv
294
+ */
295
+ static void get_params_scl(int argc,VALUE* argv,char *arg1s,int maxlen)
296
+ {
297
+ int len;
298
+ VALUE arg1_rb;
299
+
300
+ rb_scan_args(argc,argv,"10",&arg1_rb);
301
+ if(maxlen==8)switch(TYPE(arg1_rb)){
302
+ case RUBY_T_STRING:
303
+ break;
304
+ case RUBY_T_FLOAT:
305
+ case RUBY_T_FIXNUM:
306
+ case RUBY_T_BIGNUM:
307
+ snprintf(arg1s,9,"%08d",FIX2INT(arg1_rb));
308
+ return;
309
+ default:
310
+ rb_raise(rb_eTypeError,"%s","argument must be a string");
311
+ }
312
+ if(TYPE(arg1_rb)==RUBY_T_STRING){
313
+ if((len=RSTRING_LEN(arg1_rb))>maxlen)len=maxlen;
314
+ strncpy(arg1s,RSTRING_PTR(arg1_rb),len);
315
+ *(arg1s+len)=0;
316
+ }
317
+ else
318
+ rb_raise(rb_eTypeError,"%s","argument must be a string");
319
+ }
320
+
288
321
  /**
289
322
  * get_params()
290
323
  *
@@ -811,7 +844,7 @@ static VALUE lut_blocks_rb(int argc,VALUE* argv,VALUE self)
811
844
  */
812
845
  static VALUE lut_blocks1_rb(int argc,VALUE* argv,VALUE self)
813
846
  {
814
- rb_scan_args(argc,argv,"0",NULL);
847
+ // rb_scan_args(argc,argv,"0",NULL);
815
848
  return INT2FIX(lut_blocks(0,NULL,NULL,NULL));
816
849
  }
817
850
 
@@ -4289,7 +4322,7 @@ static VALUE bank_suche_volltext(int argc,VALUE* argv,VALUE self)
4289
4322
  * ====Mögliche Statuscodes:
4290
4323
  * * -70 (LUT1_FILE_USED) "Es wurde eine LUT-Datei im Format 1.0/1.1 geladen"
4291
4324
  * * -48 (LUT2_NAME_KURZ_NOT_INITIALIZED) "Das Feld Kurzname wurde nicht initialisiert"
4292
- * * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
4325
+ * * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
4293
4326
  * * -9 (ERROR_MALLOC) "kann keinen Speicher allokieren"
4294
4327
  * * 1 (OK) "ok"
4295
4328
  * * 14 (SOME_KEYS_NOT_FOUND) "ok; ein(ige) Schlüssel wurden nicht gefunden"
@@ -4317,6 +4350,485 @@ static VALUE bank_suche_multiple(int argc,VALUE* argv,VALUE self)
4317
4350
  }
4318
4351
 
4319
4352
 
4353
+ /**
4354
+ * ===KontoCheckRaw::scl_init([lutname})
4355
+ * =====KontoCheck::scl_init([lutname])
4356
+ * Mit den scl_* Funktionen können für einen gegebenen BIC oder eine BLZ die
4357
+ * Einträge des SCL-Verzeichnisses bestimmt werden. Falls die _blz() Version der
4358
+ * Funktionen verwendet wird, muß die Bibliothek mittels KontoCheck::init *und*
4359
+ * KontoCheck::scl_init initialisiert werden, um sowohl die Kontodaten als auch die
4360
+ * Daten des SCL-Verzeichnisses einzulesen.
4361
+ *
4362
+ * Die Funktion scl_init liest die SCL-Blocks aus einer LUT-Datei und initialisiert
4363
+ * die zugehörigen internen Datenstrukturen.initialisiert SCL-Datenstrukturen.
4364
+ * Falls der Parameter lut_name nicht angegeben ist, wird die LUT-Datei benutzt,
4365
+ * mit der die Bibliothek mittels KontoCheck::init initialisiert wurde.
4366
+ *
4367
+ * ====Aufruf:
4368
+ * * ret=KontoCheckRaw::scl_init([lutname])
4369
+ *
4370
+ * ====Rückgabe:
4371
+ * Es wird ein skalarer Statuscode zurückgegeben, der Auskunft über die Initialisierung bzw.
4372
+ * aufgetretene Fehler gibt.
4373
+ *
4374
+ * ====Mögliche Statuscodes:
4375
+ * * -155 (INVALID_SCL_INFO_BLOCK) "(Ungültiger SCL-Info-Block in der LUT-Datei"
4376
+ * * -154 (NO_SCL_BLOCKS) "Ungültige Eingabewerte in der SCL-Datei"
4377
+ * * -40 (LUT2_NOT_INITIALIZED) "die Programmbibliothek wurde noch nicht initialisiert"
4378
+ * * -10 (FILE_READ_ERROR) "kann Datei nicht lesen"
4379
+ * * 1 (OK) "ok"
4380
+ */
4381
+ static VALUE scl_init_rb(int argc,VALUE* argv,VALUE self)
4382
+ {
4383
+ char lut_name[FILENAME_MAX+1];
4384
+ const char *l_name;
4385
+ int retval;
4386
+
4387
+ get_params_file(argc,argv,lut_name,NULL,NULL,3);
4388
+ if(!*lut_name){
4389
+ l_name=current_lutfile_name(NULL,NULL,&retval);
4390
+ if(l_name && retval>0){
4391
+ strcpy(lut_name,l_name);
4392
+ }
4393
+ else
4394
+ return INT2FIX(retval);
4395
+ }
4396
+ retval=lut_scl_init(lut_name);
4397
+ return INT2FIX(retval);
4398
+ }
4399
+
4400
+ /**
4401
+ * ===KontoCheckRaw::scl_multi(bic)
4402
+ * =====KontoCheck::scl_multi(bic)
4403
+ * Diese Funktion bestimmt alle Werte des BIC-Verzeichnisses zu einem gegebenen BIC.
4404
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4405
+ * entsprechende Fehlercode (<0) gesetzt.
4406
+ *
4407
+ * ====Aufruf:
4408
+ * * ret=KontoCheckRaw::scl_multi(bic)
4409
+ *
4410
+ * ====Rückgabe:
4411
+ * Die Rückgabe ist ein Array mit vier Elementen:
4412
+ *
4413
+ * * Das erste Element ist der Statuscode (s.u.)
4414
+ * * Das zweite Element sind die SCL Flags (als String)
4415
+ * * das dritte Element ist der benutzte BIC
4416
+ * * das vierte Element ist der Institutsname aus dem BIC-Verzeichnis
4417
+ *
4418
+ * ====Mögliche Statuscodes:
4419
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4420
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4421
+ * * -139 (LUT2_NOT_ALL_IBAN_BLOCKS_LOADED) "es konnten nicht alle Datenblocks die für die IBAN-Berechnung notwendig sind geladen werden"
4422
+ * * 1 (OK) "ok"
4423
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4424
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4425
+ */
4426
+ static VALUE scl_multi(int argc,VALUE* argv,VALUE self)
4427
+ {
4428
+ char bic[12];
4429
+ const char *scl_flags,*used_bic,*scl_name;
4430
+ int retval;
4431
+
4432
+ get_params_scl(argc,argv,bic,11);
4433
+ retval=lut_scl_multi(bic,&scl_flags,&used_bic,&scl_name);
4434
+ if(retval>0)
4435
+ return rb_ary_new3(4,INT2FIX(retval),rb_str_new2(scl_flags),rb_str_new2(used_bic),rb_str_new2(scl_name));
4436
+ else
4437
+ return rb_ary_new3(4,INT2FIX(retval),Qnil,Qnil,Qnil);
4438
+ }
4439
+
4440
+ /**
4441
+ * ===KontoCheckRaw::scl_sct(bic)
4442
+ * =====KontoCheck::scl_sct(bic)
4443
+ * =====KontoCheckRaw::scl_sct_blz(blz)
4444
+ * Diese Funktion bestimmt das Flag SCT (SEPA Credit Transfer) des SCL-
4445
+ * Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4446
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4447
+ * entsprechende Fehlercode (<0) gesetzt.
4448
+ *
4449
+ * ====Aufruf:
4450
+ * * ret=KontoCheckRaw::scl_sct(bic)
4451
+ *
4452
+ * ====Rückgabe:
4453
+ * Die Rückgabe ist ein Array mit zwei Elementen:
4454
+ *
4455
+ * * Das erste Element ist das Flag SCT aus dem SEPA-Directory
4456
+ * * Das zweite Element ist der Statuscode (s.u.)
4457
+ *
4458
+ * ====Mögliche Statuscodes:
4459
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4460
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4461
+ * * 1 (OK) "ok"
4462
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4463
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4464
+ *
4465
+ */
4466
+ static VALUE scl_sct(int argc,VALUE* argv,VALUE self)
4467
+ {
4468
+ char bic[12];
4469
+ int rv,retval;
4470
+
4471
+ get_params_scl(argc,argv,bic,11);
4472
+ rv=lut_scl_sct(bic,&retval);
4473
+ return rb_ary_new3(2,retval>0?INT2FIX(rv):Qnil,INT2FIX(retval));
4474
+ }
4475
+
4476
+ /**
4477
+ * ===KontoCheckRaw::scl_sct_blz(blz)
4478
+ * =====KontoCheck::scl_sct_blz(blz)
4479
+ * =====KontoCheckRaw::scl_sct(bic)
4480
+ * Diese Funktion bestimmt das Flag SCT (SEPA Credit Transfer) des SCL-
4481
+ * Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4482
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4483
+ * entsprechende Fehlercode (<0) gesetzt.
4484
+ *
4485
+ * ====Aufruf:
4486
+ * * ret=KontoCheckRaw::scl_sct_blz(blz)
4487
+ *
4488
+ * ====Rückgabe:
4489
+ * Die Rückgabe ist ein Array mit drei Elementen:
4490
+ *
4491
+ * * Das erste Element ist das Flag SCT aus dem SEPA-Directory
4492
+ * * Das zweite Element ist der Statuscode (s.u.)
4493
+ * * Das dritte Element ist der benutzte BIC
4494
+ *
4495
+ * ====Mögliche Statuscodes:
4496
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4497
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4498
+ * * -139 (LUT2_NOT_ALL_IBAN_BLOCKS_LOADED) "es konnten nicht alle Datenblocks die für die IBAN-Berechnung notwendig sind geladen werden"
4499
+ * * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
4500
+ * * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
4501
+ * * 1 (OK) "ok"
4502
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4503
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4504
+ */
4505
+ static VALUE scl_sct_blz(int argc,VALUE* argv,VALUE self)
4506
+ {
4507
+ char blz[12];
4508
+ const char *used_bic;
4509
+ int rv,retval;
4510
+
4511
+ get_params_scl(argc,argv,blz,8);
4512
+ rv=lut_scl_sct_blz(blz,&retval,&used_bic);
4513
+ if(retval>0)
4514
+ return rb_ary_new3(3,INT2FIX(rv),INT2FIX(retval),rb_str_new2(used_bic));
4515
+ else
4516
+ return rb_ary_new3(3,Qnil,INT2FIX(retval),Qnil);
4517
+ }
4518
+
4519
+ /**
4520
+ * ===KontoCheckRaw::scl_sdd(bic)
4521
+ * =====KontoCheck::scl_sdd(bic)
4522
+ * =====KontoCheckRaw::scl_sdd_blz(blz)
4523
+ * Diese Funktion bestimmt das Flag SDD (SEPA CORE Direct Debit (SEPA-Basislastschrift)
4524
+ * des SCL- Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4525
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4526
+ * entsprechende Fehlercode (<0) gesetzt.
4527
+ *
4528
+ * ====Aufruf:
4529
+ * * ret=KontoCheckRaw::scl_sdd(bic)
4530
+ *
4531
+ * ====Rückgabe:
4532
+ * Die Rückgabe ist ein Array mit zwei Elementen:
4533
+ *
4534
+ * * Das erste Element ist das Flag SDD aus dem SEPA-Directory
4535
+ * * Das zweite Element ist der Statuscode (s.u.)
4536
+ *
4537
+ * ====Mögliche Statuscodes:
4538
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4539
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4540
+ * * 1 (OK) "ok"
4541
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4542
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4543
+ */
4544
+ static VALUE scl_sdd(int argc,VALUE* argv,VALUE self)
4545
+ {
4546
+ char bic[12];
4547
+ int rv,retval;
4548
+
4549
+ get_params_scl(argc,argv,bic,11);
4550
+ rv=lut_scl_sdd(bic,&retval);
4551
+ return rb_ary_new3(2,retval>0?INT2FIX(rv):Qnil,INT2FIX(retval));
4552
+ }
4553
+
4554
+ /**
4555
+ * ===KontoCheckRaw::scl_sdd_blz(blz)
4556
+ * =====KontoCheck::scl_sdd(bic)
4557
+ * =====KontoCheckRaw::scl_sdd(blz)
4558
+ * Diese Funktion bestimmt das Flag SDD (SEPA CORE Direct Debit (SEPA-Basislastschrift)
4559
+ * des SCL- Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4560
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4561
+ * entsprechende Fehlercode (<0) gesetzt.
4562
+ *
4563
+ * ====Aufruf:
4564
+ * * ret=KontoCheckRaw::scl_sdd_blz(blz)
4565
+ *
4566
+ * ====Rückgabe:
4567
+ * Die Rückgabe ist ein Array mit drei Elementen:
4568
+ *
4569
+ * * Das erste Element ist das Flag SDD aus dem SEPA-Directory
4570
+ * * Das zweite Element ist der Statuscode (s.u.)
4571
+ * * Das dritte Element (nur bei scl_sdd_blz()) ist der benutzte BIC
4572
+ *
4573
+ * ====Mögliche Statuscodes:
4574
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4575
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4576
+ * * -139 (LUT2_NOT_ALL_IBAN_BLOCKS_LOADED) "es konnten nicht alle Datenblocks die für die IBAN-Berechnung notwendig sind geladen werden"
4577
+ * * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
4578
+ * * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
4579
+ * * 1 (OK) "ok"
4580
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4581
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4582
+ */
4583
+ static VALUE scl_sdd_blz(int argc,VALUE* argv,VALUE self)
4584
+ {
4585
+ char blz[12];
4586
+ const char *used_bic;
4587
+ int rv,retval;
4588
+
4589
+ get_params_scl(argc,argv,blz,8);
4590
+ rv=lut_scl_sdd_blz(blz,&retval,&used_bic);
4591
+ if(retval>0)
4592
+ return rb_ary_new3(3,INT2FIX(rv),INT2FIX(retval),rb_str_new2(used_bic));
4593
+ else
4594
+ return rb_ary_new3(3,Qnil,INT2FIX(retval),Qnil);
4595
+ }
4596
+
4597
+ /**
4598
+ * ===KontoCheckRaw::scl_cor1(bic)
4599
+ * =====KontoCheck::scl_cor1(bic)
4600
+ * =====KontoCheck::scl_cor1_blz(blz)
4601
+ * Diese Funktion bestimmt das Flag COR1 (SEPA COR1 Direct Debit (SEPA-Basislastschrift
4602
+ * mit verkürzter Vorlagefrist) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4603
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4604
+ * entsprechende Fehlercode (<0) gesetzt.
4605
+ *
4606
+ * ====Aufruf:
4607
+ * * ret=KontoCheckRaw::scl_cor1(bic)
4608
+ *
4609
+ * ====Rückgabe:
4610
+ * Die Rückgabe ist ein Array mit zwei Elementen:
4611
+ *
4612
+ * * Das erste Element ist das Flag SDD aus dem SEPA-Directory
4613
+ * * Das zweite Element ist der Statuscode (s.u.)
4614
+ *
4615
+ * ====Mögliche Statuscodes:
4616
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4617
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4618
+ * * 1 (OK) "ok"
4619
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4620
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4621
+ */
4622
+ static VALUE scl_cor1(int argc,VALUE* argv,VALUE self)
4623
+ {
4624
+ char bic[12];
4625
+ int rv,retval;
4626
+
4627
+ get_params_scl(argc,argv,bic,11);
4628
+ rv=lut_scl_cor1(bic,&retval);
4629
+ return rb_ary_new3(2,retval>0?INT2FIX(rv):Qnil,INT2FIX(retval));
4630
+ }
4631
+
4632
+ /**
4633
+ * ===KontoCheckRaw::scl_cor1_blz(blz)
4634
+ * =====KontoCheck::scl_cor1(bic)
4635
+ * =====KontoCheckRaw::scl_cor1(blz)
4636
+ * Diese Funktion bestimmt das Flag COR1 (SEPA COR1 Direct Debit (SEPA-Basislastschrift
4637
+ * mit verkürzter Vorlagefrist) des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4638
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4639
+ * entsprechende Fehlercode (<0) gesetzt.
4640
+ *
4641
+ * ====Aufruf:
4642
+ * * ret=KontoCheckRaw::scl_cor1_blz(blz)
4643
+ *
4644
+ * ====Rückgabe:
4645
+ * Die Rückgabe ist ein Array mit drei Elementen:
4646
+ *
4647
+ * * Das erste Element ist das Flag SDD aus dem SEPA-Directory
4648
+ * * Das zweite Element ist der Statuscode (s.u.)
4649
+ * * Das dritte Element (nur bei scl_cor1_blz()) ist der benutzte BIC
4650
+ *
4651
+ * ====Mögliche Statuscodes:
4652
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4653
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4654
+ * * -139 (LUT2_NOT_ALL_IBAN_BLOCKS_LOADED) "es konnten nicht alle Datenblocks die für die IBAN-Berechnung notwendig sind geladen werden"
4655
+ * * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
4656
+ * * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
4657
+ * * 1 (OK) "ok"
4658
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4659
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4660
+ */
4661
+ static VALUE scl_cor1_blz(int argc,VALUE* argv,VALUE self)
4662
+ {
4663
+ char blz[12];
4664
+ const char *used_bic;
4665
+ int rv,retval;
4666
+
4667
+ get_params_scl(argc,argv,blz,8);
4668
+ rv=lut_scl_cor1_blz(blz,&retval,&used_bic);
4669
+ if(retval>0)
4670
+ return rb_ary_new3(3,INT2FIX(rv),INT2FIX(retval),rb_str_new2(used_bic));
4671
+ else
4672
+ return rb_ary_new3(3,Qnil,INT2FIX(retval),Qnil);
4673
+ }
4674
+
4675
+ /**
4676
+ * ===KontoCheckRaw::scl_b2b(bic)
4677
+ * =====KontoCheck::scl_b2b(bic)
4678
+ * =====KontoCheckRaw::scl_b2b_blz(blz)
4679
+ * Diese Funktion bestimmt das Flag B2B (SEPA B2B Direct Debit, Sepa-Firmelastschrift)
4680
+ * des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4681
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4682
+ * entsprechende Fehlercode (<0) gesetzt.
4683
+ *
4684
+ * ====Aufruf:
4685
+ * * ret=KontoCheckRaw::scl_b2b(bic)
4686
+ *
4687
+ * ====Rückgabe:
4688
+ * Die Rückgabe ist ein Array mit zwei Elementen:
4689
+ *
4690
+ * * Das erste Element ist das Flag B2B aus dem SEPA-Directory
4691
+ * * Das zweite Element ist der Statuscode (s.u.)
4692
+ *
4693
+ * ====Mögliche Statuscodes:
4694
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4695
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4696
+ * * 1 (OK) "ok"
4697
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4698
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4699
+ */
4700
+ static VALUE scl_b2b(int argc,VALUE* argv,VALUE self)
4701
+ {
4702
+ char bic[12];
4703
+ int rv,retval;
4704
+
4705
+ get_params_scl(argc,argv,bic,11);
4706
+ rv=lut_scl_b2b(bic,&retval);
4707
+ return rb_ary_new3(2,retval>0?INT2FIX(rv):Qnil,INT2FIX(retval));
4708
+ }
4709
+
4710
+ /**
4711
+ * ===KontoCheckRaw::scl_b2b_blz(blz)
4712
+ * =====KontoCheck::scl_b2b_blz(blz)
4713
+ * =====KontoCheckRaw::scl_b2b(bic)
4714
+ * Diese Funktion bestimmt das Flag B2B (SEPA B2B Direct Debit, Sepa-Firmelastschrift)
4715
+ * des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4716
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4717
+ * entsprechende Fehlercode (<0) gesetzt.
4718
+ *
4719
+ * ====Aufruf:
4720
+ * * ret=KontoCheckRaw::scl_b2b_blz(blz)
4721
+ *
4722
+ * ====Rückgabe:
4723
+ * Die Rückgabe ist ein Array mit drei Elementen:
4724
+ *
4725
+ * * Das erste Element ist das Flag B2B aus dem SEPA-Directory
4726
+ * * Das zweite Element ist der Statuscode (s.u.)
4727
+ * * Das dritte Element (nur bei scl_b2b_blz()) ist der benutzte BIC
4728
+ *
4729
+ * ====Mögliche Statuscodes:
4730
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4731
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4732
+ * * -139 (LUT2_NOT_ALL_IBAN_BLOCKS_LOADED) "es konnten nicht alle Datenblocks die für die IBAN-Berechnung notwendig sind geladen werden"
4733
+ * * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
4734
+ * * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
4735
+ * * 1 (OK) "ok"
4736
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4737
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4738
+ */
4739
+ static VALUE scl_b2b_blz(int argc,VALUE* argv,VALUE self)
4740
+ {
4741
+ char blz[12];
4742
+ const char *used_bic;
4743
+ int rv,retval;
4744
+
4745
+ get_params_scl(argc,argv,blz,8);
4746
+ rv=lut_scl_b2b_blz(blz,&retval,&used_bic);
4747
+ if(retval>0)
4748
+ return rb_ary_new3(3,INT2FIX(rv),INT2FIX(retval),rb_str_new2(used_bic));
4749
+ else
4750
+ return rb_ary_new3(3,Qnil,INT2FIX(retval),Qnil);
4751
+
4752
+ }
4753
+
4754
+ /**
4755
+ * ===KontoCheckRaw::scl_scc(bic)
4756
+ * =====KontoCheck::scl_scc(bic)
4757
+ * =====KontoCheckRaw::scl_scc_blz(blz)
4758
+ * Diese Funktion bestimmt das Flag SCC (SEPA Card Clearing, SCC Karteneinzüge)
4759
+ * des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4760
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4761
+ * entsprechende Fehlercode (<0) gesetzt.
4762
+ *
4763
+ * ====Aufruf:
4764
+ * * ret=KontoCheckRaw::scl_scc(bic)
4765
+ *
4766
+ * ====Rückgabe:
4767
+ * Die Rückgabe ist ein Array mit zwei Elementen:
4768
+ *
4769
+ * * Das erste Element ist das Flag SDD aus dem SEPA-Directory
4770
+ * * Das zweite Element ist der Statuscode (s.u.)
4771
+ *
4772
+ * ====Mögliche Statuscodes:
4773
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4774
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4775
+ * * 1 (OK) "ok"
4776
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4777
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4778
+ */
4779
+ static VALUE scl_scc(int argc,VALUE* argv,VALUE self)
4780
+ {
4781
+ char bic[12];
4782
+ int rv,retval;
4783
+
4784
+ get_params_scl(argc,argv,bic,11);
4785
+ rv=lut_scl_scc(bic,&retval);
4786
+ return rb_ary_new3(2,retval>0?INT2FIX(rv):Qnil,INT2FIX(retval));
4787
+ }
4788
+
4789
+ /**
4790
+ * ===KontoCheckRaw::scl_scc_blz(blz)
4791
+ * =====KontoCheck::scl_scc(bic)
4792
+ * =====KontoCheckRaw::scl_scc(bic)
4793
+ * Diese Funktion bestimmt das Flag SCC (SEPA Card Clearing, SCC Karteneinzüge)
4794
+ * des SCL-Verzeichnisses und gibt das Flag (0 bzw. 1) zurück.
4795
+ * Im Fehlerfall wird nil zurückgegeben und die Variable retval auf den
4796
+ * entsprechende Fehlercode (<0) gesetzt.
4797
+ *
4798
+ * ====Aufruf:
4799
+ * * ret=KontoCheckRaw::scl_scc_blz(blz)
4800
+ *
4801
+ * ====Rückgabe:
4802
+ * Die Rückgabe ist ein Array mit drei Elementen:
4803
+ *
4804
+ * * Das erste Element ist das Flag SDD aus dem SEPA-Directory
4805
+ * * Das zweite Element ist der Statuscode (s.u.)
4806
+ * * Das dritte Element (nur bei scl_scc_blz()) ist der benutzte BIC
4807
+ *
4808
+ * ====Mögliche Statuscodes:
4809
+ * * -158 (NO_SCL_BLOCKS_LOADED) "die SCL-Blocks wurden noch nicht eingelesen"
4810
+ * * -156 (SCL_BIC_NOT_FOUND) "Der BIC wurde im SCL-Verzeichnis nicht gefunden"
4811
+ * * -139 (LUT2_NOT_ALL_IBAN_BLOCKS_LOADED) "es konnten nicht alle Datenblocks die für die IBAN-Berechnung notwendig sind geladen werden"
4812
+ * * -5 (INVALID_BLZ_LENGTH) "die Bankleitzahl ist nicht achtstellig"
4813
+ * * -4 (INVALID_BLZ) "die Bankleitzahl ist ungültig"
4814
+ * * 1 (OK) "ok"
4815
+ * * 27 (OK_SCL_EXTENSION_BIC_USED) "ok, für den BIC wurde die Extension XXX angehängt"
4816
+ * * 28 (OK_SCL_WILDCARD_BIC_USED) "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt"
4817
+ */
4818
+ static VALUE scl_scc_blz(int argc,VALUE* argv,VALUE self)
4819
+ {
4820
+ char blz[12];
4821
+ const char *used_bic;
4822
+ int rv,retval;
4823
+
4824
+ get_params_scl(argc,argv,blz,8);
4825
+ rv=lut_scl_scc_blz(blz,&retval,&used_bic);
4826
+ if(retval>0)
4827
+ return rb_ary_new3(3,INT2FIX(rv),INT2FIX(retval),rb_str_new2(used_bic));
4828
+ else
4829
+ return rb_ary_new3(3,Qnil,INT2FIX(retval),Qnil);
4830
+ }
4831
+
4320
4832
  /**
4321
4833
  * ===KontoCheckRaw::version( [mode] )
4322
4834
  * =====KontoCheck::version( [mode] )
@@ -4358,7 +4870,7 @@ void Init_konto_check_raw()
4358
4870
  *
4359
4871
  * <b>ATTENTION:</b> There are a few important changes in the API between
4360
4872
  * version 0.0.2 (version by Peter Horn/Provideal), version 0.0.6 (jeanmartin)
4361
- * and this version (V. 6.02 from 2017-11-26):
4873
+ * and this version (V. 6.13 from 2020-12-16):
4362
4874
  *
4363
4875
  * * The function KontoCheck::load_bank_data() is no longer used; it is
4364
4876
  * replaced by KontoCheck::init() and KontoCheck::generate_lutfile().
@@ -4536,10 +5048,36 @@ void Init_konto_check_raw()
4536
5048
  rb_define_module_function(KontoCheck,"bank_suche_regel",bank_suche_regel,-1);
4537
5049
  rb_define_module_function(KontoCheck,"bank_suche_volltext",bank_suche_volltext,-1);
4538
5050
  rb_define_module_function(KontoCheck,"bank_suche_multiple",bank_suche_multiple,-1);
5051
+
5052
+ rb_define_module_function(KontoCheck,"scl_init",scl_init_rb,-1);
5053
+ rb_define_module_function(KontoCheck,"scl_multi",scl_multi,-1);
5054
+ rb_define_module_function(KontoCheck,"scl_sct",scl_sct,-1);
5055
+ rb_define_module_function(KontoCheck,"scl_sdd",scl_sdd,-1);
5056
+ rb_define_module_function(KontoCheck,"scl_cor1",scl_cor1,-1);
5057
+ rb_define_module_function(KontoCheck,"scl_b2b",scl_b2b,-1);
5058
+ rb_define_module_function(KontoCheck,"scl_scc_blz",scl_scc,-1);
5059
+ rb_define_module_function(KontoCheck,"scl_sct_blz",scl_sct_blz,-1);
5060
+ rb_define_module_function(KontoCheck,"scl_sdd_blz",scl_sdd_blz,-1);
5061
+ rb_define_module_function(KontoCheck,"scl_cor1_blz",scl_cor1_blz,-1);
5062
+ rb_define_module_function(KontoCheck,"scl_b2b_blz",scl_b2b_blz,-1);
5063
+ rb_define_module_function(KontoCheck,"scl_scc_blz",scl_scc_blz,-1);
5064
+
4539
5065
  rb_define_module_function(KontoCheck,"version",version_rb,-1);
4540
5066
  rb_define_module_function(KontoCheck,"load_bank_data",load_bank_data,1);
4541
5067
 
4542
5068
  /* Rückgabewerte der konto_check Bibliothek */
5069
+ /* (-158) die SCL-Blocks wurden noch nicht eingelesen */
5070
+ rb_define_const(KontoCheck,"NO_SCL_BLOCKS_LOADED",INT2FIX(NO_SCL_BLOCKS_LOADED));
5071
+ /* (-157) Der Info-Block des SCL-Verzeichnisses wurde noch nicht eingelesen */
5072
+ rb_define_const(KontoCheck,"NO_SCL_INFO_BLOCK",INT2FIX(NO_SCL_INFO_BLOCK));
5073
+ /* (-156) Der BIC wurde im SCL-Verzeichnis nicht gefunden */
5074
+ rb_define_const(KontoCheck,"SCL_BIC_NOT_FOUND",INT2FIX(SCL_BIC_NOT_FOUND));
5075
+ /* (-155) Ungültiger SCL-Info-Block in der LUT-Datei */
5076
+ rb_define_const(KontoCheck,"INVALID_SCL_INFO_BLOCK",INT2FIX(INVALID_SCL_INFO_BLOCK));
5077
+ /* (-154) Keine SCL-Blocks in der LUT-Datei enthalten */
5078
+ rb_define_const(KontoCheck,"NO_SCL_BLOCKS",INT2FIX(NO_SCL_BLOCKS));
5079
+ /* (-153) Ungültige Eingabewerte in der SCL-Datei */
5080
+ rb_define_const(KontoCheck,"SCL_INPUT_FORMAT_ERROR",INT2FIX(SCL_INPUT_FORMAT_ERROR));
4543
5081
  /* (-152) Ungültiger Zähler in regulärem Ausdruck (innerhalb von {}) */
4544
5082
  rb_define_const(KontoCheck,"INVALID_REGULAR_EXPRESSION_CNT",INT2FIX(INVALID_REGULAR_EXPRESSION_CNT));
4545
5083
  /* (-151) Ungültiger regulärer Ausdruck (enthält zwei Zeichen aus [+?*] nacheinander) */
@@ -4846,4 +5384,8 @@ void Init_konto_check_raw()
4846
5384
  rb_define_const(KontoCheck,"OK_UNTERKONTO_ATTACHED",INT2FIX(OK_UNTERKONTO_ATTACHED));
4847
5385
  /* (26) ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt */
4848
5386
  rb_define_const(KontoCheck,"OK_SHORT_BIC_USED",INT2FIX(OK_SHORT_BIC_USED));
5387
+ /* (27) ok, für den BIC wurde die Extension XXX angehängt */
5388
+ rb_define_const(KontoCheck,"OK_SCL_EXTENSION_BIC_USED",INT2FIX(OK_SCL_EXTENSION_BIC_USED));
5389
+ /* (28) ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt */
5390
+ rb_define_const(KontoCheck,"OK_SCL_WILDCARD_BIC_USED",INT2FIX(OK_SCL_WILDCARD_BIC_USED));
4849
5391
  }