Unit Token_; INTERFACE const ALPHALEN = 16; ALFALEN = 8; type alfa = string[ALFALEN]; alpha = string[ALPHALEN]; string80 = string[80]; procedure token (var p : integer; s : string; var s1 : alpha); IMPLEMENTATION (**************************) function imin (a, b : integer) : integer; begin if (a < b) then imin := a else imin := b end; (**************************) procedure token (var p : integer; s : string; var s1 : alpha); const SPACE = ' '; var i, j, k, l: integer; intoken, isspace, nonspace : BOOLEAN; Begin (* token *) l := length (s); if (p > l) then begin s1 := ''; EXIT; end; (* find first token starting at p *) i := p; intoken := FALSE; while (i <= l) and (not intoken) do begin if (s[i] = SPACE) then inc (i) else intoken := TRUE; end; (* find first space char starting at i *) j := i; isspace := FALSE; while (j <= l) and intoken do begin if (s[j] <> SPACE) then inc (j) else intoken := FALSE; end; (* find first token starting at j *) k := j; while (k <= l) and (not intoken) do begin if (s[k] = SPACE) then inc (k) else intoken := TRUE; end; p := k; s1 := copy (s, i, imin(ALPHALEN, j - i)); End; (* token *) (**************************) Begin (* TOKEN_ *) End. (* TOKEN_ *)