32 lines
851 B
Plaintext
32 lines
851 B
Plaintext
'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
|