RosettaCodeData/Task/SEDOLs/Yabasic/sedols.basic

27 lines
683 B
Plaintext

data "710889", "B0YBKJ", "406566", "B0YBLH", "228276", "B0YBKL", "557910", "B0YBKR", "585284", "B0YBKT", "B00030", "AB", "B00A03", ""
do
read d$
if d$ = "" break
print sedol$(d$)
loop
sub sedol$(d$)
LOCAL a, i, s, weights$(1)
a = len(d$)
if a < 6 or a > 6 return d$ + ": Error in length"
for i = 1 to 6
if not instr("BCDFGHJKLMNPQRSTVWXYZ0123456789", mid$(d$, i, 1)) return d$ + ": Error in symbol " + mid$(d$, i, 1)
next
a = token("1 3 1 7 3 9", weights$())
FOR i = 1 TO 6
a = ASC(MID$(d$, i, 1)) - 48
s = s + (a + 3 * (a > 9)) * val(weights$(i))
NEXT
return d$ + CHR$(48 + mod(10 - mod(s, 10), 10))
end sub