関数 NF_PUT_ATT_ type は、開かれたNetCDFファイルの変数属性又はグローバル属性を追加・変更する。新規の属性、又は属性を格納するために必要なスペースが前より大きくなる場合には、NetCDFファイルは 定義モードでなくてはなりません。
どんな型の属性も生成可能ですが、ほとんどの用途にはテキストや倍精度属性で十分です。
INTEGER FUNCTION NF_PUT_ATT_TEXT (INTEGER NCID, INTEGER VARID,
CHARACTER*(*) NAME, INTEGER LEN,
INTEGER FUNCTION NF_PUT_ATT_INT1 (INTEGER NCID, INTEGER VARID,
CHARACTER*(*) NAME, INTEGER XTYPE,
INTEGER FUNCTION NF_PUT_ATT_INT2 (INTEGER NCID, INTEGER VARID,
CHARACTER*(*) NAME, INTEGER XTYPE,
INTEGER FUNCTION NF_PUT_ATT_INT (INTEGER NCID, INTEGER VARID,
CHARACTER*(*) NAME, INTEGER XTYPE,
INTEGER FUNCTION NF_PUT_ATT_REAL (INTEGER NCID, INTEGER VARID,
CHARACTER*(*) NAME, INTEGER XTYPE,
INTEGER FUNCTION NF_PUT_ATT_DOUBLE(INTEGER NCID, INTEGER VARID,
CHARACTER*(*) NAME, INTEGER XTYPE,
属性名。アルファベット文字で始り、アンダースコア ( `_' )を含む零又は英数字が続きます。大文字小文字は区別されます。属性名の規約は幾つかのNetCDFの一般的なアプリケーション で仮定されています。例えば、 units はNetCDF変数に単位を与える文字列属性の名前です。規約的な属性名の一覧が前出のNetCDFインターフェースについての章にあります。 |
|
前もって定義されたNetCDF外部データ型の集合の一つ。有効なNetCDF外部データ型は NF_BYTE 、 NF_CHAR 、 NF_SHORT 、 NF_INT 、 NF_FLOAT 、 NF_DOUBLE 等です。どんな型の属性も生成できますが、ほとんどの用途には NF_CHAR と NF_DOUBLE の属性で十分です。 |
|
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)