今のところ、拡張子が.txtのファイルを1つ開いて、そのファイルでFortranコードを実行しています。ただし、すべての種類の拡張子を持つフォルダー内のすべてのファイルでプログラムを実行したい場合。それ、どうやったら出来るの?
2 に答える
FORTRAN77 に行き詰まっている場合、考えられる解決策の 1 つは、標準入力から入力ファイル名を読み取り、それに応じてそのファイルを開くことです。
character(len=9999) inputFile
read(unit=5,fmt=*)inputFile
open(unit=21,file=trim(inputFile))
次に、シェル スクリプト ループを介してすべてのファイルに対してプログラムを実行します。
for file in *;do
echo $file | myFortranProgram
done
より最新のコンパイラを使用している場合は、Fortran 2003 機能を使用できますGET_COMMAND_ARGUMENT
。
character(len=9999) :: inputFile
call GET_COMMAND_ARGUMENT(1,VALUE=inputFile)
open(unit=21,file=trim(inputFile))
次に、上記のようにループを介してプログラムを実行します。
for file in *;do
./myFortranProgram $file
done
ファイルをループするときは、Fortran プログラムがそれらのファイルで動作し、ディレクトリやその他のファイル拡張子などの例外を処理できること、またはそれに応じてシェルから特定のファイルをループできることを確認する必要があることに注意してください。
私は通常、Unix OS でlsコマンドやfindコマンドを使用して、処理したいファイルのリストを含むファイルを作成します。これにより、エディターでリストを変更することもできます。次に、そのファイルからファイル名を読み取り、それらのファイルを連続して開き、処理し、閉じるように Fortran プログラムを設計します。
パターンに基づいて可能なファイル名を予測できる場合は、INQUIRE ステートメントを使用して、特定の名前のファイルが存在するかどうかをテストできます。これは、可能なすべてのファイル名をループするために使用できます。これは、考えられるファイルの数に応じて、実用的である場合とそうでない場合があります。