2012-05-09 12 views
2

私は浄化している古いFortranコードを持っています。現時点では、各プロシージャのローカル変数ではない変数のリストを取得したいと考えています。コードはグローバル変数を使用します。できるだけ多くのグローバル変数を参照したいと思います。手作業で行うのは苦しいので、これを行うためのコンパイラオプションを探していましたが、まだ何も見つかりませんでした。すべてのポインタ?プロシージャで使用されるグローバル変数/モジュール変数についての警告?

おかげで、 アンヘル・デ・ビセンテ

答えて

2

私はあなたの痛みを感じます。残念なことに、私が提供しなければならないことはほぼすべてですが、私が最近使用したFortranコンパイラ(それらのほとんどすべてを過去6年以内にすべて)で使用するためのオプションは見つかりませんでした。

Understand for FortranまたはFortran Lintのようなツールを使用すると費用がかかりますが、有料で評価版をダウンロードすることができます。そのようなツールが存在しない場合には

、一般的にI:私は、一般的にプログラムのスコープ内で宣言または共通ブロックの周り渡されたものを意味し、グローバルであることを期待

  1. コメントアウト変数
  2. スラップIMPLICIT NONEとにかくあなたはおそらくやっているでしょう。
  3. 宣言されていない変数をローカルスコープ内に配置するようにコンパイラを取得します。
+0

こんにちは、ありがとう。最終的に私は多くの選択肢がないと思う...今はEmacsを使ってファイルのある領域(私の場合は手続き)のみをコンパイルしているので、すべてのホストまたは使用のためにエラーが出るだろう私はそれを行うもっと簡単な方法があると思っていました。ありがとう –

2

最初に "暗黙のnone"または同等のコンパイラオプションを使用します。うまくいけば、宣言されていない変数があまり多くありません。ほとんどのコンパイラには、すべてのプロシージャに "暗黙のnone"を追加するオプションがあります。宣言されていない変数がない場合は、次のステップに進み、それ以外の場合は宣言します。あまりにも多くの宣言されていない変数がある場合、あなたは不運です。次に、特定の手順で共通ブロックをコメントアウトし、共通ブロックを引っ張っている行とモジュール使用ステートメントを含めます。どの変数が宣言されていないかを見て、 "暗黙的なnone"を介して警告を生成する - 共通ブロックとモジュールのどの変数がそのプロシージャで実際に使用されているかを明らかにする。

型宣言と変数宣言の両方を含むモジュールを使用している場合、これは機能しない可能性があります。型宣言と宣言を別々のモジュールに入れて、変数宣言を持つモジュールだけをコメント化できるようにする必要があります。しかし、それはグローバル変数を乱用する古いコードではそうではありません。

関連する問題