-1

レガシ コードを更新していて、サブルーチン内で単純な数学関数を使用する必要があります。これを行う方法がわかりません。テストプログラムから呼び出されたときに機能する関数があります。サブルーチンのために別の方法で何をする必要がありますか?

例:

subroutine foo(i,j,k)

i = bar(j,k)

stuff = otherstuff

return 
end

その他の情報: bar は erf 近似です。PGF90 コンパイラを使用しています。私はCからFORTRANに不慣れです。

ありがとう!

4

1 に答える 1

3

基本的に、プログラムからの呼び出しでもサブルーチンからの呼び出しでも違いはありません。宣言なしで、コードは本当にこのように見えますか? これは、すべての変数が暗黙の型を持つことを意味します。名前が in の文字で始まる変数は整数になり、その他はすべて実数になります。これは、関数の戻り値にも当てはまります。bar()あなたが示すコードは、実数 ( ) を整数 ( )に代入しようとしますi

新しいコードを作成する場合は、常にプログラムと手順を で開始してIMPLICIT NONEください。これにより、すべての変数と関数の戻り値の型宣言を明示的に含める必要があり、エラーが大幅に減少します。

于 2011-07-13T11:07:30.060 に答える