7.7 値の配列を書きこむ: NF_PUT_VARA_ type
関数NF_PUT_VARA_ type はオープンされたNetCDFファイルのNetCDF変数のに値を書き込みます。書き込むNetCDF変数の部分は変数の部分配列の隅と縁の長さを与えることによって指定されます。書き込まれる値はNetCDF変数の最初の次元がFORTRANインターフェースにおいて最も早く変化するという仮定の下にNetCDF変数に関連付けられます。NetCDFファイルはデータモードになっていなければなりません。
用法
INTEGER FUNCTION NF_PUT_VARA_TEXT(INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
CHARACTER*(*) TEXT)
INTEGER FUNCTION NF_PUT_VARA_INT1(INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER*1 I1VALS(*))
INTEGER FUNCTION NF_PUT_VARA_INT2(INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER*2 I2VALS(*))
INTEGER FUNCTION NF_PUT_VARA_INT (INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
INTEGER IVALS(*))
INTEGER FUNCTION NF_PUT_VARA_REAL(INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
REAL RVALS(*))
INTEGER FUNCTION NF_PUT_VARA_DOUBLE(INTEGER NCID, INTEGER VARID,
INTEGER START(*), INTEGER COUNT(*),
DOUBLE DVALS(*))
NCID 以前のNF_OPEN または NF_CREATE呼び出しで返されたNetCDF ID。 VARID 変数ID。 START 最初にデータ値が書きこまれる変数内のインデックスを指定する整数のベクトル。インデックスは1に相対的なので、変数の最初のデータ値のインデックスは(1, 1, …, 1)となります。START の長さは指定された変数の次元数と同じでなければなりません。START の要素は変数の次元と順番に対応していなければなりません。従って、記録変数の場合には、最後のインデックスがデータ値を書き込む開始記録番号となります。 COUNT 書き込まれるデータ値のかたまりの各次元の縁の長さを指定する整数のベクトル。単一のデータ値を書き込む場合には、COUNT を(1, 1, …, 1)と指定します。 COUNT の長さは指定された変数ベクトルの次元数と同じです。COUNT の要素は変数の次元に対応します。従って、記録変数の場合には、COUNT の最後の要素が書き込む記録数の総計に対応します。 TEXT, I1VALS, I2VALS, IVALS,RVALS, DVALS 書き込まれるデータ値のかたまり。データの型は呼び出された関数に適当な型でなければなりません。文字(CHARACTER)データを数値変数に、または数値データを文字変数に入れることは出来ません。数値データについては、データ型がNetCDF変数型と異なる場合には型変換が行われます。 (詳細は3.3節「型変換」(p.24)にあります。)
エラー
関数NF_PUT_VARA_ typeはエラーが発生していない場合には NF_NOERR 値を返します。それ以外の場合には、返されたステータスがエラーの発生を示します。エラーの原因としては:
・ 変数IDが指定されたNetCDFファイルでは無効である。
・ 指定された隅のインデックスが指定された変数のランクの範囲外である。例えば、負のインデックス、または対応する次元長より大きなインデックスはエラーを引き起こします。
・ 指定された隅に指定された縁の長さを加えると、参照するデータが指定された変数のランクの範囲外になってしまう。例えば、対応する次元長から隅のインデックスを引いたものより縁の長さが大きい場合にはエラーが発生します。
・ 指定された値の一つ、もしくはそれ以上が変数の外部型として表現可能な値の範囲外にある。
・ 指定されたNetCDFファイルがデータモードではなく定義モードになっている。
・ 指定されたNetCDF IDがオープンされたNetCDFファイルを参照していない。
例
この例では NF_PUT_VARA_DOUBLE を使用して既存のNetCDFファイルfoo.nc中の変数 rh の値に0.5を加えるか0.5にします。簡潔にするために、この例では、変数rhの次元がlon, latとtimeであり、lon値は10個、lat値は5個、そしてtime値は3個あることが既知とします。
INCLUDE 'netcdf.inc'
…
PARAMETER (NDIMS=3) ! 次元の数
PARAMETER (TIMES=3, LATS=5, LONS=10) ! 次元長
INTEGER STATUS, NCID, TIMES
INTEGER RHID ! 変数 ID
INTEGER START(NDIMS), COUNT(NDIMS)
DOUBLE RHVALS(LONS, LATS, TIMES)
DATA START /1, 1, 1/ ! 最初の値から始める
DATA COUNT /LONS, LATS, TIMES/
…
STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
…
STATUS = NF_INQ_VARID (NCID, 'rh', RHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
DO 10 ILON = 1, LONS
DO 10 ILAT = 1, LATS
DO 10 ITIME = 1, TIMES
RHVALS(ILON, ILAT, ITIME) = 0.5
10 CONTINUE
STATUS = NF_PUT_VARA_DOUBLE (NCID, RHID, START, COUNT, RHVALS)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |