{string value routine}

FUNCTION stringval (VAR str : string255) : integer;

CONST   zero = 48;

VAR     value : real;
       loc : integer;
       negative : boolean;

begin
       loc := 1;
       negative := false;
       value := 0.0;
       for loc := 1 to length(str) do
               if (str[loc] >= '0') and (str[loc] <= '9') then
                       value := (10.0 * value) + ord(str[loc]) - zero
                       else if (str[loc] = '-') then
                               negative := true;
       if (negative = true) then value := -value;
       if (value < maxint) and (value > -maxint) then
               stringval := trunc(value)
       else
               begin
               writeln (' *** Value of string exceeds integer range ***');
               stringval := 0
               end
end;