'adapted from BASIC solution mult(1) = 1: mult(2) = 3: mult(3) = 1 mult(4) = 7: mult(5) = 3: mult(6) = 9 DO INPUT a$ PRINT a$ + STR$(getSedolCheckDigit(a$)) LOOP WHILE a$ <> "" FUNCTION getSedolCheckDigit (str$) IF LEN(str$) <> 6 THEN PRINT "Six chars only please" EXIT FUNCTION END IF str$ = upper$(str$) total = 0 FOR i = 1 TO 6 s$ = MID$(str$, i, 1) IF (s$ = "A") OR (s$ = "E") OR (s$ = "I") OR (s$ = "O") OR (s$ = "U") THEN PRINT "No vowels" EXIT FUNCTION END IF IF (ASC(s$) >= 48) AND (ASC(s$) <= 57) THEN total = total + VAL(s$) * mult(i) ELSE total = total + (ASC(s$) - 55) * mult(i) END IF NEXT i getSedolCheckDigit = (10 - (total MOD 10)) MOD 10 END FUNCTION