09/05/14 23:51:43
>>550>>551
って~ことは、呼び出し側でinterfaceを用意して、packで一次元化するということか。
------------------------------------------
program main
integer :: arr(3,4,5)
integer :: i,j,k
interface
subroutine check(arr)
integer,intent(in) :: arr(:,:,:)
end subroutine check
end interface
省略
call check(arr)
end program main
subroutine check(arr)
integer,intent(in) :: arr(:,:,:)
integer,allocatable :: tmp(:)
integer :: i
tmp=pack(arr,mask=(arr .ne. 0))
do i=lbound(tmp,1),ubound(tmp,1)
print *,tmp(i)
enddo
end subroutine check
------------------------------------------
これでできました。ありがとうございます。
余談だけど、gfortranでは期待通りに処理されるのに、intel fortranだとダメみたい。
pack()の返り値が壊れてしまうっぽい。バグか?