Up|<<Prev|Next>>


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)

 

NCID_IN

属性のコピー元となる、以前の NF_OPEN 又は NF_CREATE 呼び出しで返された入力 NetCDF ファイルの NetCDF ID 。

VARID_IN

属性のコピー元である入力NetCDF ファイルの変数ID 、又はグロバール属性の NF_GLOBAL

NAME

入力NetCDF ファイルからコピーされる属性の名前。

NCID_OUT

属性のコピー先である、出力NetCDFファイルの NetCDF ID。以前の NF_OPEN 又は NF_CREATE から。入力と出力NetCDF IDが同じでも構わない。 コピーされる属性が出力NetCDFファイル内にまだない場合、又は存在する属性が大きくなる場合は、出力NetCDFファイルは定義モードにしておく必要がある。

VARID_OUT

属性のコピー先である、出力 NetCDF ファイルの変数 ID 、又はグローバル属性をコピーする場合には NF_GLOBAL

 

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

 

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

Up|<<Prev|Next>>