Fortran 暗黙の型宣言とは

Fortranプログラムでは、最初の方に「implicit none」を呪文のように記述していました。

「implicit none」って何?そもそも、記述がなかったらFortranのプログラムはどうなるの?

そうしたことから自分なりにまとめてみました。

暗黙の型宣言

Fortranでは、変数をどの型として使用するかをプログラムの先頭で宣言しておかなければなりません。

しかし、例外として「暗黙の型宣言」と呼ばれる、明示的に宣言を行わなくても勝手に型宣言する伝統的な約束が残っています。

宣言が行われていない変数は、次のデフォルトに従います。

  • i,j,k,l,m,nで始まる変数は、基本整数型
  • それ以外の英字で始まる変数は、基本実数型

暗黙の型宣言のデメリット

暗黙の型宣言では、よくないことが起こります。

以下のプログラムを見てください。

num1 = 1.5
write(*,*)num1
stop
end
1

num1が、nから始まる変数名であるため整数型として宣言され、1.5ではなく、1として処理されました。

num1を実数型で扱いたい場合、明示的に宣言する必要があります。

このように予想外な結果を招く可能性があります。

また、宣言されていない変数を用いることによって、このような問題も発生します。

real::num1 = 1.5
write(*,*)num1+num2
stop
end

実数型でnum1を宣言しています。

2行目で、num2という宣言していない変数とnum1を足して出力しようとしましょう。

しかし、宣言していないnum2は、0として扱われ、結果、0が出力されました。

なんと恐ろしいことにこのようにエラーメッセージが出力されず、実行されてしまうのです。

num2は、0として処理されます。

こういったミスを防ぐため、「implicit none」を使用します。「implicit none」は、暗黙の型宣言の無効化することができ、先ほどのプログラムを実行すると、エラーで教えてくれます。

まとめ

Fortranは、変数をどの型として使用するかをプログラムの先頭で宣言しておく必要がありますが、暗黙の型宣言という例外があります。

暗黙の型宣言を無効化する際に「implicit none」を記述します。

基本的に「implicit none」を記述することが推奨されています。

今回の内容及び、Fortranに関しては以下の書籍を参考にしています。

Fortran90/95プログラミング [ 富田博之 ]

価格:3,410円
(2021/6/6 02:10時点)
感想(0件)