00100 rem **********************************************************************
00110 rem *** tokens.bas - Tokenize character string
00120 rem *** 2016 David Meyer <[email protected]>  +JMJ
00130 rem **********************************************************************
00140 dim t1$(20)
00150 print "Enter token string";
00160 input t0$
00170 gosub 230
00180 print "Token count:", t1
00190 for i = 1 to t1
00200 print i; ":", t1$(i)
00210 next i
00220 stop
00230 rem **********************************************************************
00240 rem * Tokenize subroutine
00250 rem * IN:
00260 rem *  t0$ - Token string
00270 rem * OUT:
00280 rem *  t1 - Token count
00290 rem *  t1$() - Token array
00300 rem * LOCAL:
00310 rem *  d - Token detected flag
00319 rem * For each character in t0$ ...
00320 rem **********************************************************************
00329 rem * If current character not space ...
00330 t1 = 0
00339 rem * If token not currently detected (beginning or between tokens) ...
00340 d = 0
00349 rem * Set token detected flag
00350 for i = 1 to len(t0$)
00359 rem * Increment token count
00360 if mid$(t0$,i,1) = " " then goto 460
00369 rem * Initialize new token with current character
00370 if d then goto 420
00380 d = 1
00390 rem ELSE (token currently detected)
00399 rem * Append current character to current token
00400 t1$(t1) = mid$(t0$,i,1)
00410 goto 440
00420 rem ELSE (current character is space)
00430 rem ELSE (current character is space)
00440 rem END IF
00450 goto 480
00460 rem ELSE
00469 rem * Unset token detected flag
00470 d = 0
00480 rem END IF
00490 next i
00500 return
00510 end