我的代码是这样的,我正在考虑使用stop
语句。在特定的do循环中,如果发现条件为true,则程序应该写入错误消息并返回调用主程序,跳过下面的所有循环。
subroutine abc
.....statements, loops, etc.
do !fifth do loop
...
...
if (condition is true) then
write error message and
completely get out of subroutine to caller program
end if
..more if statements
....
end do
expressions
....
more do loops
end subroutine abc
GNU fortran编译器根据https://gcc.gnu.org/onlinedocs/gfortran/Fortran-2008-status.html支持stop
和error stop
语句。
然而,Chapman的书(fortran 95/2003 for science and engineers,3rd ed。,pp 323)强烈建议不要在任何子程序中使用STOP
语句。
另一方面,使用a标志来检查剩余的每个do循环的执行可能更糟。如果将错误标志传递给调用程序并允许后续执行代码,那将毫无意义。
更新:如果代码有并行部分怎么办? 有什么建议吗?