【fortran】ファイル読み込みのコツ ~open, readとその先~

2020 3/10
【fortran】ファイル読み込みのコツ ~open, readとその先~
目次

概要

fortranで外部テキストファイルに書かれている行列データを読み込むときには、下記のようにすると、読み取れるし、最終行を検知できる。

read (10, *, iostat=ios) x


背景

物理、天文学という古くからある分野に関わっていると、fortranが第一プログラミング言語という人も多い。

私もその中の一人で、社会に出てみると、まるで古典文学を書く人という扱いを同僚からうける。

しかし、fortranはまだ大活躍中の言語であり、スーパーコンピュータでの配列計算にはよく使われる言語である。

今回はそんな言語の基本中の基本であるファイル読み込みの仕方を記す。


課題

とにかくプログラム外部にあるテキストファイルの中身を読みたい。

読み込んだ値をプログラム内の計算に使いたい。

fortranの場合、読み込んだファイルの最後を検出しないとエラーがでる。

なので、ファイルの最後になったら、ちゃんと正しく終了する。


解決法

下記のようなテキストファイルdata.txtを読み込みたいとする。

<data.txt>

上記の例では4行であるが、実際には何行あるか分からないとする。

これを読み込んで真ん中の列の総和を計算するコードを例にして説明する。

<fortran_sum.f90>

コード内の「&lt;」は「<」と置き換えてください。

テキストファイルの読み出しは、基本的にはopenして、read分で一行ずつ読み込んでいく。

openしたときの番号(上記では10)を装置番号といって、read時にこれを記載することで、読み込みの対象を指定する。

read分のiostat=iosの部分でiosにそのときの読み出しがどうだったかが格納される。

ファイル終了という場合には、iosには-1が格納されるので、その次の行の判断でループを抜けることになる。


スポンサーリンク

応用

read文の変数を配列にすることもできる。

読み取る対象がたくさんある時には、read文の変数を配列にすると便利。

下記の場合なら10個の値を取得できる。

<fortran_sum_10.f90>

コード内の「&lt;」は「<」と置き換えてください。


追加情報

今回は読み込みの変数が整数型(int)たっだが、他の型(例えばfloat型や文字型)を読み込みたいときには変数宣言時にその型で宣言しておく必要がある。

参考

fortranとは:

あわせて読みたい
FORTRAN - Wikipedia
FORTRAN - Wikipedia

関連記事

応援よろしくお願いします☆

この記事を書いた人

天文の博士号をもつ理系パパ。
3歳の娘を子育て中。
最近はダイエットに挑戦中!

コメント

コメントする

目次
閉じる