Fortranで外部ファイルを読み込む方法を紹介します。
open文でファイルを開き、read文を用いてファイル内容を読み込む流れです。外部ファイルデータを読み込む際に利用します。
基本的には、次の流れで処理を行います。
1)open文でファイルを開く
2)read文でファイルを読み込む
3)close文でファイルを閉じる
良く使うと思うので参考にしてください。
open文でファイルを開く
Open文の基本的な使い方は次の通りです。
open(ファイル番号 , file = ファイル名)
ファイル番号は、5番がキーボード入力、6番がディスプレイ出力に割り当てられているので、これらの番号以外の整数を指定します。
read文でファイルを読み込む
Open文でファイルを開いたら、次にread文でファイルを読み込みます。
read(ファイル番号 , 書式)データ入力先変数 , ・・・
ファイル番号は、open文でファイルを開くときに 指定したファイル番号を指定します。
一度のread文実行で読み込まれるデータは一行ずつなので、読み込むデータが複数行ある場合は、繰り返し処理を利用します。
繰り返し処理を利用してファイルを読み込む
Do文を組み合わせる(基本)
1次元配列data(10)にファイル番号10のデータを10個格納する例です。
Do i=1,10
read(10,*) data(i-1)
Loop
read文の横に繰り返し処理を記入する
先ほどと同様のケースを考えます。
read(10,*) (data(i-1),i=1,10)
入力先の配列の横にカウンター変数について指定します。
変数名=始値 , 終値 ,(増分)
2次元配列にデータを入力する
私が使用する方法としては、上記の2つの方法を組み合わせた方法です。
2次元配列data(10,10)にファイル番号10のファイルから2系統のデータを読み込む例です。
Do i=1,10
read(10,*) (data(i-1,j-1),j=1,2)
Loop
ファイルの書式について
書式を指定する場合は、'(書式)’ のようにシングルクオーテーションと括弧で挟んだ内側に記入し、データ入力先の数だけ指定します。
入力先が複数あり、同じ書式の場合はまとめて書くことができます。
例;ファイル番号10のファイルについて、3つの入力先A,B,Cへ整数型5桁を指定して入力する場合は
read(10 ,'(3i5)’) A , B , C
となります。
書式については次の記事でも紹介していますので参考にしてください。
close文でファイルを閉じる
ファイル内容を読み込み終えたら、close文でファイルを閉じます。
close(ファイル番号)
以上です。
Fortranに関する記事のまとめはこちら