我正在使用标志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
NB:我认为复制粘贴可能会弄乱我的空间。
f
已被宣布为一个整数(而不是作为一个参数整数): integer :: f
。
我是Fortran的初学者,所以很可能我犯了一些无法想象的错误!
此错误消息令人困惑,但问题是
if (f /= 0)
print *, "Error: not enough memory for A."
end if
应该
if (f /= 0) then
print *, "Error: not enough memory for A."
end if
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句