Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,78 @@
|
|||
' version 27-10-2016
|
||||
' compile with: fbc -s console
|
||||
|
||||
#Ifndef TRUE ' define true and false for older freebasic versions
|
||||
#Define FALSE 0
|
||||
#Define TRUE Not FALSE
|
||||
#EndIf
|
||||
|
||||
Function luhntest(cardnr As String) As Long
|
||||
|
||||
cardnr = Trim(cardnr) ' remove spaces
|
||||
|
||||
Dim As String reverse_nr = cardnr
|
||||
Dim As Long i, j, s1, s2, l = Len(cardnr) -1
|
||||
|
||||
' reverse string
|
||||
For i = 0 To l
|
||||
reverse_nr[i] = cardnr[l - i]
|
||||
Next
|
||||
' sum odd numbers
|
||||
For i = 0 To l Step 2
|
||||
s1 = s1 + (reverse_nr[i] - Asc("0"))
|
||||
Next
|
||||
' sum even numbers
|
||||
For i = 1 To l Step 2
|
||||
j = reverse_nr[i] - Asc("0")
|
||||
j = j * 2
|
||||
If j > 9 Then j = j Mod 10 +1
|
||||
s2 = s2 + j
|
||||
Next
|
||||
|
||||
If (s1 + s2) Mod 10 = 0 Then
|
||||
Return TRUE
|
||||
Else
|
||||
Return FALSE
|
||||
End If
|
||||
|
||||
End Function
|
||||
|
||||
' ------=< MAIN >=-----
|
||||
|
||||
Dim As String test_str
|
||||
Dim As String test_set(1 To ...) = { "US0378331005", "US0373831005", _
|
||||
"U50378331005", "US03378331005", "AU0000XVGZA3", _
|
||||
"AU0000VXGZA3", "FR0000988040" }
|
||||
|
||||
Dim As Long i, l, n, x
|
||||
|
||||
For i = 1 To UBound(test_set)
|
||||
test_str = ""
|
||||
l = Len(test_set(i))
|
||||
If l <> 12 Then
|
||||
Print test_set(i), "Invalid, length <> 12 char."
|
||||
Continue For
|
||||
End If
|
||||
If test_set(i)[0] < Asc("A") Or test_set(i)[1] < Asc("A") Then
|
||||
Print test_set(i), "Invalid, number needs to start with 2 characters"
|
||||
Continue For
|
||||
End If
|
||||
For n = 0 To l -1
|
||||
x = test_set(i)[n] - Asc("0")
|
||||
' if test_set(i)[i] is a letter we to correct for that
|
||||
If x > 9 Then x = x -7
|
||||
If x < 10 Then
|
||||
test_str = test_str + Str(x)
|
||||
Else ' two digest number
|
||||
test_str = test_str + Str(x \ 10) + Str(x Mod 10)
|
||||
End If
|
||||
Next
|
||||
Print test_set(i), IIf(luhntest(test_str) = TRUE, "Valid","Invalid, checksum error")
|
||||
Next
|
||||
|
||||
|
||||
' empty keyboard buffer
|
||||
While InKey <> "" : Wend
|
||||
Print : Print "hit any key to end program"
|
||||
Sleep
|
||||
End
|
||||
Loading…
Add table
Add a link
Reference in a new issue