program OW_3dslant
! 3D-linear Radon transform

  use sep
  use OW_type
  use OW_sltpar
  use OW_3dsltrt1
  use OW_3dsltrt2

  implicit none

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

  call sep_init()
  call sep_begin_prog()
  call owsltpar()

  if (sog%shy%n == 1) then
     allocate(in(sog%z%n*sog%shx%n*sog%xm%n))
     allocate(out(sog%z%n*sog%shx%n*sog%xm%n))
     do iy=1, sog%ym%n
        call sreed("in",in,4*sog%z%n*sog%shx%n*sog%xm%n)
        write(0,*) "Inline = ",iy, " from ", sog%ym%n
        stat = ow3dslantrt(.true.,.false.,out,in)
        call srite("out",out,4*sog%z%n*sog%shx%n*sog%xm%n)
     end do
  else
     allocate(in(sog%z%n*sog%shx%n*sog%xm%n*sog%shy%n*sog%ym%n))
     allocate(out(sog%z%n*sog%shx%n*sog%xm%n*sog%shy%n*sog%ym%n))
     call sreed("in",in,4*sog%z%n*sog%shx%n*sog%xm%n*sog%shy%n*sog%ym%n)
     stat = ow3dslantrt2(.true.,.false.,out,in)
     call srite("out",out,4*sog%z%n*sog%shx%n*sog%xm%n*sog%shy%n*sog%ym%n)
  end if
  deallocate(in,out)
  call sep_end_prog()
end program 
