• ベストアンサー

ループ回数を、保存するファイル名に入れる方法

FORTRANで、ループする毎に異なるファイルにデータを保存するプログラム(ファイル名の中にループ回数入れたい)を組みたいと思っており、自分で調べて、FORTRAN90なら例えば character*32 roop do i=1,100 write(roop,*)i open(1,FILE='file_'//adjustl(trim(roop))//'.dat') write(1,*)data close(1) enddo というようにwrite文で文字型変数に変換し、adjustlとtrimを使って余分な空白を取り除いて、//で結合すれば実現できることはわかったのですがこれと同じ事をFORTRAN77でやりたいと思っています。 困っているのはadjustlとtrimの部分をFORTRAN77で実現するところなのですが、なにかよい方法はありませんでしょうか? どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

index()関数で、roopの何文字目に空白があるか調べて、その手前までを部分文字列で取り出す。

higepen
質問者

お礼

回答ありがとうございます。 試行錯誤の末 教えていただいたとおりに部分文字列による取り出しを 行いなんとか目的のプログラムを書くことが できました。 どうもありがとうございます。

その他の回答 (1)

回答No.1

FORTRAN77にこの機能が有るか判らないのですが READ,WRITEの時に内部ファイルとして文字変数を指定できないでしょうか? 例: CHARACTER X*8 WRITE( X, '(I03)' ) N1

higepen
質問者

お礼

早速ご回答いただきありがとうございます。 内部変数として文字変数を指定してやると 文字列の結合の際に空白ができてしまいます。 例えば  character x*8  N1=100  write(x,'(I3)')N1  open(1,file='file'//x//'.dat') とやって、ファイルをopenすると  file100 .dat というファイルがopenされてしまいます。 これでもファイルとしてつかえなくはないのですが やはりこの空白をどうにかしたいと思っています。

関連するQ&A

専門家に質問してみよう