g95はFortran 2003の機能の一部を実装している.stream入出力が使えるようになったことで,バイナリファイル取り扱いの自由度が飛躍的に高まった. 従来Fortranが扱えるバイナリファイルは,sequentialとdirect.sequentialは,様々な型を混ぜられるが,その名の通り逐 次に読んだり書いたりしなければならない.directは,同じサイズのものが並んでいるものしか扱えない.streamはレコード長なしに,様々な型を 混ぜて読み書きでき,ランダムアクセス.ただし,ファイルの構造は分かっていないといけない. 使い方は簡単で,open文でaccess=”stream”とする.当然reclは指定しない.read文, write文ではrecでなく,posを指定する.現在の次の場所は,inquire(pos=p)を使うとpに得られる.配列の取り扱いと数値計算は Fortranが便利なので,データの読み書きがFortranでできることの意義は大きい. あとはunsignedとビット演算ができれば,Cを使わずにすむ機会が増えそうだ.現在は,餅は餅屋ということでCで書いてリンクして使えばよ い.g95の機能を使ってもいいが,Cのソースを自分でいじれるときは,Cの関数の名前の最後にアンダスコアをつけ,Cの方で参照渡しで変数を受け取るよ うにしておけばよい.