      subroutine cosset (value, limits, eval)

      character*(*) value
      character*2 limits
      real eval(2)

      logical ok
      character*80 mesage
      character*1 symbol, symend

      lenval = len(value)
      ok = lenval .ge. 3
      if (ok) then
        ix = index (value(2:), '-') + 1
        ok = ix .ne. 1 .and. ix .ne. lenval
        if (ok) then
          symend = value(lenval:lenval)
          call shiftup (symend)
          symbol = value(ix-1:ix-1)
          call shiftup (symbol)
          if (index(limits, symend) .ne. 0 .and.
     2               index(limits, symbol) .eq. 0) then

c allow 32-33N or 33-35S

            lenmes = 0
            call append (value(:ix-1), mesage, lenmes)
            call append (symend, mesage, lenmes)
            call coord (mesage(:lenmes), limits, eval(1), ok)
          else
            call coord (value(:ix-1), limits, eval(1), ok)
          end if
          call coord (value(ix+1:), limits, eval(2), ok)
        end if
      end if
      if (limits .eq. 'SN') then
        kase = 1
        if (eval(1) .gt. eval(2)) then
          temp = eval(1)
          eval(1) = eval(2)
          eval(2) = temp
        end if
      else if (limits .eq. 'WE') then
        kase = 2
        if (eval(1) .gt. eval(2)) print *,
     2        'Note: Search area crosses 180 degree meridian'
      else
        call abort ('Lat/lon suffixes neither ''WE'' nor ''SN''')
      end if
      if (.not.ok) then
        lenmes = 0
        call append ('Unsuitable value for coordinate range: ',
     2               mesage, lenmes)
        call append (value, mesage, lenmes)
        call abort (mesage(:lenmes))
      end if
      return
      end
