konto_check 6.08.0 → 6.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/konto_check_raw/konto_check.c +126 -106
- data/ext/konto_check_raw/konto_check.h +17 -13
- data/ext/konto_check_raw/konto_check_raw_ruby.c +528 -2
- data/lib/konto_check.rb +216 -0
- metadata +5 -4
@@ -10,7 +10,7 @@
|
|
10
10
|
* # Verwendung in anderen Programmen bzw. Programmiersprachen benutzt #
|
11
11
|
* # werden. #
|
12
12
|
* # #
|
13
|
-
* # Copyright (C) 2002-
|
13
|
+
* # Copyright (C) 2002-2020 Michael Plugge <m.plugge@hs-mannheim.de> #
|
14
14
|
* # #
|
15
15
|
* # Dieses Programm ist freie Software; Sie d�rfen es unter den #
|
16
16
|
* # Bedingungen der GNU Lesser General Public License, wie von der Free #
|
@@ -168,17 +168,19 @@
|
|
168
168
|
|
169
169
|
#if _WIN32>0 || _WIN64>0
|
170
170
|
# if USE_CDECL
|
171
|
-
#
|
172
|
-
#
|
173
|
-
#
|
174
|
-
#
|
175
|
-
#
|
176
|
-
#
|
177
|
-
#
|
178
|
-
#
|
179
|
-
#
|
180
|
-
#
|
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
|
181
182
|
# else
|
183
|
+
# define STDCALL __stdcall
|
182
184
|
# if BUILD_DLL /* DLL kompilieren */
|
183
185
|
# define DLL_EXPORT __declspec (dllexport) __stdcall
|
184
186
|
# define DLL_EXPORT_V __declspec (dllexport)
|
@@ -186,12 +188,13 @@
|
|
186
188
|
# define DLL_EXPORT __declspec (dllimport) __stdcall
|
187
189
|
# define DLL_EXPORT_V __declspec (dllimport)
|
188
190
|
# else /* kein DLL-Krempel erforderlich */
|
189
|
-
# define DLL_EXPORT
|
191
|
+
# define DLL_EXPORT __stdcall
|
190
192
|
# define DLL_EXPORT_V
|
191
193
|
# endif
|
192
194
|
# endif
|
193
195
|
# define localtime_r(timep,result) localtime(timep)
|
194
196
|
#else
|
197
|
+
# define STDCALL
|
195
198
|
# define DLL_EXPORT
|
196
199
|
# define DLL_EXPORT_V
|
197
200
|
#endif
|
@@ -500,7 +503,7 @@ extern const char *lut2_feld_namen[256];
|
|
500
503
|
#define OK_SHORT_BIC_USED 26
|
501
504
|
#define OK_SCL_EXTENSION_BIC_USED 27
|
502
505
|
#define OK_SCL_WILDCARD_BIC_USED 28
|
503
|
-
#line
|
506
|
+
#line 282 "konto_check_h.lx"
|
504
507
|
|
505
508
|
#define MAX_BLZ_CNT 30000 /* maximale Anzahl BLZ's in generate_lut() */
|
506
509
|
|
@@ -874,6 +877,7 @@ DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int
|
|
874
877
|
DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval);
|
875
878
|
DLL_EXPORT int current_lutfile_name_id(int *set,int *level,int *retval);
|
876
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);
|
877
881
|
DLL_EXPORT int get_lut_info2(char *lut_name,int *version_p,char **prolog_p,char **info_p,char **user_info_p);
|
878
882
|
DLL_EXPORT int get_lut_info_b(char **info,char *lutname);
|
879
883
|
DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char **info_p,char **user_info_p);
|
@@ -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
|
*
|
@@ -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)
|
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.
|
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,6 +5048,20 @@ 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
|
|