subroutine pctile(x,npts,npct,xpct)

  real x(npts)
  real,allocatable :: tmp(:)

  if(npts.lt.0 .or. npct.lt.0 .or. npct.gt.100) then
     xpct=1.0
     go to 900
  endif
  allocate(tmp(npts))

  tmp=x
  call shell(npts,tmp)
  j=nint(npts*0.01*npct)
  if(j.lt.1) j=1
  if(j.gt.npts) j=npts
  xpct=tmp(j)
  deallocate(tmp)

900 return
end subroutine pctile
