前へ 上へ 次へ
前へ 上へ 次へ
21 newunitの使い方(装置番号自動取得機能)
Fortran 2008 以降では、ファイル装置番号を自動的に取得するための `newunit` キーワードが導入されました。
`newunit` キーワードは `open` 文の中で使用され、他の論理装置番号と重ならない新しい特別な装置番号を自動的に割り当てる事が可能となりました。
基本的な書式は以下の通りです:
open(newunit=変数名, file='ファイル名', ...)もしくは
open(newunit=変数名, status='scratch', ...)ここで:
- `変数名`:割り当てられた装置番号を受け取るための整数変数。この変数は、後続の操作(読み込み、書き込み、閉じる等)で使用します。(装置番号は多くの環境で負の値となる)
- `file="ファイル名"`:開く予定のファイルの名前。`status='scratch'`を使用する場合は必要ありません。
- [その他のオプション]:form=, access=, action=, position=等
newunitを用いる利点は以下の通りです。
- 装置番号を明示的に管理する必要がないため、コードがシンプルになります。
- 無効な装置番号やすでに使用されている装置番号を指定するリスクを減少させます。
以下に `newunit` を使用してテキストファイルを開き、書き込み、閉じるコード例を示します。
[ newunit.f90 ] - newunitによる装置番号自動取得を示すサンプル
program newunit_example
implicit none
integer :: unit_number, temp_unit
character(len=50) :: text
! Regular file
open(newunit=unit_number, file='testfile.txt', action='write')
write(unit_number, *) 'Hello Fortran!'
close(unit_number)
! Scratch file
open(newunit=temp_unit, status='scratch', action='readwrite')
write(temp_unit, '(F8.4)') 1.23
rewind(temp_unit)
read(temp_unit, '(A)') text
print *, 'Read from scratch file:', trim(text)
close(temp_unit)
end program newunit_example
実行例: Read from scratch file: 1.2300
前へ 上へ 次へ
