dc(1) FreeBSD 一般コマンドマニュアル

dc

前のページ 上に戻る 次のページ

dc



書式

       dc [-V] [--version] [-h] [--help]
          [-e scriptexpression] [--expression=scriptexpression]
          [-f scriptfile] [--file=scriptfile]
          [file ...]


解説

       dc  は、逆ポーランド形式の無限精度の計算が行える卓上計算機
       です。この電卓は、定義やマクロ呼び出しも行えます。普通、dc
       は標準入力から読み込みます。コマンドライン引数が与えられた
       時は、それはファイル名となり、 dc はそのファイルを読 み 込
       み、ファイルの内容を実行した後で、標準入力から入力を取りま
       す。通常の出力はすべて標準出力へ、エラー出力はすべて標準エ
       ラー出力へ送られます。

       逆ポーランド記法計算機は、数をスタックに保存します。数字を
       入力すると、それをスタックに積み上げます。計算操作は、引数
       をスタックから取り出し、結果をスタックに積み上げます。

       数字を dc に入力するためには、数字 (小数点が有っても構いま
       せん) を入力します。指数表現はサポートされていません。負の
       数 字 を入力するためには、``_'' で始まる数字を入力します。
       ``-'' は減算の二項演算子として使われているので、このために
       利 用することはできません。引き続いて 2 つの数字を入力する
       ためには、あいだに空白文字か改行文字を入力します。こ れ ら
       は、コマンドとしての意味はありません。


オプション

       dc は、次のコマンドラインオプション付きで起動可能です:

       -V

       --version
              実 行される dc のバージョンと著作権情報を表示し、終
              了します。

       -h

       --help これらのコマンドラインオプションを短くまとめた メッ
              セージとバグ報告アドレスを表示し、終了します。

       -e script

       --expression=script
              script 中のコマンドを、入力処理中に実行するコマンド
              集合に追加します。

       -f script-file


       --file=script-file
              ファイル script-file 中のコマンドを、入力処理中に実

       P       スタックの先頭の値をスタックから取り出します。値が
              文字列の場合、末尾の改行を付けずに、単に表 示 し ま
              す。 そうでない場合、これは数値であり、数値の絶対値
              の整数部分が、 "基数 (UCHAR_MAX+1)" のバイトスト リ
              ームとして表示されます。ここで (UCHAR_MAX+1) は 256
              を仮定すると (ほとんどのマシンでは 8 ビットバイトな
              の  で)、  文  字  列   KSK   0k1/   [_1*]sx   d0>x
              [256~aPd0<x]dsxx sxLKk もまたこの機能を実現し ま す
              が、 x レジスタを潰してしまう副作用が違います。

       f       変更することなく、スタックの内容全部を表示します。
              これは、忘れてしまった時に使ったり、あるコマンド が
              ど のような効果をもたらすのかを知りたい時には、良い
              コマンドです。


計算

       +      2 つの値をスタックから取り出し、加算を行い、結果 を
              ス タックに積みます。結果の精度は、引数の値にだけに
              よって決まり、十分正確です。

       -      2 つの値を取り出し、最初に取り出した値を 2 番目に取
              り 出した値から引きます。その後、結果をスタックに積
              みます。

       *      2 つの値を取り出し、かけ算を行い、結果をスタック に
              積 みます。結果の小数の桁数は、現在の精度値 (以下参
              照) と 2 つの引数の小数の桁数に依存します。

       /      2 つの値を取り出し、2 番目に取り出した値を最初に 取
              り 出した値で割り、結果をスタックに積みます。小数の
              桁数は、精度値によって指定されます。

       %      2 つの値を取り出し、 / で計算された割算の余りを計算
              し、 結果をスタックに積みます。計算される値は、文字
              列 Sd dld/ Ld*- で計算される値と同じです。

       ~      2 つの値を取り出し、2 番目に取り出した値を最初に 取
              り 出した値で割り、その商を先にスタックに積み、続い
              て余りを積みます。割算に使われる小数の桁数は、精 度
              値 によって指定されます。 (エラーチェック機構はわず
              かに異なりますが、文字列 SdSn lnld/ LnLd% もこの 機
              能と同様に働くでしょう。)

       ^      2  つの値を取り出し、最初に取り出した値を指数とし、
              2 つめの値を底として指数計算します。指数の小数点 以
              下 は無視されます。精度値は、結果の小数の桁数を指定
              します。

       |      3 つの値を取り出し、べき剰余  (modular  exponentia-
              tion)  を計算します。最初に取り出した値は法 (reduc-
              tion modulus) (この値は 0 以外の整数でなくてはい け

       数値の結果を出すことを意味しています。


スタックの制御

       c      スタックを消去し、空にします。

       d       スタック先頭の値を複製し、スタックに積みます。した
              がって、``4d*p'' は 4 の自乗を計算し、表示します。

       r      スタック先頭の値と 2 番目の値の順番を入 れ 換 え ま
              す。(交換します。)


レジスタ

       dc は、少なくとも 256 個のメモリレジスタを持っています。各
       レジスタは、1 文字の名前を持っています。数字や文字列をレジ
       スタに保存し、後で取り出すことができます。

       sr     スタックの先頭から値を取り出し、レジスタ r に保存し
              ます。

       lr     レジスタ r の値を複製し、それをスタックに積みます。
              これは、 r の内容を変更しません。

       各レジスタは、それ自身のスタックを持っています。現在のレジ
       スタ値は、レジスタスタックの先頭です。

       Sr     (メイン) スタックの先頭の値を取り出し、レジス タ  r
              の スタックにそれを積みます。レジスタの以前の値は、
              アクセスできなくなります。

       Lr     レジスタ r のスタックの先頭の値を取り出し、それをメ
              インスタックに積みます。レジスタ r のスタックにあっ
              た以前の値がもしあれば、 lr コマンドを使ってアク セ
              ス可能となります。


パラメータ

       dc は、その操作を制御するための 3 つのパラメータを持ってい
       ます: 精度と、入力の基数、出力の基数です。精度は、ほとんど
       の算術操作の結果で保存される小数の桁数を指定します。入力の
       基数は、入力された数字の解釈を制御します。入力されたすべて
       の数字はこの基数をつかっているとされます。出力の基数は、表
       示する数字で使われます。

       入力と出力の基数は、分離されたパラメータです。等しく設定し
       なくてもいいですが、これは便利だったり紛らわしかったりしま
       す。入力の基数は 2 から 16 の範囲でなければなりません。 出
       力の基数は最低 2 でなければなりません。精度は 0 以上でなけ
       ればなりません。精度は、現在の入力基数や出力基数に関 係 な
       く、いつも 10 進の桁数で決められます。

       i       スタックの先頭から値を取り出し、入力基数を設定する
              ために使います。

       できる唯一のことは、それを表示し、マクロとして実行すること
       です。マクロとは、dc コマンドとして実行される文字列の内 容
       のことです。すべてのレジスタとスタックは文字列を保存できま
       す。そして、dc はいつも、与えられたデータが文字列か数字 か
       を知っています。算術操作のようないくつかのコマンドは、数を
       必要としており、文字列が与えられた場合はエラーが表示されま
       す。 他 のコマンドは、数字か文字列を受け入れることができま
       す。例えば、 p コマンドは、両方を受け付けることができ、 デ
       ータをその型に応じて表示します。

       [characters]
              ( 左 右の釣合のとれた、 [] で囲まれた ) charac-
              ters という文字列を作り、それをスタックに積みます。
              例えば、 [foo]P は文字列 foo を表示します (が、改行
              文字は表示しません)。

       a      スタック先頭の値を取り出し、それが数字なら、その 低
              位 バイトを文字列に変換し、スタックに積みます。文字
              列なら、その最初の文字がスタックに積み戻されます。

       x      スタックから値を取り出し、マクロとして実行しま す。
              普 通、これは文字列です。数の場合は、単純にその値が
              スタックに積み戻されます。例えば、 [1p]x は、マクロ
              1p  を実行します。 1p は、 1 をスタックに積み、別の
              行に 1 を表示します。

       マクロは、しばしばレジスタにも保存されます。 [1p]sa は、 1
       を表示するためのマクロをレジスタ a に保存します。 lax でこ
       のマクロは実行できます。

       >r     スタックから 2 つの値を取り出し、それらを数と仮定し
              て 比較し、もともとのスタックの先頭が大きい場合、レ
              ジスタ r の内容を実行します。した がっ て、  1  2>a
              は、 レジスタ a の内容を実行しますが、 2 1>a では実
              行しません。

       !>r    似ていますが、もともとのスタックの戦闘が 2 番目の値
              よりも大きくない場合 (2 番目の値以下である場合)、マ
              クロを起動します。

       <r     似ていますが、もともとのスタックの先頭が小さい場 合
              にマクロを実行します。

       !<r    似ていますが、もともとのスタックの戦闘が 2 番目の値
              よりも小さくない場合 (2 番目の値以上である場合)、マ
              クロを起動します。

       =r      似ていますが、2 つの取り出された値が等しい場合にマ
              クロが実行されます。

       !=r    似ていますが、2 つの取り出された値が等しくない場 合
              にマクロが実行されます。


状態の問い合わせ

       Z      スタックから値を取り出し、その桁数 (文字列 の 場 合
              は、文字数) を計算し、その値をスタックに積みます。

       X       スタックから値を取り出し、その小数点以下の桁数を計
              算し、その値をスタックに積みます。文字列の場合、 ス
              タックには 0 が積まれます。

       z       現在のスタックの深さを、スタックに積みます。スタッ
              クの深さとは、 z コマンドが実行される前のスタックの
              データ数です。


その他のさまざまなこと

       !       行の末尾までををシステムコマンドとして実行します (
              シェルエスケープ) 。コマンド !<, !=, !> のパーズ が
              優 先しますので、<, =, > で開始するコマンドを起動し
              たい場合には、! の後に空白を加える必要があります。

       #      行の末尾までをコメントとして取り扱います。

       :r     スタックから 2 つの値を取り出します。スタックの先頭
              だった値で配列 r をインデックスし、スタックの先頭か
              ら 2 番目だった値をそこに保存します。

       ;r     スタックから値を取り出し、配列 r のインデックスとし
              て 利用します。配列から選ばれた値は、その後でスタッ
              クに積まれます。


バグ

       バグ報告は、 bug-dc@gnu.org に電子メールでお願いします。単
       語 ``dc'' を ``Subject:'' フィールドのどこかに入れておいて
       ください。




GNU Project                 1997-03-25                      DC(1)

ABELNET VPSサービス