IBAN: Difference between revisions

Content added Content deleted
No edit summary
Line 3,449: Line 3,449:
invalid IBAN: GT11 2222 3333 4444 5555 6666 7777 ***error!*** invalid IBAN country, Guatemala isn't valid until 1-July-2014.
invalid IBAN: GT11 2222 3333 4444 5555 6666 7777 ***error!*** invalid IBAN country, Guatemala isn't valid until 1-July-2014.
invalid IBAN: MK11 2222 3333 4444 555 ***error!*** invalid IBAN check digits for Macedonia: 11
invalid IBAN: MK11 2222 3333 4444 555 ***error!*** invalid IBAN check digits for Macedonia: 11
</pre>

=={{header|Ring}}==
<lang ring>
# Project : IBAN
# Date : 2018/01/03
# Author : Gal Zsolt (~ CalmoSoft ~)
# Email : <calmosoft@gmail.com>

codes = list(5)
codes[1] = "GB82 WEST 1234 5698 7654 32"
codes[2] = "GB82 TEST 1234 5698 7654 32"
codes[3] = "GB81 WEST 1234 5698 7654 32"
codes[4] = "SA03 8000 0000 6080 1016 7519"
codes[5] = "CH93 0076 2011 6238 5295 7"

for y = 1 to len(codes)
see codes[y]
flag = 1
codes[y] = substr(codes[y], " ", "")
checkcode(codes[y])
check = checkiban(codes[y])
if check = 1
see " is valid" + nl
else
see " is invalid" + nl
ok
next

func checkcode(code)
for n = 1 to 2
if ascii(code[n]) < 65 or ascii(code[n]) > 90
flag = 0
ok
next
for m = 3 to len(code)
if (ascii(code[m]) > 64 and ascii(code[m]) < 91) or (ascii(code[m]) > 47 and ascii(code[m]) < 58)
else
flag = 0
ok
next

func checkiban(code)
code= substr(code, 5, len(code) - 4) + left(code, 4)
for x = 1 to len(code)
if ascii(code[x]) > 64 and ascii(code[x]) < 91
code = left(code, x-1) + string(ascii(code[x]) - 55) + right(code, len(code) - x)
ok
next
modold = left(code,9) % 97
for p = 1 to floor((len(code)-9)/7)
modnew = string(modold) + substr(code, 10 + (p-1) * 7, 7)
modnew = number(modnew) % 97
modold = modnew
next
modrest = right(code, len(code) - ((p-1)*7 + 9))
modnew = string(modold) + modrest
modnew = number(modnew) % 97
return modnew
</lang>
Output:
<pre>
GB82 WEST 1234 5698 7654 32 is valid
GB82 TEST 1234 5698 7654 32 is invalid
GB81 WEST 1234 5698 7654 32 is invalid
SA03 8000 0000 6080 1016 7519 is valid
CH93 0076 2011 6238 5295 7 is valid
</pre>
</pre>