新しい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)
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |