戻る

binary data

バイナリデータの読み書き

(Fortran90)

研究室の皆さん (特に薛君)

玉川です。CReSS で使う 土地利用データ  data.land.bin の
単純な値の変更用に添付のようなプログラムを書きました。
G95 (on FreeBSD) で動作確認しています。

以下、使い方を説明します。コンパイラは g95 としてありますが、適当に変更して
使ってください。 (open 文 の recl = の所の 4* が要らない環境もあると思います)

g95 binconv.f90 -o binconv
./binconv とすると使い方のメッセージがでます。
 ./binconv data_number_x data_number_y file_in file_out orig_num mod_num eps
 if( xorig-eps < x < xorig+eps )   x=xmod

たとえば、一緒に添付してある test.f90 で作成する 10x10 の
test という名の実数データの場合 (値 2 -- 20) で、
8 を 88 に変更して test2 に出力する際には
 ./bnconv 10 10 test test2 8 88 0.01
で実行できます。
最後の 0.01 は 実数同士なので同じ値の判別のために誤差を考えないと
いけない可能性があるので、ここでは 8-0.01 〜 8+0.01 までを 8 と
考えると指定しています。使っている値よりも、一回り小さな値をいれておくと
よいでしょう。

とりあえずの結果確認には、UNIX 環境なら 
od -f test
と 
od -f test2
の比較をすると分かると思います。

実際の data.land.bin には、user.conf で指定する X Y 方向のデータ数を
入れて使ってください。( X*Y が等しければ問題なく動作します )