I can also offer some IBAN Check code using the arithmetic of an Oracle
database.
Arne Ortlinghaus
ACS Data Systems
method ValidateIBAN(cIBANChar as string) class clsIBAN
local cIBANTmp1, cIBANTmp2, cChar, cSql as string
local iPos as dword
local nChDig as usual
if ascan(_aLaender,left(cIBANChar,2)) == 0
return true
end if
cIBANChar := AllTrim(cIBANChar) // Todo 66425 AO 12.07.2012 Runtimefehler
bei IBAN-
Prüfung im Falle von falschen Zeichen
cIBANTmp1 := substr(cIBANChar,5)+left(cIBANChar,4)
cIBANTmp2 := ""
for iPos := 1 to slen(cIBANTmp1)
cChar := substr(cIBANTmp1,iPos,1)
if ! isdigit(string2psz(cChar))
cChar := str(asc(cChar)-55,2)
end if
cIBANTmp2 += cChar
next
if !Empty(Val(cIBANTmp2)) // Todo 63367 Fehlermeldung bei Import IBAN in
Kunden/Lieferanten
cSql := 'SELECT MOD('+SQLValue2SQLString(cIBANTmp2)+',97) "Modulus" FROM
DUAL'
nChDig := GetSQLValueFast(cSql, "N", 10, 0, 0, null_object, true)
else
nChDig := 0
endif
//msginfo(cIBANChar+chr(13)+chr(10)+cIBANTmp1+chr(13 )+chr(10)+cIBANTmp2+chr(13)+chr(10)+cSql+chr(13)+c hr(10)+typevalue2string(nChDig))
return nChDig == 1
method Init(oOwner, oServer) class clsIBAN
_oOwner := oOwner
_oServer := oServer
_aLaender := ArrayCreate(18)
_aLaengen := ArrayCreate(18)
_aLaender[1] := "IT"
_aLaengen[1] := 27
_aLaender[2] := "AT"
_aLaengen[2] := 20
_aLaender[3] := "BE"
_aLaengen[3] := 16
_aLaender[4] := "CH"
_aLaengen[4] := 21
_aLaender[5] := "DE"
_aLaengen[5] := 22
_aLaender[6] := "DK"
_aLaengen[6] := 18
_aLaender[7] := "ES"
_aLaengen[7] := 24
_aLaender[8] := "FI"
_aLaengen[8] := 18
_aLaender[9] := "FR"
_aLaengen[9] := 27
_aLaender[10] := "GB"
_aLaengen[10] := 22
_aLaender[11] := "IE"
_aLaengen[11] := 22
_aLaender[12] := "IS"
_aLaengen[13] := 26
_aLaender[13] := "LU"
_aLaengen[13] := 20
_aLaender[14] := "NL"
_aLaengen[14] := 18
_aLaender[15] := "NO"
_aLaengen[15] := 15
_aLaender[16] := "PT"
_aLaengen[16] := 25
_aLaender[17] := "SE"
_aLaengen[17] := 24
_aLaender[18] := "SM"
_aLaengen[18] := 27
return self
class clsIBAN
protect _oOwner as object
protect _oServer as object
protect _aLaender as array
protect _aLaengen as array
declare method ValidateIBAN