program OW_3dslant
! 3D-linear Radon transform

  use sep
  use OW_type
  use OW_sltpar
  use OW_3dsltrt

  implicit none

  real, allocatable, dimension (:)		:: in,out
  real, allocatable, dimension (:,:)              :: dips
  integer					:: stat

  call sep_init()
  call sep_begin_prog()
  call owsltpar()
  allocate(in(sog%z%n*sog%sh%n*sog%xm%n))
  allocate(out(sog%z%n*sog%sh%n*sog%xm%n))
  call sreed("in",in,4*sog%z%n*sog%sh%n*sog%xm%n)
  if (rot) then
write(0,*) "rot"
     if (exist_file("dips")) then
        allocate(dips(sog%z%n,sog%xm%n))
        call sreed("dips",dips,4*sog%z%n*sog%xm%n)
     end if
     if (upshft) then
        stat = ow3dslantrt_init(dips)
        stat = ow3dslantrt(.true.,.false.,out,in)
        stat = ow3dslantrt_close()
        call srite("out",out,4*sog%z%n*sog%sh%n*sog%xm%n)
     else
write(0,*) "no upshft"
        stat = ow3dslantrt(.true.,.false.,out,in)
        call srite("out",out,4*sog%z%n*sog%sh%n*sog%xm%n)
     end if
     if (exist_file("dips")) deallocate(dips)
  end if

  deallocate(in,out)
  call sep_end_prog()
end program 
