多くのサブルーチンを含む古いコードがあり、それらはすべて Fortran 77 です。Fortran 90/95 コードに従って更新する必要があるサブルーチンを 1 つ更新したいと思います。それを 77 に変換する方法はありますか?
2 に答える
一部のコンパイラには、固定形式と自由形式の Fortran ファイルを切り替えることができる宣言があります。
他の人が指摘しているように、下位互換性があるはずなので、可能な限り最新のコンパイラを使用してください。ファイルは固定形式または自由形式で、ファイル末尾を使用する.f
か.f90
、それらを分離します。
絶対に必要な場合、インテルではディレクティブが!DIR$ FREEFORM
あり!DIR$ NOFREEFORM
、行またはセクションごとにファイルの読み取りを制御する必要がある場合。これは、固定形式で書かれた古いインクルード ファイルを「使用する必要がある」が、コード内で自由形式の Fortran を使用したい場合に役立ちます。
module important_new_code
<lots of use-statements>
!DIR$ NOFREEFORM
include 'old_style_includes.incl'
!DIR$ FREEFORM
<rest of module in modern fortran>
end module
ただし、これによりコードがコンパイラ固有になり、一般的にはお勧めできません。最善の方法は、常に問題を適切に修正することです。
あなたが何をしたいのか完全にはわかりません。しかし、コメントで指摘されているように、Fortran 90/95 と Fortran 77 を混在させることができます (もちろん、同じファイルには入れません)。ifort を使用すると、たとえば、file_1.f90 という名前のメイン プログラムを含む f90 ファイルと、file_2.f77 という名前のメイン ファイルで呼び出されるいくつかのサブルーチンを含む別の f77 ファイルを作成できます。それらをまとめてコンパイルするには:
ifort -c file_1.f90
ifort -c file_2.f77
ifort file_1.o file_2.o -o file_1
最初の 2 行でオブジェクト ファイル (*.o) を作成し、これらをリンクしてターゲット ファイル (ここでは file_1) を作成します。さらにライブラリが必要な場合は、最後の行で通常の方法でそれらをリンクできます。これがお役に立てば幸いです。