Fortran子程序参数列表中的星号*符号的含义是什么?
*表示子程序中的参数是什么意思?这是否意味着一个标签,它返回到主程序?它是否与return
,return 1
,ERR
或ERROR
?我不知道为什么我们有这些,但我认为星号与他们有关。Fortran子程序参数列表中的星号*符号的含义是什么?
!>Start the creation of boundary conditions for the equation set.
SUBROUTINE BOUNDARY_CONDITIONS_CREATE_START(SOLVER_EQUATIONS,BOUNDARY_CONDITIONS,ERR,ERROR,*)
!Argument variables
INTEGER(INTG), INTENT(OUT) :: ERR !<The error code
TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !<The error string
!Local Variables
TYPE(VARYING_STRING) :: LOCAL_ERROR
ENTERS("BOUNDARY_CONDITIONS_CREATE_START",ERR,ERROR,*999)
IF(ASSOCIATED(BOUNDARY_CONDITIONS)) THEN
CALL FlagError("Boundary conditions is already associated.",ERR,ERROR,*999)
ELSE
IF(ASSOCIATED(SOLVER_EQUATIONS%SOLVER_MAPPING)) THEN
!Initialise the boundary conditions
CALL BOUNDARY_CONDITIONS_INITIALISE(SOLVER_EQUATIONS,ERR,ERROR,*999)
ELSE
LOCAL_ERROR="Solver equations solver mapping is not associated."
CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999)
ENDIF
ENDIF
ENDIF
EXITS("BOUNDARY_CONDITIONS_CREATE_START")
RETURN
999 ERRORSEXITS("BOUNDARY_CONDITIONS_CREATE_START",ERR,ERROR)
RETURN 1
END SUBROUTINE BOUNDARY_CONDITIONS_CREATE_START
这是从功能的备用返回的标签。这是有关标签使用,而不是
return
返回从中子程序被调用的位置
return 1
当函数最终会返回。
对于新代码,强烈建议不要使用此功能,尽管我已经看到如何使用此代码来处理某种异常。
非常相关的问题,几乎是重复的(要求return语句代替):Fortran return statement
它实际上是一个FORTRAN 66功能。自从Fortran 90以来,它已被标记为“过时”,但在Fortran 2015中保持标准。(委员会更不愿意实际删除功能,特别是因为供应商抱怨他们仍需要支持它们,删除意味着存在没有文字说明它们如何与其他功能配合使用。) –
如果这是可更改的代码,请尽快重构备用返回。这是F66的“用火扼杀它”的特性之一,即使在旧代码中也很少出现;它不应该在新的代码中。最好返回一个由调用例程处理的状态码。这是一个微不足道的额外代码,但它远远更清晰。 – arclight
这是有关...? https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vnb3/index.html – roygvib
请对所有Fortran问题使用[tag:fortran]以获得更多关注。比较标签追随者的数量[tag:fortran]和[tag:fortran95]。你的问题不是版本特定的。 –
我们可以尝试关闭它,我可以在那里移动我的答案。但是我不能再打开这个标签,因为我不得不编辑标签。很多人都提到了这个问题,但他们没有修复标签。 –