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
