64 lines
1.3 KiB
Plaintext
64 lines
1.3 KiB
Plaintext
' 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
|