{ Copyright (C) 1981 by Bell Laboratories, Inc., and Whitesmiths Ltd. }
{ getone -- get one line number expression }
function getone (var lin : string; var i, num : integer;
		var status : stcode) : stcode;
var
	istart, mul, pnum : integer;
begin
	istart := i;
	num := 0;
	if (getnum(lin, i, num, status) = OK) then 	{ 1st term }
		repeat	{ + or - terms }
			skipbl(lin, i);
			if (lin[i] <> PLUS) and (lin[i] <> MINUS) then
				status := ENDDATA
			else begin
				if (lin[i] = PLUS) then 
					mul := +1
				else
					mul := -1;
				i := i + 1;
				if (getnum(lin, i, pnum, status) = OK) then 
					num := num + mul * pnum;
				if (status = ENDDATA) then 
					status := ERR
			end
		until (status <> OK);
	if (num < 0) or (num > lastln) then 
		status := ERR;
	if (status <> ERR) then begin
		if (i <= istart) then 
			status := ENDDATA
		else
			status := OK
	end;
	getone := status
end;