Up|<<Prev|Next>>


新しい FORTRAN インターフェース

まず最初にNetCDF-2インターフェースを使った FORTRAN コードの例です。

! どんな型の値にも対応できる十分な大きさのバッファを使用
DOUBLE PRECISION DBUF(NDATA)
REAL RBUF(NDATA)
...
EQUIVALENCE (RBUF, DBUF), ...
INT XTYPE     ! データの実際の型を保持する
INT STATUS    ! エラーステータス用
! Get the actual data type
CALL NCVINQ(NCID, VARID, ...,XTYPE, ...)
...
! データを取得
CALL NCVGT(NCID, VARID, START, COUNT, DBUF, STATUS)
IF(STATUS .NE. NCNOERR) THEN
   PRINT *, 'Cannot get data, error code =', STATUS
   ! エラーに対応する
   ...
ENDIF
IF (XTYPE .EQ. NCDOUBLE) THEN
   CALL DANALYZE(DBUF)
ELSEIF (XTYPE .EQ. NCFLOAT) THEN
   CALL RANALYZE(RBUF)
...
ENDIF

同じことを新しいNetCDF-3の FORTRAN インターフェースを使って扱うとこのようになります。

! 解析に倍精度を使用したい
DOUBLE PRECISION DBUF(NDATA)
INT STATUS
! よって、データを倍精度として取得する関数を使用する。
STATUS = NF_GET_VARA_DOUBLE(NCID, VARID, START, COUNT, DBUF)
IF(STATUS .NE. NF_NOERR) THEN
   PRINT *, 'Cannot get data, ', NF_STRERROR(STATUS)
   ! エラーに対応する
   ...
ENDIF
CALL DANALYZE(DBUF)

上の例は関数の名前、データ型の変換、エラーの取り扱い等における変更を表わしています。詳細については後述してあります。


Up|<<Prev|Next>>