エラーチェックのためにフラグf
を使用しています。 Fortran(またはおそらくgfortran)は、私が別の検査をしたいときにその値を再割り当てさせません。"名前付き定数に割り当てることができません"(変数の再割り当て)
integer, dimension(:,:), allocatable :: A
integer :: f, n
write (*, *) "Give an integer n > 0. n = "
read (*, IOSTAT=f) n
do while(f /= 0)
print *, "Error with input. Please try again."
read (*, IOSTAT=f) n
end do
write (*, "(a, i5)") "You have entered n = ", n
allocate(A(n), STAT=f)
if (f /= 0)
print *, "Error: not enough memory for A."
end if
注意:コピー貼り付けでスペーシングが崩れている可能性があります。
f
は、整数として宣言されています(パラメータ整数ではありません)。integer :: f
。
私は非常にFortranの初心者ですので、考えられない間違いを犯した可能性が非常に高いです!
'allocate(A(n)) 'と言うとエラーがありますか?それは 'allocate(A(n、n))'であるべきですか? – jamesh625
この奇妙なエラーメッセージはgfortranの既知のバグです:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34325 – agentp