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;