Here is a simple example in freebasic that implements the Luhn's algorithm. It is a literal translation of a Pascal source code found in Internet.

function luhn(arg as String) as String Dim xpos as Integer Dim sum as Integer Dim temp as Byte sum = 0 for xpos = len(arg)-1 to 0 step -1 'Run the characters backwards temp = arg[xpos]-48 'Convert from ASCII to byte if (len(arg)-xpos-1) mod 2 = 0 then sum = sum + temp 'Odd characters just add else if temp < 5 then sum = sum + 2*temp 'Even characters add double else sum = sum + (2*temp)-9 'or sum the digits of the doubling end if end if next xpos function = "False" if (sum mod 10) = 0 then function = "True" 'Return "True" if sum ends in a 0 end function Dim CrCd as String Dim Numb as String Dim N as Integer Print "Credit card number xxxx-xxxx-xxxx-xxxx" Input CrCd Numb = "" For N = 0 to len(CrCd)-1 if chr (CrCd[N]) <> "-" then Numb = Numb + chr (CrCd[N]) end if Next N Print "Card number "; Numb; " is "; luhn(Numb)