' version 04-04-2017 ' compile with: fbc -s console sub cusip(input_str As String) Print input_str; If Len(input_str) <> 9 Then Print " length is incorrect, invalid cusip" Return End If Dim As Long i, v , sum Dim As UByte x For i = 1 To 8 x = input_str[i-1] Select Case x Case Asc("0") To Asc("9") v = x - Asc("0") Case Asc("A") To Asc("Z") v = x - Asc("A") + 1 + 9 Case Asc("*") v= 36 Case Asc("@") v = 37 Case Asc("#") v = 38 Case Else Print " found a invalid character, invalid cusip" return End Select If (i And 1) = 0 Then v = v * 2 sum = sum + v \ 10 + v Mod 10 Next sum = (10 - (sum Mod 10)) Mod 10 If sum = (input_str[8] - Asc("0")) Then Print " is valid" Else Print " is invalid" End If End Sub ' ------=< MAIN >=------ Data "037833100", "17275R102", "38259P508" Data "594918104", "68389X106", "68389X105" Dim As String input_str Print For i As Integer = 1 To 6 Read input_str cusip(input_str) Next ' empty keyboard buffer While InKey <> "" : Wend Print : Print "hit any key to end program" Sleep End