Up|<<Prev|Next>>


上の文法によれば、 最も小さな有効なNetCDF fileで次元、変数、属性を持たない、従ってデータを持たないものを導くことができます。空の NetCDFファイルのCDL表現は次のようになります:

NetCDF empty { }

この 空のNetCDFファイルは32バイトの大きさで、 CDL表現から `ncgen -b empty.cdl' を使って空のNetCDFファイルを生成して確認することが出来ます。この空ファイルはそれがNetCDF 1版のファイルであることを示す4バイトの”マジックナンバー”である `C' , `D' , `F' , `\001' で始まります。続いて、記録数・次元の空配列・グローバル属性の空配列・変数の空配列を表わす7つの32ビット0が後にきます。

以下は、次のUnixコマンドを使ってビッグエンディアンマシン上で生成されたファイルの(編集済みの)ダンプです。

od -xcs empty.nc

ファイルの16バイトの各部分は4行で表示されています。最初の行はバイトを16進数表示し、 2行目はを文字表示しています。3行目は2バイトごとにグループ化して、それを符号付16ビット整数として表示しています。 4行目は(手作業で追加されたものであるが)バイトをNetCDF要素及び値として解釈したものを表示している。

   4344    4601    0000    0000    0000    0000    0000    0000
  C   D   F 001  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
  17220   17921   00000   00000   00000   00000   00000   00000
[magic number ] [  0 records  ] [  0 dimensions   (ABSENT)    ]
 
   0000    0000    0000    0000    0000    0000    0000    0000
 \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
  00000   00000   00000   00000   00000   00000   00000   00000
[  0 global atts  (ABSENT)    ] [  0 variables    (ABSENT)    ]

もう少し意味のある例として、このような CDLを考えてみましょう。

NetCDF tiny {
dimensions:
        dim = 5;
variables:
        short vx(dim);
data:
        vx = 3, 1, 4, 1, 5 ;
}

これは92バイトNetCDFファイルに対応します。このファイルの変数済みのダンプは下記のようになります。

   4344    4601    0000    0000    0000    000a    0000    0001
  C   D   F 001  \0  \0  \0  \0  \0  \0  \0  \n  \0  \0  \0 001
  17220   17921   00000   00000   00000   00010   00000   00001
[magic number ] [  0 records  ] [NC_DIMENSION ] [ 1 dimension ]
 
   0000    0003    6469    6d00    0000    0005    0000    0000
 \0  \0  \0 003   d   i   m  \0  \0  \0  \0 005  \0  \0  \0  \0
  00000   00003   25705   27904   00000   00005   00000   00000
[  3 char name = "dim"        ] [ size = 5    ] [ 0 global atts
 
   0000    0000    0000    000b    0000    0001    0000    0002
 \0  \0  \0  \0  \0  \0  \0 013  \0  \0  \0 001  \0  \0  \0 002
  00000   00000   00000   00011   00000   00001   00000   00002
 (ABSENT)     ] [NC_VARIABLE  ] [ 1 variable  ] [ 2 char name =
 
   7678    0000    0000    0001    0000    0000    0000    0000
  v   x  \0  \0  \0  \0  \0 001  \0  \0  \0  \0  \0  \0  \0  \0
  30328   00000   00000   00001   00000   00000   00000   00000
 "vx"         ] [1 dimension  ] [ with ID 0   ] [ 0 attributes
 
   0000    0000    0000    0003    0000    000c    0000    0050
 \0  \0  \0  \0  \0  \0  \0 003  \0  \0  \0  \f  \0  \0  \0   P
  00000   00000   00000   00003   00000   00012   00000   00080
 (ABSENT)     ] [type NC_SHORT] [size 12 bytes] [offset:    80]
 
   0003    0001    0004    0001    0005    8001
 \0 003  \0 001  \0 004  \0 001  \0 005 200 001
  00003   00001   00004   00001   00005  -32767
[    3] [    1] [    4] [    1] [    5] [fill ]

Appendix B FORTRAN インターフェースのまとめ

Appendix C NetCDF 2 FORTRAN トランジションガイド


Up|<<Prev|Next>>