This class is an Internationnal Bank Account Number,
according to the European standard:
IBAN Format: <http://www.ecbs.org/iban/iban.htm>
To create find the IBAN given an account number with a country-code:
(make-instance 'iban
:basic-form (remove #\space (format nil "~2A00~A" country-code account)))
this will compute the IBAN key, and print the IBAN instance.
To get the IBAN as a string with groups separated by spaces:
(com.informatimago.common-lisp.bank.iban:get-iban iban :with-spaces t)
License:
AGPL3
Copyright Pascal J. Bourguignon 1994 - 2012
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
|
(basic-form iban) |
generic-function |
RETURN: The basic form of the IBAN.
|
(check-country self) |
generic-function |
DO: Checks the country code in the basic-form,
and raises an error if not valid.
RAISE: IBAN-ERROR
RETURN: SELF
|
(check-iban-key iban) |
function |
DO: Check the IBAN KEY
The IBAN string must be in basic format,
all non alphanumeric characters removed.
0- move the first four characters of the IBAN to the end.
1- convert the letters into numerics.
2- apply MOD 97-10 (ISO 7064) : remainder of n by 97 must be 1
3- return T when the IBAN key checks.
RETURN: Whether the IBAN key checks.
|
(compute-iban-key country account) |
function |
DO: Compute the IBAN key for the given ACCOUNT.
ACCOUNT must be in basic format, all non alphanumeric characters removed.
0- create artificial IBAN with 00 check sum.
1- move the first four characters of the IBAN to the end.
2- convert the letters into numerics.
3- apply MOD 97-10 (ISO 7064): check sum is 98 - n mod 97.
4- return the complete IBAN.
RETURN: The new complete IBANA.
|
(get-and-check-alphanum self string &optional length) |
generic-function |
Check that STRING contains only alphanumeric character valid in an IBAN.
|
(get-country-code self) |
generic-function |
RETURN: The country code in the IBAN.
|
(get-iban self &key with-spaces) |
generic-function |
RETURN: The IBAN as a string, with spaces inserted when WITH-SPACES is
true, else in basic form.
|
(get-key self) |
generic-function |
RETURN: The computed key of the IBAN.
|
iban |
class |
The Internationnal Bank Account Number class.
Class precedence list: IBAN STANDARD-OBJECT T
Class init args: BASIC-FORM
|
iban-error |
condition |
An IBAN error.
Class precedence list: IBAN-ERROR SIMPLE-ERROR SIMPLE-CONDITION ERROR SERIOUS-CONDITION CONDITION STANDARD-OBJECT T
Class init args: FORMAT-CONTROL FORMAT-ARGUMENTS
|
(set-iban self iban &key with-key) |
generic-function |
DO: Change the IBAN. If WITH-KEY is true then the IBAN key is checked
and an error raised if it is not valid, else the IBAN key is
computed and substituted.
RETURN: SELF
SIGNAL: An IBAN-ERROR when with-key and the key in the IBAN is incorrect.