8.5 一つのNetCDFから他へ属性をコピーする: NF_COPY_ATT
関数NF_COPY_ATTはオープンされたNetCDFファイルから他のファイルへ属性をコピーします。また同じNetCDF内で、ある変数の属性を別の変数にコピーするときにも使えます。
用法
INTEGER FUNCTION NF_COPY_ATT (INTEGER NCID_IN, INTEGER VARID_IN,
CHARACTER*(*) NAME, INTEGER NCID_OUT,
INTEGER VARID_OUT)
エラー
エラーが発生していなければ、NF_COPY_ATTはNF_NOERRの値を返します。それ以外の場合には、返されたステータスがエラーを示します。エラーの原因として次のようなものが考えられます。
・ 入力または出力変数IDが指定されたNetCDFファイルで無効である。
・ 指定された属性が存在しない。
・ 出力NetCDFが定義モードになく、コピーされる属性が新しいか、または存在する属性より大きい。
・ 入力または出力NetCDF IDがオープンされたNetCDFファイルを参照していない。
例
この例では、NF_COPY_ATTを使って、既存のfoo.ncというNetCDFファイルにおける変数rhから変数属性unitsをコピーして、他の既存のbar.ncというNetCDFファイルの変数avgrhに貼り付けます。変数avgrhは既に存在するが、属性unitsはまだ持っていないと仮定します。
INCLUDE 'netcdf.inc'
…
INTEGER STATUS ! エラーステータス
INTEGER NCID1, NCID2 ! NetCDF ID
INTEGER RHID, AVRHID !変数ID
…
STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID1)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_OPEN ('bar.nc', NF_WRITE, NCID2)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
…
STATUS = NF_INQ_VARID (NCID1, 'rh', RHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_INQ_VARID (NCID2, 'avgrh', AVRHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
…
STATUS = NF_REDEF (NCID2) ! 定義モードに入る
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
! 変数属性を "rh" からコピーして "avgrh"に貼り付ける
STATUS = NF_COPY_ATT (NCID1, RHID, 'units', NCID2, AVRHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
…
STATUS = NF_ENDDEF (NCID2) ! 定義モードを抜ける
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 |