Subroutines with alternate returns (e.g. SUBROUTINE X(*) and
CALL X(*50)) are implemented by g77 as functions returning
the C int
type.
The actual alternate-return arguments are omitted from the calling sequence.
Instead, the caller uses
the return value to do a rough equivalent of the Fortran
computed-GOTO
statement, as in GOTO (50), X() in the
example above (where X is quietly declared as an INTEGER(KIND=1)
function), and the callee just returns whatever integer
is specified in the RETURN
statement for the subroutine
For example, RETURN 1 is implemented as X = 1 followed
by RETURN
in C, and RETURN by itself is X = 0 and RETURN).