-1

ドキュメントによると、「Intel Fortran Compiler 11」でコンパイルすることが知られている Fortran コードをコンパイルしようとしています。しかし、インテル® Fortran Composer XE 2013 for OS X (ここ: http://software.intel.com/en-us/fortran-compilers ) に付属の ifort のバージョンを使用してコードをコンパイルしようとすると、エラーの数。私は、1) 使用されている Fortran の正確な方言と互換性のないコンパイラを使用しているか、2) 必要なライブラリをいくつか含めていないかのいずれかであると考えています。

私は Fortran プログラマーではないので、より経験豊富な人がコードを見て、別のコンパイラーを使用し、特定のライブラリーを含むいくつかのコンパイラー・オプションを設定するという単純な問題であるかどうかを認識できることを願っています。または、何か他のものを完全に見逃している場合。

完全なソース コードは、コンテンツのすぐ上にあります: http://baydeltaoffice.water.ca.gov/modeling/deltamodeling/models/dsm2/dsm2.cfm

最初に、/DSM2_v8_0_6_src/dsm2_v8_0/src/common の groups.f をコンパイルしようとしていますが (これには、他のいくつかのモジュールを最初にコンパイルする必要があります)、最終的な目標は DSM2_v8_0_6_src/dsm2_v8_0/src/ptm をコンパイルすることです/native/fixedData.f とそのすべての依存関係。

私が使用している構文は、次の基本的なパターンに従います。

ifort -c DSM2_v8_0_6_src/dsm2_v8_0/src/common/groups.f

発生しているエラーの種類を把握するために、繰り返し発生するエラーの種類をいくつか示します。

groups.f(225): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: 
( * ) :: , . % + - [ : . ** / // .LT. < .LE. <= .EQ. == ...
write(unit_error,*)"Error in matching text pattern:",trim(pattern)
---------------------------------------------------------------------^

groups.f(265): error #5120: Unterminated character constant
&     "Error in pattern matching. Implementation count does not equal count in NumberMatches"
------^
4

2 に答える 2

0

これが同様の問題を抱えている人を正しい方向に向けるのに役立つかもしれない場合、いくつかの掘り下げを行った後、コンパイラ オプション FixedFormLineLength="fixedLength132" を使用して Visual Studio を使用してコードが最初にコンパイルされたことを確認できました。したがって、コマンド ラインから ifort を使用すると、次の基本的なパターンを使用してコンパイルできます (わかりやすくするために、すべてのインクルード パスなどを省略しています)。

ifort -c -132 DSM2_v8_0_6_src/dsm2_v8_0/src/common/groups.f

方言については、後でプロバイダーから聞いたところ、コードはほとんどが Fortran 77 で書かれており、一部は後で Fortran 90 に修正されました。

于 2013-04-02T23:51:53.460 に答える
0

フォーマットの方法に応じて、F77 または F90 になります。スタック オーバーフローの書式設定では、コードを開始するために 4 つのスペースが必要です。225行目で、6でインデントされているか、まったくインデントされていませんか。6 でインデントされ、265 行が 5 でインデントされている場合は、F77 です。

もう 1 つの問題は、あるマシンから別のマシンに移動するときに先頭のスペースが取り除かれているかどうかです。その場合は、再度挿入する必要があります。

エラーのある最初の回線で、回線終端を確認します。すべての行は、CR LF または LF だけで終わる必要があります。混合がある場合、コンパイラはぐらつきをスローします。

F77 の場合は、.f 拡張子の付いたファイルの名前を .for 拡張子に変更してみてください。ifort はそれらを確実に f77 として認識します。

于 2013-03-31T11:24:22.360 に答える