' version 04-07-2018 ' compile with: fbc -s console Function Damm(digit_str As String) As UInteger Dim As UInteger table(10,10) => { { 0, 3, 1, 7, 5, 9, 8, 6, 4, 2 } , _ { 7, 0, 9, 2, 1, 5, 4, 8, 6, 3 } , { 4, 2, 0, 6, 8, 7, 1, 3, 5, 9 } , _ { 1, 7, 5, 0, 9, 8, 3, 4, 2, 6 } , { 6, 1, 2, 3, 0, 4, 5, 9, 7, 8 } , _ { 3, 6, 7, 4, 2, 0, 9, 5, 8, 1 } , { 5, 8, 6, 9, 7, 2, 0, 1, 3, 4 } , _ { 8, 9, 4, 5, 3, 6, 2, 0, 1, 7 } , { 9, 4, 3, 8, 6, 1, 7, 2, 0, 5 } , _ { 2, 5, 8, 1, 4, 3, 6, 7, 9, 0 } } Dim As UInteger i, col_i, old_row_i, new_row_i For i = 0 To Len(digit_str) -1 col_i = digit_str[i] - Asc("0") new_row_i = table(old_row_i, col_i) old_row_i = new_row_i Next Return new_row_i End Function ' ------=< MAIN >=------ Data "5724", "5727", "112946", "" Dim As UInteger checksum, t Dim As String test_string Do Read test_string If test_string = "" Then Exit Do Print "Checksum test: ";test_string; checksum = Damm(test_string) If checksum = 0 Then Print " is valid" Else Print " is invalid" End If Loop ' empty keyboard buffer While Inkey <> "" : Wend Print : Print "hit any key to end program" Sleep End