みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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で実現するところなのですが、なにかよい方法はありませんでしょうか?

どうぞよろしくお願いいたします。

投稿日時 - 2008-01-21 16:03:58

QNo.3700106

暇なときに回答ください

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

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

投稿日時 - 2008-01-21 21:46:38

お礼

回答ありがとうございます。

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

どうもありがとうございます。

投稿日時 - 2008-01-22 14:10:44

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2008-01-21 20:16:16

お礼

早速ご回答いただきありがとうございます。

内部変数として文字変数を指定してやると
文字列の結合の際に空白ができてしまいます。

例えば
 character x*8
 N1=100
 write(x,'(I3)')N1
 open(1,file='file'//x//'.dat')
とやって、ファイルをopenすると
 file100 .dat
というファイルがopenされてしまいます。
これでもファイルとしてつかえなくはないのですが
やはりこの空白をどうにかしたいと思っています。

投稿日時 - 2008-01-21 21:21:01

あなたにオススメの質問