- 79 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:15:50 ]
- >>78
POINTERに直すだけなら簡単。 ただALLOCATABLEに比べて自由度が大きい分最適化やチェックに支障が出るらし。 MODULE m_test CONTAINS subroutine alloc4i(imem, msize) integer, POINTER :: imem(:) integer, INTENT(IN) :: msize if ( .not. ASSOCIATED(imem) ) then allocate( imem(msize), stat=ier ) if (ier .ne. 0) stop else stop endif return end subroutine alloc4i END MODULE m_test program mtest USE m_test integer, POINTER :: imem1(:), imem2(:) msize = 100*100 * 200 call alloc4i(imem1, msize) call alloc4i(imem2, msize) PRINT *, SIZE(imem1), SIZE(imem2) stop end ASSOCIATED だけでいいのか今一自信なし。
|

|