RosettaCodeData/Task/CUSIP/Nanoquery/cusip.nanoquery

39 lines
814 B
Plaintext

def cusip_checksum(cusip)
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
num = "0123456789"
sum = 0
for i in range(1, 8)
c = cusip[i - 1]
v = 0
if c in num
v = int(c)
else if c in alpha
p = alpha[c] + 1
v = p + 9
else if c in "*@#"
v = "*@#"[c] + 36
end
if (i % 2) = 0
v *= 2
end
sum += int(v / 10) + (v % 10)
end
return (10 - (sum % 10)) % 10
end
if main
codes = {"037833100", "17275R102", "38259P508",\
"594918104", "68389X106", "68389X105"}
for code in codes
if int(code[len(code) - 1]) = cusip_checksum(code)
println code + " is valid"
else
println code + " is invalid"
end
end
end