Fortran コードのコンパイル時に発生するデータ宣言エラーを示す簡単なテスト プログラムを作成しました。コンパイル エラーは、任意のサイズの配列を作成しようとしている行で発生します。C コードでは、これは単純なmalloc
で実現できると思いますが、このタイプの方法論は Fortran では役に立たないかもしれません。
ここで何が問題になっていますか?どうすれば修正できますか? gfortran
でコンパイラを使用しているGNU/Linux
ので、サポートされている言語機能はすべて使用できると思います。
ここに私のテストプログラムがあります:
program test
implicit none
integer num1, num2
print *, 'Starting...'
num1 = 10
num2 = 11
call sub(num1, num2)
print *, 'Done.'
end program
subroutine sub(num1, num2)
integer num1, num2
integer num3
num3 = num1 + num2 - 1
integer A(num3)
do i = 1,num3
A(i) = i
end do
print *, 'Now printing out vector'
do i = 1,num3
print *, A(i)
end do
end subroutine
cmake
簡単なテスト プログラムをコンパイルするために使用するスクリプトを次に示します。
cmake_minimum_required (VERSION 2.6)
project (test Fortran)
add_executable( test
test.f90
) # end
このプログラムをコンパイルすると、次のエラーが表示されます。
/media/RESEARCH/SAS2-version2/test-Q-filter/test-Fcreation/test.f90:20.16:
integer A(num3)
1
Error: Unexpected data declaration statement at (1)
/media/RESEARCH/SAS2-version2/test-Q-filter/test-Fcreation/test.f90:23.10:
A(i) = i
1
Error: Unexpected STATEMENT FUNCTION statement at (1)
make[2]: *** [CMakeFiles/test.dir/test.f90.o] Error 1
make[1]: *** [CMakeFiles/test.dir/all] Error 2
make: *** [all] Error 2