2012-02-15 4 views
3

F77で書かれた古いソースコードをF90に変更しています。私は、どの変数がインテント(イン)、インテント(アウト)およびインテント(インアウト)であるかを分類するために苦痛を受けます。FORTRANでインテント(イン)、インテント(アウト)、インテント(インアウト)を並べ替える方法

ガイドラインやヒントはありますか?

ご意見やご提案をいただければ幸いです。

マイケル

答えて

5

意図(INOUT)は常に動作します(参照しますFortran intent(inout) versus omitting intent)、プログラマーとコンパイラーに情報を提供しません。インテント属性が必要なので、徐々にコードを改善することもできません。変数が代入文のRHSにのみ表示される場合は、インテント(in)が最適です。 LHSだけの場合は、インテント(アウト)。変数が1つ以上のプロシージャ呼び出しの引数として使用されている場合は、そのプロシージャの使用状況をトレースする必要があるため、より複雑になります。あなたが最低レベルの手順から始め、あなたのやり方を工夫すれば、最も簡単です。ほとんどのコンパイラは間違いを警告します(例えば、インテント(in))引数に割り当てます。コンパイラがプロシージャ間で一貫性をチェックするためには、呼び出された各プロシージャのインタフェースが呼び出し側に明示されている必要があります。インターフェイスを知らせる最も簡単な方法は、プロシージャを1つまたは複数のモジュールに配置し、そのモジュールを「使用する」ことです。インターフェイスは、同じモジュール内のプロシージャ間で明示的です。

3

アラン・ミラーは、整形式F77のコードを自動的にこのの世話をするto_f90.f90と呼ばれるプログラムを書きました。で彼のウェブサイトのミラーがあります:

http://jblevins.org/mirror/amiller/

特定のルーチンは次の場所にあります。実引数が可変である場合

http://jblevins.org/mirror/amiller/to_f90.f90

+1

+1;このツールが存在するかどうかはわかりませんでした。それは私にいくつかのものを見回すよう促しました.Polyhedron Softwareのオンラインツール、http://www.polyhedron.com/plusfortonline.phpもあります。 –

1

前述したように、意図(inout)は常に機能するはずです。

変数Xの意図(イン)とインテント(アウト)に対して、サブルーチンの "X ="と "X ="の検索(CTRL + Fなど)を行うことをお勧めします。このようにして、このサブルーチンの実行中に変数が変更されているかどうかをチェックすることができます。そうでない場合:意図(イン)。サブ関数または別のルーチンへの呼び出しで変数が変更されても、これは常に正しいです。したがって、まず、関数またはルーチンへの呼び出しが、翻訳しているサブルーチンで実行されているかどうかをチェックすることです。

関連する問題