Fortran返回声明

Bra*_*don 3 fortran return

我正在尝试在gfortran下编译一些在g77下编译好的代码.问题似乎来自一个回复声明:

ffuncs.f:934.13:

  RETURN E
         1
Run Code Online (Sandbox Code Playgroud)

错误:(1)处的备用RETURN语句需要SCALAR-INTEGER返回说明符

在代码中,任何E被指定为真正的*8:

IMPLICIT REAL*8(A - H,O -Z)

然而,E从未被赋予价值或事实上你直到返回陈述才会看到它.我对Fortran几乎一无所知.在fortran中带有参数的return语句是什么意思?

谢谢.

Car*_*icz 7

FORTRAN(直到Fortran 77,我非常熟悉),RETURN n不用于返回函数值; 相反,它会像其他语言中的异常处理一样:退出到正常代码之外的代码位置.

你通常称这样的SUBROUTINEFUNCTION用标签作为参数,例如

  CALL MYSUB(A, B, C, *998, *999)
...
998 STOP 'Error 1'
998 STOP 'Error 2'
Run Code Online (Sandbox Code Playgroud)

如果在MYSUB中出现问题,那么你做RETURN 1或者RETURN 2(而不是正常的RETURN)你将直接跳到调用例程中的998或999标签.

这就是为什么通常你想在RETURN上有一个整数 - 它不是一个值,而是一个你想要错误退出的索引.

RETURN E听起来对我不对.除非有我不知道的语法,否则以前的编译器应该将其标记为错误.