Up|<<Prev|Next>>


8.2 属性を生成する: NF_PUT_ATT_ type

関数 NF_PUT_ATT_ type は、開かれたNetCDFファイルの変数属性又はグローバル属性を追加・変更する。新規の属性、又は属性を格納するために必要なスペースが前より大きくなる場合には、NetCDFファイルは 定義モードでなくてはなりません。

 

どんな型の属性も生成可能ですが、ほとんどの用途にはテキストや倍精度属性で十分です。

INTEGER FUNCTION NF_PUT_ATT_TEXT (INTEGER NCID, INTEGER VARID,

CHARACTER*(*) NAME, INTEGER LEN,

CHARACTER*(*) TEXT)

INTEGER FUNCTION NF_PUT_ATT_INT1 (INTEGER NCID, INTEGER VARID,

CHARACTER*(*) NAME, INTEGER XTYPE,

LEN, INTEGER*1 I1VALS(*))

INTEGER FUNCTION NF_PUT_ATT_INT2 (INTEGER NCID, INTEGER VARID,

CHARACTER*(*) NAME, INTEGER XTYPE,

LEN, INTEGER*2 I2VALS(*))

INTEGER FUNCTION NF_PUT_ATT_INT (INTEGER NCID, INTEGER VARID,

CHARACTER*(*) NAME, INTEGER XTYPE,

LEN, INTEGER IVALS(*))

INTEGER FUNCTION NF_PUT_ATT_REAL (INTEGER NCID, INTEGER VARID,

CHARACTER*(*) NAME, INTEGER XTYPE,

LEN, REAL RVALS(*))

INTEGER FUNCTION NF_PUT_ATT_DOUBLE(INTEGER NCID, INTEGER VARID,

CHARACTER*(*) NAME, INTEGER XTYPE,

LEN, DOUBLE DVALS(*))

 

NCID

以前の NF_OPEN 又は NF_CREATE 呼び出しで返されたNetCDF ID。

VARID

変数 ID.

NAME

属性名。アルファベット文字で始り、アンダースコア ( `_' )を含む零又は英数字が続きます。大文字小文字は区別されます。属性名の規約は幾つかのNetCDFの一般的なアプリケーション で仮定されています。例えば、 units はNetCDF変数に単位を与える文字列属性の名前です。規約的な属性名の一覧が前出のNetCDFインターフェースについての章にあります。

XTYPE

前もって定義されたNetCDF外部データ型の集合の一つ。有効なNetCDF外部データ型は NF_BYTE NF_CHAR NF_SHORT NF_INT NF_FLOAT NF_DOUBLE 等です。どんな型の属性も生成できますが、ほとんどの用途には NF_CHAR NF_DOUBLE の属性で十分です。

LEN

属性に与えられた値の数、又は NF_PUT_ATT_TEXT のテキスト属性の長さ。

TEXT, I1VALS,
I2VALS, IVALS,RVALS, or DVALS

LEN 属性値の配列。データは呼び出し関数に妥当な型でなければなりません。数値属性にCHARACTERデータを書き込んだり、テキスト属性に数値データを書き込むことは出来ません。 数値データの場合、データの型が属性の型と異なれば型変換が行なわれます。(詳細については型変換を参照してください。)

 

エラーが発生していなければ、 NF_PUT_ATT_ type NF_NOERR の値を返します。 それ以外の場合には、返されたステータスがエラーを示します。エラーの原因として次のようなものが考えられます。

 

この例では、 NF_PUT_ATT_DOUBLE を使って、既存の foo.nc という名前のNetCDFファイルにおいて、 rh という名前のNetCDF変数に対して valid_range という属性、及び、 title という名前のグローバル属性を追加している。

INCLUDE 'netcdf.inc'
   ... 
INTEGER STATUS, NCID
INTEGER RHID                 ! 変数 ID
DOUBLE RHRNGE(2)
DATA RHRNGE /0.0D0, 100.0D0/
   ... 
STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
   ... 
STATUS = NF_REDEF (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)
   ... 
STATUS = NF_PUT_ATT_DOUBLE (NCID, RHID, 'valid_range', NF_DOUBLE, &
                            2, RHRNGE)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_PUT_ATT_TEXT (NCID, NF_GLOBAL, 'title', 19, 
                          'example NetCDF dataset')
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
   ... 
STATUS = NF_ENDDEF (NCID)    ! 定義モードを抜ける
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)

Up|<<Prev|Next>>