gtool4/Fortran90 reference - library - attribute procedures

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

# 属性関係の手続

2001年10月10日 豊田英司

## 属性名

属性名は英字、数字、下線から構成されます。先頭の文字は英字または "+" でなければなりません。"+" から始まる属性名は内部的に使用されるもので、netCDF 実装では大域変数に対応します。

## 属性の列挙

- subroutine Attr_Rewind(GT_VARIABLE var)
- subroutine Attr_Next(GT_VARIABLE var, VSTRING name, LOGICAL end)
- subroutine Attr_Next(GT_VARIABLE var, CHARACTER(len=*) name, LOGICAL end)

ある変数 var についてすべての属性を列挙するためには、まず Attr_Rewind を呼んだ後、Attr_Next を呼びます。最初の呼び出しで最初の属性が、次の呼び出しで次の属性の名前が得られます。最後の属性のあとでは end が真となります。チュートリアルの例を参照してください。

## 属性からの入力

最初の2つの引数は GT_VARIABLE var, CHARACTER(*) name です。

Attr_True と Get_Attr(var, name, LOGICAL) の機能は同じです。

配列の読み取りはユーザが配列を用意する方式と、ポインタ配列にサブルーチンが必要量を割り付けてくれる方式とがあります。ユーザが配列を用意する場合 default が必須になりますが、これは Fortran の言語仕様上ポインタ方式と引用仕様が同じであってはならないからです。

- LOGICAL function Attr_True(var, name, [LOGICAL default])
- subroutine Get_Attr(var, name, VSTRING value, [CHARACTER(*) default])
- subroutine Get_Attr(var, name, CHARACTER(*) value, [CHARACTER(*) default])
- subroutine Get_Attr(var, name, REAL value, [REAL default])
- subroutine Get_Attr(var, name, REAL value(:), REAL default)
- subroutine Get_Attr(var, name, REAL POINTER value(:))
- subroutine Get_Attr(var, name, INTEGER value, [INTEGER default])
- subroutine Get_Attr(var, name, INTEGER value(:), INTEGER default)
- subroutine Get_Attr(var, name, INTEGER POINTER value(:))

## 属性への出力

最初の2つの引数は GT_VARIABLE var, CHARACTER(*) name です。省略可能引数 err は LOGICAL intent(out) です。

配列を受け取るサブルーチンにスカラーを書き出すには Fortran の配列構成子 (/ ... /) を使ってください。たとえば、スカラー a から長さ1の配列 (/a/) を作ることができます。

- subroutine Put_Attr(var, name, VSTRING value, [err])
- subroutine Put_Attr(var, name, CHARACTER(*) value, [CHARACTER(*) xtype],[err])
- subroutine Put_Attr(var, name, LOGICAL value, [err])
- subroutine Put_Attr(var, name, INTEGER value, [err])
- subroutine Put_Attr(var, name, REAL value, [err])
- subroutine Put_Attr(var, name, DOUBLE PRECISION value, [err])

## 属性の削除

subroutine Del_Attr(GT_VARIABLE var, CHARACTER(*) name)

## 属性のコピー

subroutine Copy_Attr(GT_VARIABLE to, CHARACTER(*) attrname, GT_VARIABLE from, [LOGICAL err])

## 属性に対する問い合わせ

属性には問い合わせ可能な概念として外部表現型と長さがあります。いまのところ、NetCDF 実装では、外部表現が文字型ならば文字数を、それ以外ならば数値型として読み取ったときの要素数を表します。文字型と非文字型の自動変換があるため、長さという概念には問題があります。

仕様については Inquire サブルーチンのページを参照してください。