home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac13disk / hbasic / valid.bas < prev   
Encoding:
BASIC Source File  |  1999-02-13  |  4.0 KB  |  173 lines

  1.  
  2. FUNCTION valid_count(txt$, l)
  3. ' checks to see if the text has a certain amount of characters
  4. ' (l)
  5.  
  6. ' returns:
  7. '  0 not the same length
  8. '  1 same length - check confirmed
  9.  
  10. IF LEN(txt$) = l THEN
  11.     valid_count = 1
  12. ELSE
  13.     valid_count = 0
  14. END IF
  15.  
  16. END FUNCTION
  17.  
  18. FUNCTION valid_digit(va, chk, bse)
  19. STATIC v$,c$,b$,n,l,v_v,v_c,d
  20. ' creates a check digit for a value with weight bytes chk and
  21. ' base value of bse. Returns the check digit code.
  22.  
  23. ' Note that this code my be more than 1 byte (eg >9) so you
  24. ' might have to convert this down somehow.
  25. ' Also, values of each variable need to be positive. This is
  26. ' checked.
  27.  
  28. ' Returns:
  29. '  -1  Value negative
  30. '  -2  Check digit negative
  31. '  -3  Base value negative
  32. '  -4  Lengths of value and check digit do not match
  33. '        error will occur if check digit or value start with 0
  34. '  Other values check digit (note this may include 0)
  35.  
  36. v$ = STR$(va)
  37. IF LEFT$(v$, 1) = " " THEN
  38.     v$ = RIGHT$(v$, LEN(v$) - 1)
  39. ELSE
  40.     valid_digit = -1: EXIT FUNCTION
  41. END IF
  42.  
  43. c$ = STR$(chk)
  44. IF LEFT$(c$, 1) = " " THEN
  45.     c$ = RIGHT$(c$, LEN(c$) - 1)
  46. ELSE
  47.     valid_digit = -2: EXIT FUNCTION
  48. END IF
  49.  
  50. b$ = STR$(bse)
  51. IF LEFT$(b$, 1) = "-" THEN valid_digit = -3: EXIT FUNCTION
  52.  
  53. IF LEN(v$) <> LEN(c$) THEN
  54.     valid_digit = -4
  55.     EXIT FUNCTION
  56. END IF
  57.  
  58. n = 0
  59. FOR l = 1 TO LEN(v$)
  60.    v_v = VAL(MID$(v$, l, 1))
  61.    v_c = VAL(MID$(c$, l, 1))
  62.    
  63.    n = n + (v_v * v_c)
  64. NEXT l
  65.  
  66. d = n MOD bse
  67. valid_digit = bse - d
  68.  
  69. END FUNCTION
  70.  
  71. FUNCTION valid_format(txt$, code$)
  72. STATIC a,b$,c$,valid
  73.  
  74. ' N=number, L=letter, A=alpha numberic, S=space
  75.  
  76. ' returns:
  77. ' 0 lengths of text and validation code different.
  78. ' 1 confired text string valid.
  79. ' -x. X contains the character position of the character that
  80. '     doesn't apply to the validation code.
  81.  
  82. IF LEN(txt$) <> LEN(code$) THEN valid_format = 0: EXIT FUNCTION
  83.  
  84. FOR a = 1 TO LEN(txt$)
  85.     b$ = MID$(txt$, a, 1)
  86.     c$ = MID$(code$, a, 1)
  87.     IF b$ <> c$ THEN
  88.         ' ie both letters are the same, indicating possible
  89.         ' correctness, ignore letters
  90.     
  91.         valid = 0
  92.         SELECT CASE c$
  93.             CASE "S"
  94.                 IF b$ <> " " THEN valid = -1
  95.             CASE "N"
  96.                 IF ASC(b$) < 48 OR ASC(b$) > 57 THEN valid = -1
  97.             CASE "L"
  98.                 ' capital letter (65,90)
  99.                 IF ASC(b$) < 65 OR ASC(b$) > 90 THEN valid = -1
  100.             CASE "l"
  101.                 ' small letter (97,122)
  102.                 IF ASC(b$) < 97 OR ASC(b$) > 122 THEN valid = -1
  103.             CASE "A"
  104.                 ' both capital and numbers
  105.                 valid = -1
  106.                 IF ASC(b$) >= 48 AND ASC(b$) <= 90 THEN
  107.                     IF ASC(b$) <= 57 OR ASC(b$) >= 65 THEN valid = 1
  108.                 END IF
  109.             CASE "a"
  110.                 ' both small and numbers
  111.                 valid = -1
  112.                 IF ASC(b$) >= 48 AND ASC(b$) <= 122 THEN
  113.                     IF ASC(b$) <= 57 OR ASC(b$) >= 97 THEN valid = 1
  114.                 END IF
  115.             CASE ELSE
  116.                 ' other characters sub-standard
  117.                 valid = -1
  118.         END SELECT
  119.                
  120.     END IF
  121.     
  122.     IF valid = -1 THEN
  123. '       Debug.Print valid, a
  124.         EXIT FOR
  125.     END IF
  126.  
  127. NEXT
  128.  
  129. IF valid = 0 THEN
  130.     valid_format = 1
  131. ELSE
  132.     valid_format = VAL("-" + STR$(a))
  133. END IF
  134.  
  135. END FUNCTION
  136.  
  137.  
  138. FUNCTION valid_presence(txt$)
  139. ' checks to see if the text exists
  140. ' returns:
  141. ' 1 text exists
  142. ' 0 text doesn't exist
  143.  
  144. IF txt$ = "" THEN
  145.     valid_presence = 0
  146. ELSE 
  147.     valid_presence = 1
  148. END IF
  149.  
  150. END FUNCTION
  151.  
  152. FUNCTION valid_range(num, r1, r2)
  153. ' checks to see if a number is valid. Note this is designed
  154. ' for numerate values, text characters are best checked with
  155. ' valid_format.
  156.  
  157. ' r1=start value (inclusive)
  158. ' r2=end value (inclusive)
  159. ' num=number to check
  160.  
  161. ' returns:
  162. '  1 check confimed, number is range
  163. '  0 check failed, number out of range
  164.  
  165. IF (num >= r1) AND (num <= r2) THEN
  166.     valid_range = 1
  167. ELSE
  168.     valid_range = 0
  169. End If
  170.  
  171. END FUNCTION
  172.  
  173.