Declaring it external in the program/subroutine that is using the module results in

main.F:65.43:
      external gridtest     
Error: Cannot change attributes of USE-associated symbol at (1)

Thanks, Leo


2010/9/30 Stephan Kramer <s.kramer@imperial.ac.uk>
On 30/09/10 15:31, Leo van Kampenhout wrote:
Hi all,

since it is mandatory to declare all subroutines as "external" in
Fortran, is it possible for Modules to have subroutines? I'm unable to
declare the subroutine external inside the module itself, nor in the
program which is using it. Not declaring it external at all results in
the following compilation error:

/net/users/csg/csg4035/master/workdir/src/main.F:97: undefined reference
to `__grid_MOD_readgrid'

(the module is here is named "grid", the subroutine "readgrid" )

Thanks,
Leo


If you put your subroutine in a module, it should not be declared
external. You can directly call it from within the module itself. When
calling it inside any other module/program you need to add "use grid" before
the "implicit none".

Putting subroutines inside a module is highly recommended as it automatically
provides an explicit interface so that the compiler can check the arguments in
your subroutine call.

Cheers
Stephan