- ベストアンサー
ループ回数を、保存するファイル名に入れる方法
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で実現するところなのですが、なにかよい方法はありませんでしょうか? どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
index()関数で、roopの何文字目に空白があるか調べて、その手前までを部分文字列で取り出す。
その他の回答 (1)
- Hayashi_Trek
- ベストアンサー率44% (366/818)
FORTRAN77にこの機能が有るか判らないのですが READ,WRITEの時に内部ファイルとして文字変数を指定できないでしょうか? 例: CHARACTER X*8 WRITE( X, '(I03)' ) N1
お礼
早速ご回答いただきありがとうございます。 内部変数として文字変数を指定してやると 文字列の結合の際に空白ができてしまいます。 例えば character x*8 N1=100 write(x,'(I3)')N1 open(1,file='file'//x//'.dat') とやって、ファイルをopenすると file100 .dat というファイルがopenされてしまいます。 これでもファイルとしてつかえなくはないのですが やはりこの空白をどうにかしたいと思っています。
お礼
回答ありがとうございます。 試行錯誤の末 教えていただいたとおりに部分文字列による取り出しを 行いなんとか目的のプログラムを書くことが できました。 どうもありがとうございます。