この簡単なプログラムを考えてみましょう
program main
implicit none
integer :: array(2,3) = transpose(reshape((/1,2,3,4,5,6/),(/ size(array, 2), size(array, 1) /)))
integer i,j
do i=1,2
write(*,*) array(i,:)
end do
end program main
intel fortran コンパイラ (バージョン 13.0.0) でコンパイルすると、次のエラーが発生します。
main.f90(4): エラー #6263: この組み込み関数は定数式では無効です。[転置]
整数 :: array(2,3) = transpose(reshape((/1,2,3,4,5,6/),(/ size(array, 2), size(array, 1) /)))
定数式(?)では転置が使えないようです。定義時に配列を初期化する方法はありますか? 私の問題では、配列が非常に大きいため、手動で転置することはできません。