我正在使用标志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
Run Code Online (Sandbox Code Playgroud)
注意:我认为复制粘贴可能会弄乱我的间距.
f已被宣布为一个整数(而不是作为一个参数整数): integer :: f.
我是Fortran的初学者,所以我很可能犯了一些不可思议的错误!
此错误消息令人困惑,但问题是
if (f /= 0)
print *, "Error: not enough memory for A."
end if
Run Code Online (Sandbox Code Playgroud)
应该
if (f /= 0) then
print *, "Error: not enough memory for A."
end if
Run Code Online (Sandbox Code Playgroud)