format 文の個数指定部分に変数を使用する

ifort

format(200f10.3)

上記の200の部分を可変にしたいとき,例えばnx個のf10.3としたければ,

format(<nx>f10.3)

のように"<>"で変数を囲む.nxは整数でなければならない.
上記は残念ながら gfortran ではコンパイルできないらしい.

gfortran

write文のフォーマット指定にformat文を使用せず,文字列characterに書き込む.上のやり方よりちょっと面倒.

character(len=64) :: fmt1
integer :: n_foobar

と宣言した上で,

write(fmt1,'(I0)') n_foobar
fmt1 = '(1pe14.5,'//trim(fmt1)//'(",",1pe14.5))'
write(51,fmt1) hogehoge, (foobar(i), i=1,n_foobar)

とすると,文字列 fmt1 は

'(1pe14.5,<n_foobar>(",",1pe14.5))'

となり,上のformat文を使ったのと同じようなことができる.もちろん ifort でもこれは可能だけど,上を使った方が楽.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2023-11-08 (Wed) 08:25:52 (164d)