gtool4/Fortran90 tools reference - concept - varname

gtool4/Fortran 90 リファレンスマニュアル

# 変数名

2001年10月01日 豊田英司

## 概要

gtool4 ではデータはすべて変数または変数の属性として扱われます。変数や属性は変数 URL あるいは属性 URL と呼ばれる文字列で識別されます。ここではその形式と意味について説明します。

## 変数全体 URL

変数全体 URL は一般の URL です。URL が「?」または「@」を含む場合、それ以前がファイル名、 以後が変数名と解釈されます。

- RFC 1738 の規則で URL を解釈して、構文素 search の部分が変数名や範囲限定（後述）になる、と考えてください。
- 変数名は後述する名前規則に従います。
- たとえば、 http://www.gfd-dennou.org/arch/gtool4/examples/test2d.nc?ps は有効な変数全体 URL であり、netCDF ファイル http://www.gfd-dennou.org/arch/gtool4/examples/test2d.nc の中の変数 ps を表します。
- URL には http だけでなく、ローカルファイルを表す file: スキームや相対パスなどもあります。
- UNIX シェルのように '?' を含む文字列の扱いが困難な環境では、 '?' のかわりに '@' を使うことができます。たとえば、 test2d.nc?ps と test2d.nc@ps は等価です。
- ?変数名を省略すると、実装依存の方式でなんらかの変数名が補完されます。たとえば、既存の netCDF ファイルを読み取り用に開く操作では、次元変数でない変数のうち作成順で最初のものが選択され、書き込み用に開く操作では、重複しないような変数名が自動的に生成されます。

## 属性 URL

属性 URL は変数 URL に「:属性名」の形式の文字列を続けたものです。

- たとえば、 test.nc?ps:units は変数 test.nc?ps の「units」という属性を指示します。
- 現在の実装では「?変数名」は省略できません。
- 属性名は後述する名前規則に従います。
- 先頭が '+' で始まっている名前の属性を大域属性と呼び、ファイル全体で共有される属性とします。たとえば、変数 test.nc?ps と test.nc?lat が存在するときに test.nc?ps:+institution 属性を作成すると、自動的に test.nc?lat:+institution が同じ値になります。

## コンマ記法

変数URL にコンマ「,」で始まるある種の文字列を続けると、入出力範囲の限定などの操作ができます。

### 一点切り出し

ある軸について1点だけを取り出したい場合、「,次元名=位置」のような形式の文字列を続けることで指定できます。

- 座標変数の値が位置に最も近い格子番号が選択されます。
- 格子番号を直接指定したい場合、位置のかわりに「,次元名=^格子番号」のように指定できます。ここで、次元名とは dimname_to_dimord 関数の引数になる名前です。
- 次元名のかわりに次元順序番号を使うことができます。

### 範囲限定

ある軸について連続した範囲を切り出したい場合、「,次元名=基点位置:終点位置」のように指定します。

- 位置の解釈、格子番号直接指定、次元順序番号指定については一点切り出しに準じます。
- 切り出し格子を間引きたい場合、「,次元名=基点位置：終点位置：間隔」のように指定します。ここで間隔は整数値で、格子数と解釈されます。

### 次元隠蔽

一点切り出しを行ったあと、当該次元への依存性を隠蔽してしまいたい場合は「,IGN：次元名=位置」という記法を用います。

## 制約

### 名前の規則

属性名、変数名、次元名は以下の制約に従います。

- 先頭の文字は英大文字または英小文字でなければなリません。
- それに続く文字は英大文字・英小文字・数字・下線のいずれかでなければなりません。
- 大文字と小文字は区別されます。
- char, real, float, double, int, short, long を使ってはいけません。
- ファイル形式によって異なる長さ制限があります。

属性についてはこのほか、上記規則に従う名前の先頭に '+' を付加したものも正しい属性名とします。

この規則は netCDF の名前の規則に由来していますが、ハイフンマイナス '-' が利用できないことが異なっています。

### 定数の規則

- 整定数は Fortran 自由形式プログラムと同じです。
- 実定数は Fortran 自由形式プログラムと同じです。