Fortran言語でのバイナリファイル読み書き
Fortran言語では、open文のオプションを指定するとバイナリ形式でファイル入出力できます。
バイナリ出力
program main implicit none integer, dimension(3) :: a = (/1, 2, 3/) integer :: err open(10, file='binary.dat', form='unformatted', status='unknown' * , iostat=err) if(err.ne.0)then write(*,'("Error: cannot open file binary.dat")') stop 1 end if write(10) a close(10) stop end program main
バイナリ入力
program main implicit none integer, dimension(3) :: a integer :: err open(10, file='binary.dat', form='unformatted', status='old' * , iostat=err) if(err.ne.0)then write(0,'("Error: cannot open file binary.dat")') stop 1 end if read(10) a close(10) ! check readed array write(*,*)'a = ',a stop end program main
ちなみに、Fortranのバイナリ形式では、1つのwrite文につき8バイトの制御データもファイルに追加されます。
なので上記の例では、4(ヘッダ)+4(integerデータ長)× 3(配列a要素数)+4(フッタ)= 20byte のファイルサイズになります。
(ヘッダとフッタのデータ長は環境依存かも)
C/C++言語とか他のプログラムと連携する場合はご注意ください。