netCDF 上位インターフェイスライブラリ NXPACK
塩谷 雅人

1994 年 9 月 10 日

目次
1

2

3

4

5

サブルーチンの説明

1

1.1
1.2
1.3

ファイルの取り扱い. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1
1

1.4

Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

ファイルの取り扱い
2.1 NXOPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 NXDEFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
2

2.3
2.4

NXCLOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NXFILM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3

Dimensions
3.1 NXDDEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4

3.2

4

NXDQSZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Variables

5

4.1
4.2
4.3

NXVDEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NXVP1X/NXVG1X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NXVP1C/NXVG1C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
6

4.4
4.5

NXVPNX/NXVGNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NXVPNC/NXVGNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
7

4.6
4.7

NXVPAX/NXVGAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NXVPAC/NXVGAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7
8

Attribute
5.1 NXAPTX/NXAGTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 NXAPTC/NXAGTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9
9
9

i

サブルーチンの説明

1

これは, netCDF のライブラリを使いやすくするために書かれた, 上位インターフェイスサブルーチン
パッケージである. netCDF のライブラリルーチンと混在して使用できる.
ソースコードは/home/shiotani/msl-5.z/src/sflib/ncdflib にある; また, 簡単なテストプログラム
が/home/shiotani/msl-5.z/demo/sflib/ncdflib にある. くわしくは netCDF ユーザーズガイドを参
照のこと.

1.1

1.2

ファイルの取り扱い
NXOPEN(NCDFID,CFNAME,CFMODE)

netCDF ファイルの open

NXDEFM(NCDFID,LDMODE)NXCLOS(NCDFID)NXFILM(NCDFID,LFMODE)

define mode の設定
netCDF ファイルの close
fill mode の設定

Dimensions
dimension の定義
dimension の参照

NXDDEF(NCDFID,CDNAME,NDSIZE)NXDQSZ(NCDFID,CDNAME,NDSIZE)

1.3

1.4

Variables
NXVDEF(NCDFID,CVSTRC,CVTYPE)NXVP1X(NCDFID,CVNAME,MINDEX,VALUEX)

variable の定義
1 変数の書き出し

NXVG1X(NCDFID,CVNAME,MINDEX,VALUEX)NXVP1C(NCDFID,CVNAME,MINDEX,CVALUE)

1 変数の読み出し
1 文字の書き出し

NXVG1C(NCDFID,CVNAME,MINDEX,CVALUE)NXVPNX(NCDFID,CVNAME,ISTART,ICOUNT,VALUES)NXVGNX(NCDFID,CVNAME,ISTART,ICOUNT,VALUES)

1 文字の読み出し
多変数の書き出し
多変数の読み出し

NXVPNC(NCDFID,CVNAME,ISTART,ICOUNT,CVALUE)NXVGNC(NCDFID,CVNAME,ISTART,ICOUNT,CVALUE)

多文字の書き出しNXVPAX(NCDFID,CVNAME,VALUES)NXVGAX(NCDFID,CVNAME,VALUES)NXVPAC(NCDFID,CVNAME,CVALUE)

変数まるごとの書き出し

NXVGAC(NCDFID,CVNAME,CVALUE)

文字まるごとの読み出し

多文字の読み出し
変数まるごとの読み出し
文字まるごとの書き出し

Attributes
NXAPTX(NCDFID,CANAME,CATYPE,NAXLEN,VALUES)

属性の書き出しNXAGTX(NCDFID,CANAME,VALUES)NXAPTC(NCDFID,CANAME,CATYPE,NACLEN,CVALUE)

属性の読み出しNXAGTC(NCDFID,CANAME,CVALUE)

属性 (文字) の読み出し

1

属性 (文字) の書き出し

2

ファイルの取り扱い

2.1

NXOPEN

1. 機能
netCDF ファイルをオープンする.
2. 呼び出し方法
NXOPEN(NCDFID,CFNAME,CFMODE)
3. パラメーターの説明
NCDFID(I)

CFNAME(C*(*))

netCDF ID. 出力パラメータである. 以下のルーチンではこの値を指定してファイルにアクセスする.
オープンするファイル名を指定する. 絶対パスで指定してもよいし,相対パスで指定してもよい.

CFMODE(C*1)

オープンするモードを指定する. ’C’reate : 新しく作ってオープン
する, ’R’ead : 読み込み用としてオープンする, ’M’odify : 読み・書き用としてオープンする, の中から 1 つを選択する (これらの指定は大文字でも小文字でもよい).

4. 備考(a) 内部では NCCRE, NCOPN を呼んでいる.

2.2

NXDEFM

1. 機能
define mode の設定をおこなう.
2. 呼び出し方法
NXDEFM(NCDFID,LDMODE)
3. パラメーターの説明
NCDFIDLDMODE(I)(L)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
define mode の設定・解除をおこなう. .TRUE. のとき define modeに入る; .FALSE. のとき define mode から出る.

4. 備考(a) 内部では NCREDF, NCENDF を呼んでいる.

2

2.3

NXCLOS

1. 機能
netCDF ファイルをクローズする.
2. 呼び出し方法
NXCLOS(NCDFID)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

4. 備考(a) 内部では NCCLOS を呼んでいる.

2.4

NXFILM

1. 機能
fill mode の設定をおこなう.
2. 呼び出し方法
NXFILM(NCDFID,LFMODE)
3. パラメーターの説明
NCDFID(I)

LFMODE(L)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
fill mode の設定・解除をおこなう. .TRUE. のとき fill mode に入る; .FALSE. のとき fill mode から出る.

4. 備考(a) 内部では NCSFIL を呼んでいる.

3

3

Dimensions

3.1

NXDDEF

1. 機能
dimension を定義する.
2. 呼び出し方法
NXDDEF(NCDFID,CDNAME,NDSIZE)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

CDNAMENDSIZE(C*(*))(I)

dimension 名を指定する.
dimension の値 (大きさ) を指定する. この値が 0 のときは NCUNLIM(大きさは不定) を指定したと見なされる.

4. 備考(a) 内部では NCDDEF を呼んでいる.

3.2

NXDQSZ

1. 機能
dimension を参照する.
2. 呼び出し方法
NXDQSZ(NCDFID,CDNAME,NDSIZE)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

CDNAMENDSIZE(C*(*))(I)

dimension 名を指定する.
dimension の値 (大きさ) が返される. 大きさが不定の dimensionについては, 現在書き出されているレコード数が返される.

4. 備考(a) 内部では NCDID, NCDINQ を呼んでいる.

4

4

Variables

4.1

NXVDEF

1. 機能
variable を定義する.
2. 呼び出し方法
NXVDEF(NCDFID,CVSTRC,CVTYPE)
3. パラメーターの説明
NCDFID
CVSTRC(I)(C*(*))

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
variable 名 (およびその構造) を指定する. 長さが 1 の variable ならば, たとえば ’flag’ のように指定する. 配列であれば, たとえばすでに定義した dimension 名を使って’lat(nlat)’,’wind(nlat,nlon)’ のように指定する.
CVTYPE

(C*1)

variable の型を指定する. ’C’ : 文字型, ’I’ : 整数型, ’R’ : 実数型, ’D’ : 倍精度実数型, の中から 1 つを選択する (これらの指定は大文字でも小文字でもよい).

4. 備考(a) 内部では NCDID, NCVDEF を呼んでいる.

4.2

NXVP1X/NXVG1X

1. 機能
NXVP1X : (文字型以外の) variable に 1 つの値を書き出す.
NXVG1X : (文字型以外の) variable から 1 つの値を読み出す.
2. 呼び出し方法
NXVP1X(NCDFID,CVNAME,MINDEX,VALUEX)NXVG1X(NCDFID,CVNAME,MINDEX,VALUEX)
3. パラメーターの説明
NCDFID
CVNAME(I)(C*(*))

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
variable 名を指定する. NXVDEF とは違って構造は指定しない.

MINDEX(I(*))

値を書き出す/読み出す位置を配列で指定する. たとえば, 2 次元

variable の (2,2) の位置に値を書く/から値を読むときには, 長さ

VALUEX(I/R)

2 の配列を用意して MINIDEX(1)=2, MINDEX(2)=2 とする. 長さが1 の単なる変数ならばここに 0 を指定しておけばよい.
NXPV1X のときは, 書き出す値を指定する; NXPG1X のときは, 読み出した値が返される.

4. 備考(a) 内部では NCVID, NCVPT1, NCVGT1 を呼んでいる.
5

4.3

NXVP1C/NXVG1C

1. 機能
NXVP1C : 文字型の variable に 1 文字を書き出す.
NXVG1C : 文字型の variable から 1 文字を読み出す.

2. 呼び出し方法
NXVP1C(NCDFID,CVNAME,MINDEX,CVALUE)NXVG1C(NCDFID,CVNAME,MINDEX,CVALUE)
3. パラメーターの説明
NCDFID
CVNAMEMINDEX(I)(C*(*))(I(*))

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
variable 名を指定する. NXVDEF とは違って構造は指定しない.
値を書き出す/読み出す位置を配列で指定する. たとえば, 2 次元
variable の (2,2) の位置に値を書く/から値を読むときには, 長さ2 の配列を用意して MINIDEX(1)=2, MINDEX(2)=2 とする. 長さがCVALUE(C*(*))

1 の単なる変数ならばここに 0 を指定しておけばよい.
NXPV1C のときは, 書き出す文字を指定する; NXPG1C のときは, 読
み出した文字が返される.

4. 備考(a) 内部では NCVID, NCVP1C, NCVG1C を呼んでいる.

4.4

NXVPNX/NXVGNX

1. 機能
NXVPNX : (文字型以外の) variable に hyperslab を書き出す.
NXVGNX : (文字型以外の) variable から hyperslab を読み出す.
2. 呼び出し方法
NXVPNX(NCDFID,CVNAME,ISTART,ICOUNT,VALUES)NXVGNX(NCDFID,CVNAME,ISTART,ICOUNT,VALUES)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

CVNAMEISTART(C*(*))(I(*))

variable 名を指定する. NXVDEF とは違って構造は指定しない.
hyperslab を書き出す/読み出す位置を配列で指定する. たとえば,(I(*))

2 次元 variable の (2,2) の位置から hyperslab を書く/読むときには, 長さ 2 の配列を用意して ISTART(1)=2, ISTART(2)=2 とする.
書き出す/読み出す hyperslab の大きさを配列で指定する. たとえICOUNTば, 大きさが (3,4) の 2 次元 hyperslab を書く/読むときには, 長
さ 2 の配列を用意して ICOUNT(1)=3, ICOUNT(2)=4 とする.

VALUES(I/R(*))

書き出す/読み出す hyperslab を指定する.

6

4. 備考(a) 内部では NCVID, NCVPT, NCVGT を呼んでいる.

4.5

NXVPNC/NXVGNC

1. 機能
NXVPNC : 文字型の variable に hyperslab を書き出す.
NXVGNC : 文字型の variable から hyperslab を書き出す.
2. 呼び出し方法
NXVPNC(NCDFID,CVNAME,ISTART,ICOUNT,CVALUE)NXVGNC(NCDFID,CVNAME,ISTART,ICOUNT,CVALUE)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

CVNAMEISTART(C*(*))(I(*))

variable 名を指定する. NXVDEF とは違って構造は指定しない.
hyperslab を書き出す/読み出す位置を配列で指定する. たとえば,(I(*))

2 次元 variable の (2,2) の位置から hyperslab を書く/読むときには, 長さ 2 の配列を用意して ISTART(1)=2, ISTART(2)=2 とする.
書き出す/読み出す hyperslab の長さを配列で指定する. たとえば,ICOUNT

大きさが (3,4) の 2 次元 hyperslab を書く/読むときには, 長さ 2の配列を用意して ICOUNT(1)=3, ICOUNT(2)=4 とする.

CVALUE(C*(*))

書き出す/読み出す hyperslab を指定する.

4. 備考(a) 内部では NCVID, NCVINQ, NCVPTC, NCVGTC を呼んでいる.

4.6

NXVPAX/NXVGAX

1. 機能
NXVPAX : (文字型以外の) variable をまるごと書き出す.
NXVGAX : (文字型以外の) variable をまるごと読み出す.
2. 呼び出し方法
NXVPAX(NCDFID,CVNAME,VALUES)NXVGAX(NCDFID,CVNAME,VALUES)
3. パラメーターの説明
NCDFID
CVNAME(I)(C*(*))VALUES(I/R(*))

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
variable 名を指定する. NXVDEF とは違って構造は指定しない.
書き出す/読み出す (ふつうは variable と同じ構造を持った) 配列を
指定する.

7

4. 備考(a) 内部では NCVID, NCVINQ, NCDINQ, NCVPT, NCVGT を呼んでいる.

4.7

NXVPAC/NXVGAC

1. 機能
NXVPAC : 文字型の variable をまるごと書き出す.
NXVPAC : 文字型の variable をまるごと読み出す.
2. 呼び出し方法
NXVPAC(NCDFID,CVNAME,CVALUE)NXVGAC(NCDFID,CVNAME,CVALUE)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

CVNAMECVALUE(C*(*))(C*(*))

variable 名を指定する. NXVDEF とは違って構造は指定しない.
書き出す/読み出す (ふつうは variable と同じ構造を持った) 配列を
指定する.

4. 備考
(a) 内部では NCVID, NCVINQ, NCDINQ, NCVPTC, NCVGTC を呼んでいる.

8

5

Attribute

5.1

NXAPTX/NXAGTX

1. 機能
NXAPTX : (文字型以外の) attribute を書き出す.
NXAGTX : (文字型以外の) attribute を読み出す.
2. 呼び出し方法
NXAPTX(NCDFID,CANAME,CATYPE,NAXLEN,VALUES)NXAGTX(NCDFID,CANAME,VALUES)
3. パラメーターの説明
NCDFID(I)

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.

CANAME(C*(*))

attribute 名 (およびその構造) を指定する. global attribute の場合
は, たとえば ’:date’ のように先頭をコロンで書きはじめる; それ以外は, たとえば ’lat:grid’ のように variable 名と attribute 名をコロンで連結して書く.

CATYPE(C*1)

attribute の型を指定する. ’I’ : 整数型, ’R’ : 実数型, ’D’ : 倍精度実数型, の中から 1 つを選択する (これらの指定は大文字でも小文字でもよい).

NAXLEN(I)

書き出す attribute の長さを指定する.

VALUES(I/R(*))NXAPTX のときは, 書き出す値を (NAXLEN が 2 以上なら配列などで)指定する; NXAGTX のときは, 読み出した値を格納する変数・配列などを指定する.

4. 備考(a) 内部では NCVID, NCAPT, NCAGT を呼んでいる.

5.2

NXAPTC/NXAGTC

1. 機能
NXAPTC : 文字型の attribute を書き出す.
NXAGTC : 文字型の attribute を読み出す.

2. 呼び出し方法
NXAPTC(NCDFID,CANAME,CATYPE,NAXLEN,CVALUE)
NXAPTC(NCDFID,CANAME,CVALUE)
3. パラメーターの説明

9

NCDFID
CANAME(I)(C*(*))

netCDF ID. 入力パラメータである. NXOPEN が返す値を指定する.
attribute 名 (およびその構造) を指定する. global attribute の場合
は, たとえば ’:date’ のように先頭をコロンで書きはじめる; それ以外は, たとえば ’lat:grid’ のように variable 名と attribute 名をコロンで連結して書く.

CATYPE(C*1)

attribute の型を指定する. つねに ’C’ : 文字型を選択すること (これらの指定は大文字でも小文字でもよい).

NAXLENCVALUE(I)(C*(*))

書き出す attribute の長さを指定する.

NXAPTC のときは, 書き出す文字を (NAXLEN が 2 以上なら配列など
で) 指定する; NXAGTC のときは, 読み出した値を格納する変数・配列などを指定する.

4. 備考(a) 内部では NCVID, NCAPTC, NCAGTC を呼んでいる.

10