Fortranの文字列操作色々と

ある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