Uncle Pete’s Freebie of the day…..
I need to validate the credit card number a user enters, so after some Googleing I came up with this function. It accepts the credit card number as a string then strips any spaces or dashes off. It then performs a few test to determine the card type, and check sum. If it determines that the number is a valid credit card number then it returns the card type, otherwise it returns an empty string.
Enjoy!
PROCEDURE ValidateCCNumber(LOCAL CardNumber is string) CardType is string TotalSum is int CardNumber = Replace(CardNumber,"-","") CardNumber = Replace(CardNumber," ","") IF Val(Middle(CardNumber, 1, 2)) >= 51 AND Val(Middle(CardNumber, 1, 2)) <= 55 AND Length(NoSpace(CardNumber)) = 16 THEN CardType = "Master Card" END IF Val(Middle(CardNumber, 1, 1)) = 4 AND ( Length(NoSpace(CardNumber)) = 13 OR Length(NoSpace(CardNumber)) = 16) THEN CardType = "Visa" END IF (Val(Middle(CardNumber, 1, 2)) = 34 OR Val(Middle(CardNumber, 1, 2)) = 37) AND Length(NoSpace(CardNumber)) = 15 THEN CardType = "American Express" END IF Val(Middle(CardNumber, 1, 4)) = 6011 AND Length(NoSpace(CardNumber)) = 16 THEN CardType = "Discover" END IF CardType = "" THEN RESULT "" END FOR I = 1 _TO_ Length(NoSpace(CardNumber)) SWITCH I CASE 1,3,5,7,9,11,13,15 TotalSum = TotalSum + Val(Middle(CardNumber,Length(NoSpace(CardNumber)) - (I-1),1)) OTHER CASE IF (Val(Middle(CardNumber,Length(NoSpace(CardNumber)) - (I-1),1))*2) > 9 THEN TotalSum = TotalSum + Val(Middle(NumToString((Val(Middle(CardNumber, Length(NoSpace(CardNumber)) - (I-1),1))*2),"2.0f"),1,1)) + Val(Middle(NumToString((Val(Middle(CardNumber, Length(NoSpace(CardNumber)) - (I-1),1))*2),"2.0f"),2,1)) ELSE TotalSum = TotalSum + (Val(Middle(CardNumber,Length(NoSpace(CardNumber)) - (I-1),1))*2) END END END IF TotalSum modulo 10 <> 0 THEN RESULT "" END RESULT CardType
Now, back to your regular schedule program….