外部サブプログラムというのが何を指しているのか不明だが、たぶんMODULEの中に入っていない野良ルーチンのことだと思う。
これは分割コンパイル時の引数のチェックがなされないのでやめたほうがいい。
メインのPROGRAM中のCONTAINS中のサブプログラムもやめたほうがいい。
それはメインプログラムのローカル変数(DOLOOPのインデックスとか中間変数とか)もグローバルにサブプログラムに共有されて
しまうから。MUDULEの場合、まさかi,jとかtmpとかを共有変数にはしまい。

やや上級者向けだが、最近こういう本が出ている。 Modern Fortran: Style and Usage Norman S. Clerman、 Walter Spector
初級向けは、今は廃れてしまったが、いわゆる Essential Fortran / F と呼ばれるFortran90から過去互換性を捨てた教育用Fortranの
教則本が良かった。Essential Fortran 90 & 95 Loren P. Meissner
買わずともネットで関連の文書が読めた気がするのでその辺を見て見てはいかがか。

わしは大昔にLaheyのELF90を買ってそのマニュアル、(今はPDFしかないが昔は紙版がついてきたので)、それだけ見るようにして勉強した。
ただこれはF90でF95水準ですら無いので今はややおすすめできない。