フォルダからすべてのファイルを読み取る必要がありますが、そこにファイルがいくつあるかわかりません。
それらをすべて開く方法は知っていますが、停止するタイミング、つまりすべてのファイルを読み取るタイミングがわからないだけです。
ファイル名を生成する特定のルール (mydata001.dat、mydata002.dat など) がある場合は、ファイル名を生成するたびに、inquire
ステートメントでファイルが存在するかどうかを確認できます。初めて存在しない場合は、停止できます。以下のプログラムは、次のことを示しています。
program proba
implicit none
character(len=20) :: buffer
logical :: exist
integer :: ind
ind = 1
fileloop: do
write(buffer,"(A,I3.3,A)") "mydata", ind, ".dat"
inquire(file=buffer, exist=exist)
if (.not. exist) then
write(*,*) "File '", trim(buffer), "' not found, exiting loop"
exit
end if
write(*,*) "File: '", trim(buffer), "' found."
ind = ind + 1
end do fileloop
end program proba
または、ルールに従ってファイル名を生成できない場合は、ディレクトリ内のファイルのリストを取得できるいくつかのライブラリを使用できます。1 つの可能性は、次の方法で任意のディレクトリ コンテンツに対して実行できる私のmodFileSysライブラリです。
program test_ls
use filesys_module
type(dirdesc) :: dir
character(:), allocatable :: path
call opendir("./", dir)
path = dir%next_filename()
do while (len(path) > 0)
write(*, "(A)") path
path = dir%next_filename()
end do
end program test_ls