I don't understand the use of the EXTERNAL statement. When I call an
external subroutine from a program unit, it seems like the code
compiles without problems, even if the external subroutine is in
another file. So would I need EXTERNAL? Thanks,
Best Regards,
deltaquattro
EXTERNAL is needed in a variety of situations:
- If you pass a subroutine name to a subroutine and there is no
explicit
interface (as was the case in FORTRAN 77), EXTERNAL makes it clear
to
the compiler a subroutine is meant
- If you use a subroutine name with the same name as an intrinsic
subroutine (Note that compilers can add intrinsics of their own,
so potentially any subroutine that you write yourself could be
in confict with the compiler or the next version of the compiler,
unless you use EXTERNAL consistently).
EXTERNAL is not needed when there can be no confusion over the meaning
of the name - a module procedure or a name appearing in an interface
block.
Regards,
Arjen
Look at the following code:
integer function merge(a,b,c)
integer a, b
logical c
merge = 12
end function merge
program test
external merge
print *, merge (1,2,.true.)
end
a. Compare what happens with and without the "external merge".
b. Now, take the version without "external merge". Run it with a Fortran
77-only compiler (g77 for example). Run it in with a Fortran 90
compiler. Compare the results.
--
FX
Look at the following code:
integer function merge(a,b,c)
integer a, b
logical c
merge = 12
end function merge
program test
external merge
print *, merge (1,2,.true.)
end
a. With a Fortran 90 compiler, compare what happens with and without
Regards,
Mike Metcalf