PROCEDURE CVRT( alphanum : dstring; { input string to be parsed } var vector : alpha; { returned values vector } var len : integer; { count of # of values returned } low_check, { low range } high_check : integer); { high range } { RETURNS len = -1 for ANY errors EXAMPLE: write( 'Enter values <0..255> ?' ); readln( answer ); CVRT( answer, temp, leng, 0, 255 ); if leng<0 then DoError else Process( temp, leng ); } { GLOBAL: bell : char; } label 2;{quick exit} var error : boolean; int : integer; { integer number returned by IVAL } rng : integer; { Range of alphanumeric string. } { required by IVAL } {$iDELETE.LIB } {$iIVAL.LIB } BEGIN { parse alphanum, check for errors } error := false; len := 0; if length(alphanum)=0 then {EXIT} goto 2; Repeat rng := IVAL( alphanum, int ); if ( rng>0 ) then begin { valid digit entered } if inthigh_check then begin { valid integer but > high range } writeln( bell, int, ' exceeds ', high_check:1, '. Reenter'); error := true end{if int>high_check} else begin { digits in range low_check..high_check } len := len + 1; vector[len] := int end{else}; { compress input string until all gone } delete( alphanum, 1, rng-1 ) end{ if rng > 0 }; if ( rng<0 ) then begin { integer exceeds maxint } writeln( bell, ' overflow'); error := true end Until ( rng<=0 ) or ( error ); if error then len := -1; 2:{quick exit} End{ of CVRT };  error