是否可以使用变量中的错误代码/消息来停止或中止fortran程序?这似乎不可能与内在STOP:
integer :: status = 1
character(len=3) :: err_msg = "err"
stop status
stop err_msg
Run Code Online (Sandbox Code Playgroud)
两个stop调用都会在编译时抛出语法错误.我错过了什么,或者我是否必须stop 1直接打电话?或者写我自己的包装?
直到Fortran 2003,停止代码可以是标量字符常量或最多5位数的序列.一个标量字符常量意味着别人可以称之为一个字符串,如你"err",但不是你的err_msg.
在Fortran 2008中,停止代码可以是一个表达式,它返回scalar-default-char-constant-expr或scalar-int-constant-expr.如果你有一个Fortran 2008兼容的编译器,那么你可以使用一个参数(例如声明为的东西character(len=3), parameter :: err_msg = "err")作为停止代码
当然,2003和2008标准中引入的功能的实现状态因编译器和编译器以及版本而异.看起来您的编译器版本不会超出Fortran 2003标准.
您的操作系统使用停止代码执行的操作是另一回事.
超越要求F2008 - 不 - 不是变量.在F2008中,停止代码必须是整数或字符常量表达式.变量不是常量 - 依赖于变量值的表达式不是常量表达式.
如果将参数属性添加到声明中status,err_msg那么它们将是[named]常量,并且可以在常量表达式中用作stop或error stop语句的primary.