konto_check 6.02.1 → 6.05.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/ext/konto_check_raw/konto_check.c +991 -209
- data/ext/konto_check_raw/konto_check.h +37 -1
- data/ext/konto_check_raw/konto_check_raw_ruby.c +18 -1
- data/ext/konto_check_raw/retvals.h +40 -0
- metadata +3 -3
@@ -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-
|
13
|
+
* # Copyright (C) 2002-2018 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 #
|
@@ -286,6 +287,10 @@
|
|
286
287
|
#define LUT2_IBAN_REGEL 25
|
287
288
|
#define LUT2_IBAN_REGEL_SORT 26
|
288
289
|
#define LUT2_BIC_H_SORT 27
|
290
|
+
#define LUT2_SCL_INFO 28
|
291
|
+
#define LUT2_SCL_BIC 29
|
292
|
+
#define LUT2_SCL_NAME 30
|
293
|
+
#define LUT2_SCL_FLAGS 31
|
289
294
|
|
290
295
|
#define LUT2_2_BLZ 101
|
291
296
|
#define LUT2_2_FILIALEN 102
|
@@ -314,6 +319,10 @@
|
|
314
319
|
#define LUT2_2_IBAN_REGEL 125
|
315
320
|
#define LUT2_2_IBAN_REGEL_SORT 126
|
316
321
|
#define LUT2_2_BIC_H_SORT 127
|
322
|
+
#define LUT2_2_SCL_INFO 128
|
323
|
+
#define LUT2_2_SCL_BIC 129
|
324
|
+
#define LUT2_2_SCL_NAME 130
|
325
|
+
#define LUT2_2_SCL_FLAGS 131
|
317
326
|
|
318
327
|
#define LUT2_DEFAULT 501
|
319
328
|
|
@@ -330,6 +339,12 @@ extern const char *lut2_feld_namen[256];
|
|
330
339
|
*/
|
331
340
|
|
332
341
|
#undef FALSE
|
342
|
+
#define NO_SCL_BLOCKS_LOADED -158
|
343
|
+
#define NO_SCL_INFO_BLOCK -157
|
344
|
+
#define SCL_BIC_NOT_FOUND -156
|
345
|
+
#define INVALID_SCL_INFO_BLOCK -155
|
346
|
+
#define NO_SCL_BLOCKS -154
|
347
|
+
#define SCL_INPUT_FORMAT_ERROR -153
|
333
348
|
#define INVALID_REGULAR_EXPRESSION_CNT -152
|
334
349
|
#define INVALID_REGULAR_EXPRESSION -151
|
335
350
|
#define INVALID_HANDLE -150
|
@@ -483,6 +498,9 @@ extern const char *lut2_feld_namen[256];
|
|
483
498
|
#define OK_KTO_REPLACED_NO_PZ 24
|
484
499
|
#define OK_UNTERKONTO_ATTACHED 25
|
485
500
|
#define OK_SHORT_BIC_USED 26
|
501
|
+
#define OK_SCL_EXTENSION_BIC_USED 27
|
502
|
+
#define OK_SCL_WILDCARD_BIC_USED 28
|
503
|
+
#line 279 "konto_check_h.lx"
|
486
504
|
|
487
505
|
#define MAX_BLZ_CNT 30000 /* maximale Anzahl BLZ's in generate_lut() */
|
488
506
|
|
@@ -1090,6 +1108,24 @@ DLL_EXPORT int iban_name_id(char *iban,int filiale,int*retval);
|
|
1090
1108
|
DLL_EXPORT int iban_name_kurz_id(char *iban,int filiale,int*retval);
|
1091
1109
|
DLL_EXPORT int iban_ort_id(char *iban,int filiale,int*retval);
|
1092
1110
|
|
1111
|
+
/* Funktionen f�r das SCL-Verzeichnis */
|
1112
|
+
DLL_EXPORT int lut_scl_init(char *lut_name);
|
1113
|
+
DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso);
|
1114
|
+
DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile);
|
1115
|
+
DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_bic,const char **scl_name);
|
1116
|
+
DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **used_bic,const char **scl_name);
|
1117
|
+
DLL_EXPORT int lut_scl_multi_blz_i(int blz,const char **scl_flags,const char **used_bic,const char **scl_name);
|
1118
|
+
DLL_EXPORT int lut_scl_sct(char *bic,int *retval);
|
1119
|
+
DLL_EXPORT int lut_scl_sdd(char *bic,int *retval);
|
1120
|
+
DLL_EXPORT int lut_scl_cor1(char *bic,int *retval);
|
1121
|
+
DLL_EXPORT int lut_scl_b2b(char *bic,int *retval);
|
1122
|
+
DLL_EXPORT int lut_scl_scc(char *bic,int *retval);
|
1123
|
+
DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic);
|
1124
|
+
DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic);
|
1125
|
+
DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic);
|
1126
|
+
DLL_EXPORT int lut_scl_b2b_blz(char *blz,int *retval,const char **used_bic);
|
1127
|
+
DLL_EXPORT int lut_scl_scc_blz(char *blz,int *retval,const char **used_bic);
|
1128
|
+
|
1093
1129
|
/*
|
1094
1130
|
* ######################################################################
|
1095
1131
|
* # globale Variablen #
|
@@ -811,6 +811,7 @@ static VALUE lut_blocks_rb(int argc,VALUE* argv,VALUE self)
|
|
811
811
|
*/
|
812
812
|
static VALUE lut_blocks1_rb(int argc,VALUE* argv,VALUE self)
|
813
813
|
{
|
814
|
+
// rb_scan_args(argc,argv,"0",NULL);
|
814
815
|
return INT2FIX(lut_blocks(0,NULL,NULL,NULL));
|
815
816
|
}
|
816
817
|
|
@@ -4357,7 +4358,7 @@ void Init_konto_check_raw()
|
|
4357
4358
|
*
|
4358
4359
|
* <b>ATTENTION:</b> There are a few important changes in the API between
|
4359
4360
|
* version 0.0.2 (version by Peter Horn/Provideal), version 0.0.6 (jeanmartin)
|
4360
|
-
* and this version (V. 6.
|
4361
|
+
* and this version (V. 6.05 from 2018-09-01):
|
4361
4362
|
*
|
4362
4363
|
* * The function KontoCheck::load_bank_data() is no longer used; it is
|
4363
4364
|
* replaced by KontoCheck::init() and KontoCheck::generate_lutfile().
|
@@ -4539,6 +4540,18 @@ void Init_konto_check_raw()
|
|
4539
4540
|
rb_define_module_function(KontoCheck,"load_bank_data",load_bank_data,1);
|
4540
4541
|
|
4541
4542
|
/* Rückgabewerte der konto_check Bibliothek */
|
4543
|
+
/* (-158) die SCL-Blocks wurden noch nicht eingelesen */
|
4544
|
+
rb_define_const(KontoCheck,"NO_SCL_BLOCKS_LOADED",INT2FIX(NO_SCL_BLOCKS_LOADED));
|
4545
|
+
/* (-157) Der Info-Block des SCL-Verzeichnisses wurde noch nicht eingelesen */
|
4546
|
+
rb_define_const(KontoCheck,"NO_SCL_INFO_BLOCK",INT2FIX(NO_SCL_INFO_BLOCK));
|
4547
|
+
/* (-156) Der BIC wurde im SCL-Verzeichnis nicht gefunden */
|
4548
|
+
rb_define_const(KontoCheck,"SCL_BIC_NOT_FOUND",INT2FIX(SCL_BIC_NOT_FOUND));
|
4549
|
+
/* (-155) Ungültiger SCL-Info-Block in der LUT-Datei */
|
4550
|
+
rb_define_const(KontoCheck,"INVALID_SCL_INFO_BLOCK",INT2FIX(INVALID_SCL_INFO_BLOCK));
|
4551
|
+
/* (-154) Keine SCL-Blocks in der LUT-Datei enthalten */
|
4552
|
+
rb_define_const(KontoCheck,"NO_SCL_BLOCKS",INT2FIX(NO_SCL_BLOCKS));
|
4553
|
+
/* (-153) Ungültige Eingabewerte in der SCL-Datei */
|
4554
|
+
rb_define_const(KontoCheck,"SCL_INPUT_FORMAT_ERROR",INT2FIX(SCL_INPUT_FORMAT_ERROR));
|
4542
4555
|
/* (-152) Ungültiger Zähler in regulärem Ausdruck (innerhalb von {}) */
|
4543
4556
|
rb_define_const(KontoCheck,"INVALID_REGULAR_EXPRESSION_CNT",INT2FIX(INVALID_REGULAR_EXPRESSION_CNT));
|
4544
4557
|
/* (-151) Ungültiger regulärer Ausdruck (enthält zwei Zeichen aus [+?*] nacheinander) */
|
@@ -4845,4 +4858,8 @@ void Init_konto_check_raw()
|
|
4845
4858
|
rb_define_const(KontoCheck,"OK_UNTERKONTO_ATTACHED",INT2FIX(OK_UNTERKONTO_ATTACHED));
|
4846
4859
|
/* (26) ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt */
|
4847
4860
|
rb_define_const(KontoCheck,"OK_SHORT_BIC_USED",INT2FIX(OK_SHORT_BIC_USED));
|
4861
|
+
/* (27) ok, für den BIC wurde die Extension XXX angehängt */
|
4862
|
+
rb_define_const(KontoCheck,"OK_SCL_EXTENSION_BIC_USED",INT2FIX(OK_SCL_EXTENSION_BIC_USED));
|
4863
|
+
/* (28) ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt */
|
4864
|
+
rb_define_const(KontoCheck,"OK_SCL_WILDCARD_BIC_USED",INT2FIX(OK_SCL_WILDCARD_BIC_USED));
|
4848
4865
|
}
|
@@ -48,6 +48,12 @@ DLL_EXPORT const char *kto_check_retval2txt(int retval)
|
|
48
48
|
DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
49
49
|
{
|
50
50
|
switch(retval){
|
51
|
+
case NO_SCL_BLOCKS_LOADED: return "die SCL-Blocks wurden noch nicht eingelesen";
|
52
|
+
case NO_SCL_INFO_BLOCK: return "Der Info-Block des SCL-Verzeichnisses wurde noch nicht eingelesen";
|
53
|
+
case SCL_BIC_NOT_FOUND: return "Der BIC wurde im SCL-Verzeichnis nicht gefunden";
|
54
|
+
case INVALID_SCL_INFO_BLOCK: return "Ung�ltiger SCL-Info-Block in der LUT-Datei";
|
55
|
+
case NO_SCL_BLOCKS: return "Keine SCL-Blocks in der LUT-Datei enthalten";
|
56
|
+
case SCL_INPUT_FORMAT_ERROR: return "Ung�ltige Eingabewerte in der SCL-Datei";
|
51
57
|
case INVALID_REGULAR_EXPRESSION_CNT: return "Ung�ltiger Z�hler in regul�rem Ausdruck (innerhalb von {})";
|
52
58
|
case INVALID_REGULAR_EXPRESSION: return "Ung�ltiger regul�rer Ausdruck (enth�lt zwei Zeichen aus [+?*] nacheinander)";
|
53
59
|
case INVALID_HANDLE: return "Ung�ltiges Handle angegeben";
|
@@ -202,6 +208,8 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
202
208
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Pr�fziffer";
|
203
209
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angef�gt";
|
204
210
|
case OK_SHORT_BIC_USED: return "ok, f�r den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
211
|
+
case OK_SCL_EXTENSION_BIC_USED: return "ok, f�r den BIC wurde die Extension XXX angeh�ngt";
|
212
|
+
case OK_SCL_WILDCARD_BIC_USED: return "ok, f�r den BIC wurde die Wildcard-Version (8stellig) benutzt";
|
205
213
|
default: return "ung�ltiger R�ckgabewert";
|
206
214
|
}
|
207
215
|
}
|
@@ -218,6 +226,12 @@ DLL_EXPORT const char *kto_check_retval2iso(int retval)
|
|
218
226
|
DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
219
227
|
{
|
220
228
|
switch(retval){
|
229
|
+
case NO_SCL_BLOCKS_LOADED: return "die SCL-Blocks wurden noch nicht eingelesen";
|
230
|
+
case NO_SCL_INFO_BLOCK: return "Der Info-Block des SCL-Verzeichnisses wurde noch nicht eingelesen";
|
231
|
+
case SCL_BIC_NOT_FOUND: return "Der BIC wurde im SCL-Verzeichnis nicht gefunden";
|
232
|
+
case INVALID_SCL_INFO_BLOCK: return "Ung�ltiger SCL-Info-Block in der LUT-Datei";
|
233
|
+
case NO_SCL_BLOCKS: return "Keine SCL-Blocks in der LUT-Datei enthalten";
|
234
|
+
case SCL_INPUT_FORMAT_ERROR: return "Ung�ltige Eingabewerte in der SCL-Datei";
|
221
235
|
case INVALID_REGULAR_EXPRESSION_CNT: return "Ung�ltiger Z� hler in regul� rem Ausdruck (innerhalb von {})";
|
222
236
|
case INVALID_REGULAR_EXPRESSION: return "Ung�ltiger regul� rer Ausdruck (enth� lt zwei Zeichen aus [+?*] nacheinander)";
|
223
237
|
case INVALID_HANDLE: return "Ung�ltiges Handle angegeben";
|
@@ -372,6 +386,8 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
372
386
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Pr�fziffer";
|
373
387
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angef�gt";
|
374
388
|
case OK_SHORT_BIC_USED: return "ok, f�r den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
389
|
+
case OK_SCL_EXTENSION_BIC_USED: return "ok, f�r den BIC wurde die Extension XXX angeh� ngt";
|
390
|
+
case OK_SCL_WILDCARD_BIC_USED: return "ok, f�r den BIC wurde die Wildcard-Version (8stellig) benutzt";
|
375
391
|
default: return "ung�ltiger R�ckgabewert";
|
376
392
|
}
|
377
393
|
}
|
@@ -388,6 +404,12 @@ DLL_EXPORT const char *kto_check_retval2dos(int retval)
|
|
388
404
|
DLL_EXPORT const char *kto_check_retval2html(int retval)
|
389
405
|
{
|
390
406
|
switch(retval){
|
407
|
+
case NO_SCL_BLOCKS_LOADED: return "die SCL-Blocks wurden noch nicht eingelesen";
|
408
|
+
case NO_SCL_INFO_BLOCK: return "Der Info-Block des SCL-Verzeichnisses wurde noch nicht eingelesen";
|
409
|
+
case SCL_BIC_NOT_FOUND: return "Der BIC wurde im SCL-Verzeichnis nicht gefunden";
|
410
|
+
case INVALID_SCL_INFO_BLOCK: return "Ungültiger SCL-Info-Block in der LUT-Datei";
|
411
|
+
case NO_SCL_BLOCKS: return "Keine SCL-Blocks in der LUT-Datei enthalten";
|
412
|
+
case SCL_INPUT_FORMAT_ERROR: return "Ungültige Eingabewerte in der SCL-Datei";
|
391
413
|
case INVALID_REGULAR_EXPRESSION_CNT: return "Ungültiger Zähler in regulärem Ausdruck (innerhalb von {})";
|
392
414
|
case INVALID_REGULAR_EXPRESSION: return "Ungültiger regulärer Ausdruck (enthält zwei Zeichen aus [+?*] nacheinander)";
|
393
415
|
case INVALID_HANDLE: return "Ungültiges Handle angegeben";
|
@@ -542,6 +564,8 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
542
564
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Prüfziffer";
|
543
565
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angefügt";
|
544
566
|
case OK_SHORT_BIC_USED: return "ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
567
|
+
case OK_SCL_EXTENSION_BIC_USED: return "ok, für den BIC wurde die Extension XXX angehängt";
|
568
|
+
case OK_SCL_WILDCARD_BIC_USED: return "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt";
|
545
569
|
default: return "ungültiger Rückgabewert";
|
546
570
|
}
|
547
571
|
}
|
@@ -558,6 +582,12 @@ DLL_EXPORT const char *kto_check_retval2html(int retval)
|
|
558
582
|
DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
559
583
|
{
|
560
584
|
switch(retval){
|
585
|
+
case NO_SCL_BLOCKS_LOADED: return "die SCL-Blocks wurden noch nicht eingelesen";
|
586
|
+
case NO_SCL_INFO_BLOCK: return "Der Info-Block des SCL-Verzeichnisses wurde noch nicht eingelesen";
|
587
|
+
case SCL_BIC_NOT_FOUND: return "Der BIC wurde im SCL-Verzeichnis nicht gefunden";
|
588
|
+
case INVALID_SCL_INFO_BLOCK: return "Ungültiger SCL-Info-Block in der LUT-Datei";
|
589
|
+
case NO_SCL_BLOCKS: return "Keine SCL-Blocks in der LUT-Datei enthalten";
|
590
|
+
case SCL_INPUT_FORMAT_ERROR: return "Ungültige Eingabewerte in der SCL-Datei";
|
561
591
|
case INVALID_REGULAR_EXPRESSION_CNT: return "Ungültiger Zähler in regulärem Ausdruck (innerhalb von {})";
|
562
592
|
case INVALID_REGULAR_EXPRESSION: return "Ungültiger regulärer Ausdruck (enthält zwei Zeichen aus [+?*] nacheinander)";
|
563
593
|
case INVALID_HANDLE: return "Ungültiges Handle angegeben";
|
@@ -712,6 +742,8 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
712
742
|
case OK_KTO_REPLACED_NO_PZ: return "ok, die Kontonummer wurde ersetzt, die neue Kontonummer hat keine Prüfziffer";
|
713
743
|
case OK_UNTERKONTO_ATTACHED: return "ok, es wurde ein (weggelassenes) Unterkonto angefügt";
|
714
744
|
case OK_SHORT_BIC_USED: return "ok, für den BIC wurde die Zweigstellennummer allerdings durch XXX ersetzt";
|
745
|
+
case OK_SCL_EXTENSION_BIC_USED: return "ok, für den BIC wurde die Extension XXX angehängt";
|
746
|
+
case OK_SCL_WILDCARD_BIC_USED: return "ok, für den BIC wurde die Wildcard-Version (8stellig) benutzt";
|
715
747
|
default: return "ungültiger Rückgabewert";
|
716
748
|
}
|
717
749
|
}
|
@@ -728,6 +760,12 @@ DLL_EXPORT const char *kto_check_retval2utf8(int retval)
|
|
728
760
|
DLL_EXPORT const char *kto_check_retval2txt_short(int retval)
|
729
761
|
{
|
730
762
|
switch(retval){
|
763
|
+
case NO_SCL_BLOCKS_LOADED: return "NO_SCL_BLOCKS_LOADED";
|
764
|
+
case NO_SCL_INFO_BLOCK: return "NO_SCL_INFO_BLOCK";
|
765
|
+
case SCL_BIC_NOT_FOUND: return "SCL_BIC_NOT_FOUND";
|
766
|
+
case INVALID_SCL_INFO_BLOCK: return "INVALID_SCL_INFO_BLOCK";
|
767
|
+
case NO_SCL_BLOCKS: return "NO_SCL_BLOCKS";
|
768
|
+
case SCL_INPUT_FORMAT_ERROR: return "SCL_INPUT_FORMAT_ERROR";
|
731
769
|
case INVALID_REGULAR_EXPRESSION_CNT: return "INVALID_REGULAR_EXPRESSION_CNT";
|
732
770
|
case INVALID_REGULAR_EXPRESSION: return "INVALID_REGULAR_EXPRESSION";
|
733
771
|
case INVALID_HANDLE: return "INVALID_HANDLE";
|
@@ -882,6 +920,8 @@ DLL_EXPORT const char *kto_check_retval2txt_short(int retval)
|
|
882
920
|
case OK_KTO_REPLACED_NO_PZ: return "OK_KTO_REPLACED_NO_PZ";
|
883
921
|
case OK_UNTERKONTO_ATTACHED: return "OK_UNTERKONTO_ATTACHED";
|
884
922
|
case OK_SHORT_BIC_USED: return "OK_SHORT_BIC_USED";
|
923
|
+
case OK_SCL_EXTENSION_BIC_USED: return "OK_SCL_EXTENSION_BIC_USED";
|
924
|
+
case OK_SCL_WILDCARD_BIC_USED: return "OK_SCL_WILDCARD_BIC_USED";
|
885
925
|
default: return "UNDEFINED_RETVAL";
|
886
926
|
}
|
887
927
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: konto_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.05.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Provideal Systems GmbH
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-09-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thoughtbot-shoulda
|
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
66
|
version: '0'
|
67
67
|
requirements: []
|
68
68
|
rubyforge_project:
|
69
|
-
rubygems_version: 2.
|
69
|
+
rubygems_version: 2.7.6
|
70
70
|
signing_key:
|
71
71
|
specification_version: 4
|
72
72
|
summary: Checking german BICs/Bank account numbers and IBANs, generate IBANs, retrieve
|