sub cusip(inputStr$) local i, v, sum, x$ Print inputStr$; If Len(inputStr$) <> 9 Print " length is incorrect, invalid cusip" : return For i = 1 To 8 x$ = mid$(inputStr$, i, 1) switch x$ Case "*": v = 36 : break Case "@": v = 37 : break Case "#": v = 38 : break default: if x$ >= "A" and x$ <= "Z" then v = asc(x$) - Asc("A") + 10 elsif x$ >= "0" and x$ <= "9" then v = asc(x$) - asc("0") else Print " found a invalid character, invalid cusip" return end if End switch If and(i, 1) = 0 v = v * 2 sum = sum + int(v / 10) + mod(v, 10) Next sum = mod(10 - mod(sum, 10), 10) If sum = asc(mid$(inputStr$, 9, 1)) - Asc("0") Then Print " is valid" Else Print " is invalid" End If End Sub // ------=< MAIN >=------ Data "037833100", "17275R102", "38259P508" Data "594918104", "68389X106", "68389X105", "" Print do Read inputStr$ if inputStr$ = "" break cusip(inputStr$) loop