Declaring it external in the program/subroutine that is using the module results in <br><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">main.F:65.43:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">      external gridtest </span><span style="font-family: courier new,monospace;">     </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Error: Cannot change attributes of USE-associated symbol at (1)</span><br>
<br>Thanks, Leo<br><br><br><div class="gmail_quote">2010/9/30 Stephan Kramer <span dir="ltr">&lt;<a href="mailto:s.kramer@imperial.ac.uk">s.kramer@imperial.ac.uk</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5">On 30/09/10 15:31, Leo van Kampenhout wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi all,<br>
<br>
since it is mandatory to declare all subroutines as &quot;external&quot; in<br>
Fortran, is it possible for Modules to have subroutines? I&#39;m unable to<br>
declare the subroutine external inside the module itself, nor in the<br>
program which is using it. Not declaring it external at all results in<br>
the following compilation error:<br>
<br>
/net/users/csg/csg4035/master/workdir/src/main.F:97: undefined reference<br>
to `__grid_MOD_readgrid&#39;<br>
<br>
(the module is here is named &quot;grid&quot;, the subroutine &quot;readgrid&quot; )<br>
<br>
Thanks,<br>
Leo<br>
<br>
</blockquote>
<br></div></div>
If you put your subroutine in a module, it should not be declared<br>
external. You can directly call it from within the module itself. When<br>
calling it inside any other module/program you need to add &quot;use grid&quot; before<br>
the &quot;implicit none&quot;.<br>
<br>
Putting subroutines inside a module is highly recommended as it automatically<br>
provides an explicit interface so that the compiler can check the arguments in<br>
your subroutine call.<br>
<br>
Cheers<br><font color="#888888">
Stephan<br>
</font></blockquote></div><br>