UNITS(1)

名称
units - いろいろな単位の換算を行う

書式
units [-f filename] [-qv] [from-unit to-unit]

オプション

-f filename
    単位換算用のデータファイル名を指定します。

-q  求める単位の入力プロンプトと、 換算する単位の入力プロンプトの表示を抑制します。

-v  バージョン番号を表示します。

from-unit to-unit
    コマンドラインから直接、単位換算を行ないます。 プロンプトは表示せず、 指定した換算結果を表示し終了します。

解説
units プログラムは様々な単位で表された量を他の単位に換算します。 乗算で求められる単位の換算のみ行なえますが、 摂氏から華氏への変換などはできません。 入力プロンプトを介して、対話的に動作します。

        You have: meters
        You want: feet
                * 3.2808399
                / 0.3048
        You have: cm^3
        You want: gallons
                * 0.00026417205
                / 3785.4118
        You have: meters/s
        You want: furlongs/fortnight
                * 6012.8848
                / 0.00016630952
        You have: 1|2 inch
        You want: cm
                * 1.27
                / 0.78740157

単位の中で累乗を表す部分は、上の例のように `^' を用いて表すか、 あるいは単に連結して表記します。例えば `cm3' は `cm^3' と等価です。 単位の掛け算を表すには、空白、ダッシュあるいはアスタリスクを用います。 単位の割り算には `/' を用います。 掛け算は割り算より高い優先度を持ちますから、 `m/s/s' は `m/s^2' あるいは `m/s s' と同じ意味になります。 数値の割り算には縦棒(`|')を用いなければなりません。 例えば 1 メートルの半分を変換するには、`1|2 meter' と書きます。 もし `1/2 meter' と書くと、 units はそれを `0.5/meter' と解釈します。 換算できない単位型を指定すると、 units はそれに対応していない旨の メッセージを表示し、各単位の簡略形を示します。

        You have: ergs/hour
        You want: fathoms kg^2 / day
        conformability error
                2.7777778e-11 kg m^2 / sec^3
                2.1166667e-05 kg^2 m / sec

換算に必要な情報は、換算用データベースファイルから読み込まれます。 デフォルトのファイルには、よく用いられる単位のほとんど、 省略形、メートル法の接頭語、などの定義が含まれています。 以下のような自然定数もいくつか含まれています:

pi 円周率
c 光速
e 電子の電荷
g 重力加速度
force g と同じ
mole アボガドロ数
water 単位水柱の圧力
mercury 単位水銀柱の圧力
au 天文単位

`pound' (ポンド) は質量の単位です。 複合した単位名は連結して記述します。 `pound force' は力の単位です。 `ounce' (オンス) もまた質量の単位です。 液体のオンスは `floz' です。 英米で同じ単位の値が異なる場合、英国式単位の前に `br' を付けます。 通貨単位の場合には `belgiumfranc' や `britainpound' のように頭に国名を付けて区 別します。 単位を探す際に指定された文字列そのものが単位名として見つからない場合、 units は末尾の `s' や `es' を取り除いて再度チェックします。

どのような単位が利用可能か、については、標準の単位ファイルを参照して 下さい。 独自の単位を追加したいなら、独自のファイルを指定できます。 単位の指定は、1 行に名前とそれに相当する量を書きます。 新しい単位は古い単位に基づいて定義し、 単位を変換していくと `!' 印を付した原始単位にたどりつく ように注意してください。 不注意で単位定義に無限ループがあっても units はそれを検知しません。 単位定義ファイル中において `/' で始まる行はコメントです。

接頭語の定義も標準的な単位と同形式で行ないますが、 接頭語名の末尾にダッシュをつけます。 末尾の `s' や `es' を取り除いても、単位名として見つからない場合は、 接頭語かどうかがチェックされ、 接頭語を取り除くと有効な基本単位名となるかを調べます。

基本的な単位を定義する簡単な単位ファイルの例を以下に示します。

m !a!
sec !b!
micro- 1e-6
minute 60 sec
hour 60 min
inch 0.0254 m
ft 12 inches
mile 5280 ft

バグ
接頭語に `/' が含まれるとびっくりする結果を生みます。

ユーザが入力する累乗部分は 1 桁でなければなりません。 必要なら何度か掛け合わせて下さい。

数の除算には `|' を用い、シンボルの除算には `/' を用いなければなりませんが、 このような区別は不要にすべきです。

このプログラムは、換算した表示桁数の制限がばらばらですし、 データファイルの長さにも制限があります。

単位を格納するのにハッシュ表を用い、 単位表のロードと重複チェックの時間を軽減すべきです。

関連ファイル
/usr/share/misc/units.lib
    標準単位ライブラリ

作者
Adrian Mariano <adrian@cam.cornell.edu>