まず最初に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)
上の例は関数の名前、データ型の変換、エラーの取り扱い等における変更を表わしています。詳細については後述してあります。