      subroutine dcsevu(x, y, nx, sc, ic, u, ds, m1, dds, m2, ierr)
C...Translated by Pacific-Sierra Research VAST-90 2.06G2  10:50:51  10/ 1/01  
C...Switches: -p4 -yb
      use kind_spec

      implicit none
C-----------------------------------------------
C   D u m m y   A r g u m e n t s
C-----------------------------------------------
      integer nx, ic, m1, m2, ierr
      real(kind=dp), dimension(nx) :: x, y
      real(kind=dp), dimension(ic,3) :: sc
      real(kind=dp), dimension(m1) :: u, ds
      real(kind=dp), dimension(m2) :: dds
C-----------------------------------------------
C   L o c a l   V a r i a b l e s
C-----------------------------------------------
      integer :: i, j, mmax
      real(kind=dp) :: d
      character :: isub*6 = 'dcsevu'
C-----------------------------------------------
c
c--Validate that the desired points are within range.
c
      ierr = 0
      i = 1
      do while(ierr==0 .and. i<=m1)
         if (u(i) < x(1)) then
            ierr = 33
         else if (u(i) > x(nx)) then
            ierr = 34
         else
            i = i + 1
         endif
      end do
      if (ierr /= 0) go to 9000
      mmax = max(m1,m2)
      do i = 1, mmax
c
c--find j such that x(j) <= u(i) < x(j + 1).
c
         j = 1
         do while(j<nx .and. u(i)>x(j+1))
            j = j + 1
         end do
         if (u(i) > x(nx-1)) j = nx - 1
         d = u(i) - x(j)                    ! offset from lower boundary
         if (i <= m1) ds(i) = (3.0*sc(j,3)*d+2.0*sc(j,2))*d + sc(j,1)
         if (i <= m2) dds(i) = 6.0*sc(j,3)*d + 2.0*sc(j,2)
      end do
      go to 9990
c
c--Error exit.
c
 9000 continue
      call uertst (ierr, isub)
c
c--Normal exit.
c
 9990 continue
      return 
      end subroutine dcsevu
