ファイルの入出力

ファイルの入出力の形式

フォートランでの入出力は、下のような形式がある。
                                                     例
  1a 直接(direct)アクセス   書式なし           GrADSとのやり取り
  1b                  書式あり           ほとんど使うこと無し
  2  逐次(sequential)アクセス 書式なし           write(8)           A
  3a                    書式あり  お任せ   write(8,*)         A
  3b                          陽に指定 write(8,'(F10.2)') A
  1. 直接(direct)アクセスは、ファイルの先頭から読み書きを行う必要がなく、途中から読んだり出来るが、read/write文で入出力させる配列や変数の長さはopen文で予め指定したものに限られる。
    というので、データベースなどの用途に用いられ、GrADSに読ませるファイルへ出力させる以外、ほとんど使う必要はない。
  2. 書式なしread/write文は、メモリーで記憶されたままを出力されるので、高速な入出力が行われ、ファイルの読み書きで精度が落ちたりはしない利点がある。
    また、ファイルサイズも必要以上に大きくならない。但し、例えば単精度/倍精度実数で書いたものは単精度/倍精度実数で読まなければならない。
    メモリーでの記憶形式は、機種依存性があり、PC、Sunと計算機センターの機種などでのやり取りには工夫を要する(big/little endian問題。コンパイラーのオプションで対応出来ることもある)。
  3. 書式ありread/write文は、人間が読める形でテキストファイルで入出力されるの で、ちゃんと入出力できたかを確認するのが容易であるが、精度が落ちたり、ファ イルサイズが大きくなり、処理に時間がかかる。文字コードの問題以外の機種依存 性はない。結果を簡単に見たい場合などは、お任せの書式ありWrite(*,*)を用いる のが便利だが、大量に出力させた場合などは、陽に書式を指定して見やすくした方が よい。

ファイルの入出力のサンプルプログラム

書き出しプログラム (ex110.f)

読み込みプログラム (ex111.f)

上のプログラムでは、 となっているが、同じ形式でも、(a)と(b)、(c)と(d)は、違うファイルができてしまう。 これは、一つのwrite文に対して、書式ありは最後に改行コードが、書式なしは、最初に8バイトで何バイト出力するか情報が付加されるためである。 (e)と(f)は、同じファイルができる。
2002年度 fortran 演習
担当教官:山中康裕(galapen@ees.hokudai.ac.jp)・豊田威信(toyota@lowtem.hokudai.ac.jp)