fortran66のブログ

fortran について書きます。

open 文に於ける newunit

Fortran では外部ファイルの unit 番号の決定が問題になります。そもそも unit 番号が何番まで使えるのか、何番がシステムに予約されているのかすら、規格に定められていないためによくわかりません。
Fortran2008 では、その問題を解決するために、open 文で自動的に空いている unit 番号を割り振ってくれる機能が導入されました。
ここでは、newunit を用いた場合、何番のファイルが割り当てられるのかを見てみることにします。結果を見てみると、Intel Visual Fortran では、-129(-2^7-1) から -16384(-2^14) までが循環的に順に割り当てられるようです。

実行結果

ソース・プログラム

program main   
  implicit none
  integer :: i, m
  do i = 1, 2**14
    open(newunit = m, file = 'test.txt', status = 'unknown')
    if (i > 2**14 - 2**7 - 10) print *, i, m
    write(m, *) ' test', i, m
    close(m)
  end do
  stop
end program main