2008年12月3日水曜日

バイナリ

もしかしたら近々Fortran90のバイナリの入出力がいるかもしれないのでメモ

program main
integer :: i
real(8) :: a,b

open(12,file="test_unformat.dat",access="direct",&
form="unformatted",recl=64)
do i=1,10
a=dble(i)
write(12,rec=i) a
end do
close (12)

open(13,file="test_unformat.dat",access="direct",&
form="unformatted",recl=64)
do i=1,10
read(13,rec=i) b
print*,b
end do
close(13)

end

バイナリを扱うときには
openでaccess="direct"が便利(直接探査、recl=で決めたデータ長のデータを扱い、データ番号で指定して自由に読み書きできる)ていうかdirectにした時点でバイナリで書かれてしまうぽいけど。
recl指定しとかないとコンパイルエラー来た。
form="unformatted"もしくはform="binary"
データに互換性を持たせたいときはform="binary"がよいらしい
write,readでどのデータ番号に入出力するかはrec=で決定

0 コメント: