あるdoループの中で一階ずつファイルを出力したいときのあれ。例えば、名前の違うファイルを作るとか。
ので、一階ループが回るごとに新しいファイル名を作るのとか。
整数を文字列に変換
ある整数nを文字列配列numに変換する方法。write分で、numに書き込むイメージ。
n = 3 write (num, 0001) n 0001 format (I3)
みたいな感じ。
format文
writeとかで、出力するときの形式を指定する方法。
write (*, 9999) U, V, W, X, Y, Z 9999 format (f5.3, 2x, f5.3, 2x, f5.3, 2x, f5.3, 2x, f5.3, 2x, f5.3, 2x)
とか。で、f5.3は浮動小数点型で、有効数字が3桁とかだった気がする。2xは空白文字を2つみたいなの。C言語のように書きたい場合は、
write (*, f5.3, 2x, f5.3, 2x, f5.3, 2x, f5.3, 2x, f5.3, 2x, f5.3, 2x) U, V, W, X, Y, Z
みたいな感じ。
これが鬱陶しくて、同じ形式のしか出てこないときは、
write (*, 6(f5.3, 2x)) U, V, W, X, Y, Z
とかでおk。
文字列の結合
//げつなげられるよ。
結局以上のをまとめると
こんな感じになります。あんまりFortranらしくない書き方である。
program hoge implicit none character (len = 13) :: hoge character (len = 3) :: num real :: U (0:99) integer :: i, j, k write (num, 0001) k 0001 format (I3) hoge = "hoge" // num // ".dat" open (830, file = hoge) write (830, 430) U (i) , i = 0, 99 close (830) 430 format (f5.3) end program hoge