Up|<<Prev|Next>>


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, or DVALS

書き込まれるデータ値の塊。データの型は呼び出された関数に適当な型でなければなりません。 文字(CHARACTER) データを数値変数に、又は数値データを文字変数に入れることは出来ません。数値データについては、データ型がNetCDF変数型と異なる場合には型変換が行われます。 (詳細は型変換にあります。 ).

 

関数 NF_PUT_VARA_ type はエラーが発生していない場合には NF_NOERR 値を返します。それ以外の場合には、返されたステータスがエラーの発生を示します。エラーの原因としては:

 

この 例では 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)

Up|<<Prev|Next>>