Fortran: Symbol ‘a’ at (1) has no IMPLICIT type

Fortranを使用しているとき、よく出るエラーメッセージランキング1位であろう、Symbol 'a' at (1) has no IMPLICIT type というエラーメッセージの意味と解決方法を紹介します。

原因

implicit typeとは、暗黙の型とよばれ、宣言をしていない変数を用いた場合、Fortran側が勝手に型を決めて宣言する機能があります。

この暗黙の型宣言は、思いもよらないミスを誘発するため、通常implicit noneとプログラムの先頭に記載することで、暗黙の型宣言を禁止しています。

今回のエラーメッセージは、aという暗黙の型はありませんと言っています。

つまり、aという変数は宣言されていませんよということです。

因みに、implicit noneがない(暗黙の型宣言を禁止していない)場合、aという変数は実数型として処理されます。

解決方法

明示的にエラーメッセージで表示された変数を宣言しましょう。

下記は、代表的な変数を宣言する例です。

文字列型の場合

character(len)::a

lenには、数字で文字列の長さを入れます。

実数型の場合

real::a

整数型の場合

integer::a

まとめ

Symbol 'a' at (1) has no IMPLICIT typeは、変数を宣言していませんよということです。

implicit noneとしているため、発生したエラーメッセージでもあります。