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