A
実行時の入力に応じて、割り当て可能な配列をランク 1、2、または 3 にするプログラムを作成しようとしています。A
の後続の操作は似ているため、これを実行したいと思います。また、モジュール内で、モジュール プロシージャを使用したインターフェイスwork
を定義しました。モジュール プロシージャを実行するとA
、目的の結果が得られます。
私が現在やっていることはこれです:
program main
implicit none
integer :: rank,n=10
real*8, allocatable :: A1(:)
real*8, allocatable :: A2(:,:)
read (*,*) rank
if (rank.eq.1) then
allocate (A1(n))
else if (rank.eq.2) then
allocate (A2(n,n))
end if
! operate on the array
if (rank.eq.1) then
call work(A1)
else if (rank.eq.2) then
call work(A2)
end if
end program
何らかの方法で のランクを選択できればA
、if
ステートメントは不要になるため、物事ははるかに簡単になります。多分これは不可能ですが、すべての助けに感謝します。