32 lines
761 B
Text
32 lines
761 B
Text
type string6(object s)
|
|
return string(s) and length(s)=6
|
|
end type
|
|
|
|
type sedolch(integer ch)
|
|
return ch>='0' and ch<='Z' and (ch<='9' or ch>='A') and not find(ch,"AEIOU")
|
|
end type
|
|
|
|
function sedol(string6 t)
|
|
sedolch c
|
|
integer s = 0
|
|
for i=1 to 6 do
|
|
c = t[i]
|
|
s += iff(c>='A'?c-'A'+10:c-'0')*{1,3,1,7,3,9}[i]
|
|
end for
|
|
return t & mod(10-mod(s,10),10)+'0'
|
|
end function
|
|
|
|
constant tests = {"710889",
|
|
"B0YBKJ",
|
|
"406566",
|
|
"B0YBLH",
|
|
"228276",
|
|
"B0YBKL",
|
|
"557910",
|
|
"B0YBKR",
|
|
"585284",
|
|
"B0YBKT",
|
|
"B00030"}
|
|
for i=1 to length(tests) do
|
|
?sedol(tests[i])
|
|
end for
|