procedure vread(f: string; var r: scalar; var v: vector);
var
  i,n: integer;
  s1,s2,s3,sf: scalar;
  s: longstring;
  t: text;
begin { vread }
  write('(vread ',trim(f)); flush(output);
  reset(t,f);
  readln(t,n);
  if n<vdim then writeln('vread: degree of input vector too small')
  else begin
    for i:=0 to vdim-1 do with v[i] do begin
      readln(t,s);
      srset(s,l);
      if trunc and (l.si<0) then rtowinfty(l);
      readln(t,s);
      srset(s,u);
      if trunc and (u.si>0) then rtowinfty(u);
    end;
    sf:=sone;
    szero(s3);
    for i:=vdim to n do begin
      with s1 do begin
        readln(t,s);
        srset(s,l);
        if trunc and (l.si<0) then rtowinfty(l);
        readln(t,s);
        srset(s,u);
        if trunc and (u.si>0) then rtowinfty(u);
      end;
      sprod(sf,s1,s2);
      sunion(s3,s2,s1);
      s3:=s1;
      sprod(sf,r,s1);
      sf:=s1;
      ismult(i+1,sf);
    end;   
    sabs0(s3,v[vdim]);
  end;
  write(')'); flush(output);
end { vread };

