Metropoli BBS
VIEWER: validcc.bas MODE: TEXT (ASCII)
1 REM ***** Initialization *****
2 PRINT : PRINT "VALIDCC - Credit Card Number Verification Utility V1.0"
3 PRINT "          Non-copyright 1994 (NC) MHK."
4 LET M = 0: REM *** Multiplier for card number checking method ***
5 LET CS = 0: REM *** Temporary serial check number ***
6 LET A$ = "": REM *** Original card number ***
7 LET B$ = "": REM *** Filtered card number (ONLY NUMBERS) ***
8 LET CT$ = "": REM *** Credit card type ***

10 REM ***** Card number query *****
11 LET B$ = ""
12 PRINT : PRINT "                                       1-----------3-56"
13 INPUT "Input Credit Card Number [? for HELP]"; A$
14 IF LEFT$(A$, 1) = "?" THEN GOTO 20
15 FOR X = 1 TO LEN(A$)
16 IF MID$(A$, X, 1) >= "0" AND MID$(A$, X, 1) <= "9" OR MID$(A$, X, 1) = "-" THEN :  ELSE GOTO 44
17 IF MID$(A$, X, 1) >= "0" AND MID$(A$, X, 1) <= "9" THEN B$ = B$ + MID$(A$, X, 1)
18 NEXT X
19 GOTO 40

20 REM ***** Help *****
21 PRINT : PRINT "SOME HELP:"
22 PRINT : PRINT "Each credit card number consists of a series of 13, 15 or 16 numbers."
23 PRINT "Credit card  type is  identified from  the first number of  the serial and each"
24 PRINT "type has a certain number  of numbers in the serial. Here is  the list of cards"
25 PRINT "identified by this program:"
26 PRINT : PRINT "    1ST #:   CREDIT CARD COMPANY:   Numbers:"
27 PRINT "        3    American Express       15"
28 PRINT "        4    VISA                   13 or 16"
29 PRINT "        5    MasterCard             16"
30 PRINT "        6    Discover               16"
31 GOTO 10

40 REM ***** Errors *****
41 IF LEN(B$) = 0 THEN PRINT "No card number given! Please re-enter."; CHR$(7): GOTO 10
42 IF LEFT$(B$, 1) < "3" OR LEFT$(B$, 1) > "6" THEN PRINT "Unknown credit card number!"; CHR$(7): GOTO 72
43 GOTO 50
44 PRINT "Invalid character in card number!"; CHR$(7): GOTO 72
45 PRINT "Invalid serial number length for "; CT$; "! Try ? for HELP."; CHR$(7): GOTO 72

50 REM ***** Initial credit card number check *****
51 IF LEFT$(B$, 1) = "3" THEN CT$ = "American Express (AMEX)": IF NOT LEN(B$) = 15 THEN GOTO 45
52 IF LEFT$(B$, 1) = "4" THEN CT$ = "VISA": IF LEN(B$) = 13 OR LEN(B$) = 16 THEN :  ELSE GOTO 45
53 IF LEFT$(B$, 1) = "5" THEN CT$ = "MasterCard (MC)": IF NOT LEN(B$) = 16 THEN GOTO 45
54 IF LEFT$(B$, 1) = "6" THEN CT$ = "Discover (DISC)": IF NOT LEN(B$) = 16 THEN GOTO 45

60 REM ***** Validity check method *****
61 FOR X = LEN(B$) - 1 TO 1 STEP -1
62 IF M = 2 THEN M = 1 ELSE M = 2
63 IF VAL(MID$(B$, X, 1)) * M > 9 THEN CS = CS + VAL(MID$(B$, X, 1)) * M - 9 ELSE CS = CS + VAL(MID$(B$, X, 1)) * M
64 NEXT X

70 REM ***** Validation information *****
71 IF (CS + VAL(RIGHT$(B$, 1))) MOD 10 = 0 THEN PRINT "OK. Number checked as a valid "; CT$; " number.":  ELSE PRINT CHR$(7); "Serial "; B$; " is an INVALID "; CT$; " number!!!"; CHR$(7)
72 PRINT

[ RETURN TO DIRECTORY ]