配列の配列を作りたいのですが、allocatable 属性ではうまくゆかないようで、pointer を使わないといけないようです。pointer を使ったら負けのような気もしますが、負けるが勝ちということで・・・
class(*)の万能 pointer を使いところですが、debugがめんどくさいので、とりあえず露わな型でゆきます。class(*) での rank の扱いもまだよくわかりません。マニュアルを読まなくては・・・
ソース
module m_test implicit none type :: t_a integer, pointer :: m(:) end type t_a contains function ilist(n) integer, intent(in) :: n integer, pointer :: ilist(:) allocate( ilist(n + 1) ) ilist = [0:n] return end function ilist end module m_test program test use m_test integer, parameter :: n = 20 type (t_a) :: aa(n) integer :: i do i = 1, n aa(i)%m => ilist(i) end do do i = 1, n print '(25i3)', aa(i)%m deallocate(aa(i)%m) end do stop end program test