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

bc

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

bc



書式

       bc [ -hlwsqv ] [long-options] [  file ... ]


バージョン

       こ のマニュアルは GNU bc version 1.06 について記述してあり
       ます。


解説

       bc は、任意の精度の数値を扱う事ができ、プログラミング言 語
       C の文法によく似た形の入力を対話的に実行する言語です。コマ
       ンドラインのオプションの指定により、標準数学ライブラリを使
       用することもできます。これを指定した場合は、どのファイルを
       処理するよりも前に数学ライブラリが定義されます。 bc は動作
       を開始するとまず最初にコマンドラインで指定したファイルを順
       に処理します。すべてのファイルを処理した後は、bc は標準 入
       力からの読み込みを行います。すべてのコードは、それが読み込
       まれた時点で実行されていきます。(もし、ファイル中 に プ ロ
       セッサを止めるコマンドが含まれていた場合は、標準入力からの
       読み込みは行われません。)

       本バージョンの bc は、伝統的な bc の実装および POSIX の ド
       ラフト規格よりも拡張されています。コマンドラインオプション
       により、これらの拡張に対して警告を表示したり拒絶したりする
       ことが可能です。本ドキュメントでは、このプロセッサが受理す
       る言語について説明します。拡張機能についてはその旨明記しま
       す。

   B>オB>プB>シB>ョB>ン
       -h, --help
              使用方法を表示し、終了します。

       -i, --interactive
              対話モードを強制します。

       -l, --mathlib
              標準数学ライブラリを定義します。

       -w, --warn
              POSIX bc に対する拡張機能が入力された場合は警告を出
              します。

       -s, --standard
              POSIX bc の言語仕様に厳密に従って処理します。

       -q, --quiet
              GNU bc 導入メッセージを表示しません。

       -v, --version
              バージョン番号と著作権を表示して終了します。

   B>数
       bc における最も基本的な要素は `数' です。数は、整数部と 小
       す。すべてのアルファベットは小文字でなければなりません。 (
       ア ル ファ ベッ トと数字を使った名前の機能は拡張機能です。
       POSIX bc では、変数に英小文字 1 文字しか許されません。) 配
       列変数の名前には必ずブラケット ([]) がつくので、変数の型は
       文脈においてはっきりしています。

       特殊な変数として scale, ibase, obase, last の 4 つの変数が
       あ ります。 scale で計算時の小数点以下の有効桁数を指定しま
       す。 scale のデフォルトは 0 です。 ibaseobase で入力お
       よび出力の変換基数を指定します。デフォルトでは、入力、出力
       の基数は共に 10 です。 last は、最後に bc が出力した数を保
       持 しています (これは拡張機能です)。これらについては、後で
       適切なところで詳しく説明します。これらの変数には、式で使わ
       れる代入と同様の代入を行うことが可能です。

   B>コB>メB>ンB>ト
       bc は、/* から */ の間をコメントとして扱います。コメントは
       どこから始まっていてもよく、1 文字の空白として扱われます。
       ( これにより、コメントはその前後の入力アイテムを切り離しま
       す。たとえば、変数名の途中にコメントを置くことはでき ま せ
       ん。) コメントの中にはいくつ改行があってもかまいません。

       bc  をスクリプトとしても使えるようにするため、1 行コメント
       が拡張機能として追加されました。1 行コメントは #  で 始 ま
       り、次の改行まで有効です。その改行文字自体はコメントの一部
       とはみなされず、普通に処理されます。

   B>式
       `数' は、式および文によって操作されます。この言語は対話 的
       になるように設計されているため、文および式は可能な限り即座
       に実行されます。 "main" プログラムといったものはなく、その
       かわり、コードはそれに出くわした時点で実行されます。 (後で
       述べる`関数'は、それに出くわした時点で定義されます。)

       式の最も単純なものは、ただの定数です。bc は、入力された 定
       数 を、変数 ibase で指定される現在の基数を元に、内部的には
       10 進表現の数に変換します。(関数の場合には例外 が あ り ま
       す。) ibase には、2 から 16 までが使用できます。この範囲を
       越える値を ibase に代入しようとすると、 2 あるいは 16 を指
       定 したことになります。数の入力には、0-9 および A-F の文字
       が利用できます。(注意: これは大文字でなければなりませ ん。
       小 文字は変数名です。) 1 桁の数は ibase の値に関係なくその
       値を持ちます (すなわち A=10)。複数桁の数 の 場 合、bc   は
       ibase 以上の値をもつすべての入力桁を ibase-1に変更します。
       これにより、数 FFF は常に、その入力基数を使って 3 桁で表現
       可能な最大の値を表します。

       すべての演算式が、他の多くの高級言語に似たものとなっていま
       す。数の型は 1 種類しかないため、型変換の規則はあ り ま せ
       ん。そのかわり、式の有効桁数に関する規則があります。すべて
       の式に有効桁数があり、これはその被演算数の有効桁数と施され
       る 演 算、 そ れ に 多 くの場合、変数 scale から決定されま
       ++ var 変数を 1 だけインクリメントし、その新しい値が式の結
              果となります。

       -- var 変数を 1 だけデクリメントし、その新しい値が式の結果
              となります。

       var ++ 式の結果はその変数の値となり、それからその変数を  1
              だけインクリメントします。

       var --  式の結果はその変数の値となり、それからその変数を 1
              だけデクリメントします。

       expr + expr
              式の結果は 2 つの式の和となります。

       expr - expr
              式の結果は 2 つの式の差となります。

       expr * expr
              式の結果は 2 つの式の積となります。

       expr / expr
              式の結果は 2 つの式の商となります。結果の scale  は
              変数 scale の値となります。

       expr % expr
              結 果は、以下のようにして求められる剰余です。a%b を
              求めるために、まず a/b を scale の有効桁数で計算 し
              ま  す。  こ の 結 果 を 用 い て、a-(a/b)*b   を、
              scale+scale(b) と scale(a) の大きい方の有効桁数で計
              算 します。もし scale に 0 がセットされ、両方の式が
              整数であれば、整数の剰余が求められます。

       expr ^ expr
              式の結果は、1 番目の式の値を 2 番目の回数だけ乗じた
              ものになります。 2 番目の式は、整数でなければなりま
              せん。 (2 番目の式が整数でない場合は警告が 表 示 さ
              れ、 整 数 に 切 り詰めた値が使用されます。) 結果の
              scale は、べき指数が負なら scale になります。べき指
              数 が正なら、 "1 番目の式の scale とべき指数との積"
              および "scale と 1 番目の式の scale の大きい方"  の
              う  ち  の  小  さ い 方  ( つ ま り、scale(a^b)  =
              min(scale(a)*b, max( scale, scale(a)))) と な り ま
              す。 expr^0 は常に 1 を返します。

       ( expr )
              標準の優先度を使わずに、この式の評価を優先します。

       var = expr
              式の値が変数に代入されます。

       var <op>= expr
              expr1   が  expr2 より小さいか等しい場合 1 になりま
              す。

       expr1 > expr2
              expr1 が expr2 より大きい場合 1 になります。

       expr1 >= expr2
              expr1 が expr2 より大きいか等しい場合 1 に な り ま
              す。

       expr1 == expr2
              expr1 と expr2 が等しい場合 1 になります。

       expr1 != expr2
              expr1 と expr2 が等しくない場合 1 になります。

       論 理演算も使えます。(POSIX bc には論理演算はありません。)
       論理演算も関係演算と同様、結果は 0 か 1 (各々偽およ び 真)
       になります。論理演算子は以下の通り。

       !expr  expr が 0 なら 1 になります。

       expr && expr
              expr1  と expr2 が両方とも 0 でないなら、1 になりま
              す。

       expr || expr
              expr1 と expr2 のどちらか一方が 0 でないなら、1  に
              なります。

       各演算子の優先順位と結合規則は次の通りです。 (最初のものほ
       ど低く、後にいくほど高い優先順位で先に実行されます。)
              ||               (左から結合)
              &&               (左から結合)
              !                (結合せず)
              関係演算         (左から結合)
              代入演算         (右から結合)
              +  -             (左から結合)
              * / %            (左から結合)
              ^                (右から結合)
              - (単項マイナス) (結合せず)
              ++ --            (結合せず)

       この優先順位は、POSIX bc のプログラムがそのまま正しく動 く
       ように配慮して決められています。このため、関係演算と論理演
       算を代入文と共に用いた場合、通常とは異なる振る舞いを し ま
       す。次の例を考えてみましょう:
              a = 3 < 5

       C  プログラマのほとんどは、 ``3 < 5'' の関係演算が実行され
       た結果 (つまり 1) が変数 ``a'' に代入される、と考 え る で
       しょう。ところが bc では、まず 3 が変数 ``a'' に代入され、
              を読み取ります。データとプログラムの両方を標準入 力
              か ら与えるような場合には、問題を生じうることに注意
              して下さい。最良の方法は、ユーザからデータの入力 の
              必 要があるなら、プログラムはあらかじめ作っておき、
              標準入力からプログラムを入力しないようにすること で
              す。  read 関数の値は標準入力から読み込んだ数です。
              その際、変換基数として変数 ibase の現在の値が用いら
              れます。

       scale ( expression )
              expression の小数点以下の有効桁数を返します。

       sqrt ( expression )
              expression の平方根を返します。 expression に負の値
              を指定した場合は、ランタイムエラーになります。

   B>文
       文は (ほとんどの算術言語がそうであるように)、処理を順番 に
       実行していく単位です。 bc では文は「できるだけ早い段階で」
       実行されます。改行が入力された時点で、実行可能な文が存在し
       ていれば、即座に実行します。このため bc では改行が重要な役
       割を持っています。実際、セミコロンと改行が文の区切りとして
       使用されます。不適当な場所で改行を入力すると、文法エラーに
       なります。改行は文の区切りですが、バックスラッシュを用いて
       改 行を隠すことができます。 bc にとって、"\<nl>" (<nl>は改
       行) は改行ではなく空白に見えます。文のリストは、セミコロン
       と 改行で区切られた文の並びです。以下、bc の文の種類とその
       動作について説明します。 (なお、以下の説明で ([]) で括った
       部分は省略可能な項です。)

       演 算 式  演 算 式 には次の 2 つの種類があります。演算式が
              "<variable> <assignment> ..." で始まっていれば、 そ
              れ は代入文として扱われます。そうでなければ、演算式
              は評価されて出力に表示されます。結果が表示 さ れ た
              後、 改行が表示されます。例えば、"a=1" は代入文であ
              り、 "(a=1)" は代入文が埋め込まれた演算式です。表示
              される数値はすべて、変数 obase で決まる基数で表示さ
              れます。 obase に指定できる値は 2 から  BC_BASE_MAX
              までです。 (「制限」の章を参照。) 基数 2 から 16 ま
              ででは、通常の数表記法が用いられます。基数が 16  よ
              り大きい場合、bc は、各桁を 10 進表記する複数桁文字
              表記法で表示します。複数桁文字表記法では、各桁は 空
              白で区切られます。各桁は "obase-1" を 10 進で表記す
              るのに必要な桁数の数字から成ります。数の精度は任 意
              に選べるため、数によっては 1 行に表示できない場合も
              あります。そのような長い数は、行末に "\" を付けて次
              行に継続します。 1 行に表示できる文字数は 70 です。
              bc の対話的性質により、ある数を表示すると、表示した
              値 が特殊変数 last に代入されるという副作用が生じま
              す。ユーザはタイプし直すことなく最後に表示された 値
              を 再 利 用できます。 last に値を代入することも可能
              で、その場合、前回表示された値が代入値で上書きさ れ
              の順に表示されます。最後に改行は出力されません。 演
              算 式 は 評価され、その値が表示されるとともに、変数
              last に代入されます。 print 文中の文字列は出力に 表
              示 されますが、特殊文字を含めることができます。特殊
              文字はバックスラッシュ (\) で始まります。 bc で使え
              る 特 殊文字は、 "a" (ベル)、"b" (バックスペース)、
              "f" (フォームフィード)、"n" (改行)、"r" (復帰)、"q"
              ( 二 重引用符)、 "t" (タブ)、"\" (バックスラッシュ)
              です。これ以外は無視されます。

       { statement_list }
              複文です。複数の文を 1 つのグループにまとめて実行し
              ます。

       if ( expression ) statement1 [else statement2]
              if 文は演算式 expression を評価し、その値に応じて文
              statement1 または文 statement2  を 実 行 し ま す。
              expression  の値が 0 でなければ statement1 が実行さ
              れます。 statement2 が存在し、expression の値 が  0
              な らば、statement2 が実行されます。 (else 節は拡張
              機能です。)

       while ( expression ) statement
              while 文は expression が 0 でな い 間、 繰 り 返 し
              statement   を実行します。 statement の実行前に毎回
              expression を評価します。 expression の値が 0 に な
              るか、break 文を実行すると、ループが終了します。

       for  (  [expression1]  ;  [expression2]  ; [expression3] )
       statement
              for   文 は  statement の繰り返し実行を制御します。
              expression1 はループ実行の前 に 評 価 さ れ ま す。
              expression2 は statement の実行前に毎回評価され、そ
              の値が 0 でなければ statement が実 行 さ れ ま す。
              expression2 の値が 0 になると、ループは終了します。
              各 statement 実行の後、再び expression2 が評価さ れ
              る 前に expression3 が評価されます。 expression1 あ
              るいは expression3 が省略されていると、そこでは何も
              評 価 さ れ ません。 expression2 が省略されている場
              合、expression2 が 1 であるのと同様に扱われます。 (
              各  expression が省略可能なのは拡張機能です。 POSIX
              bc では、3 つの expression はどれも省略 で き ま せ
              ん。) 以下は for 文と等価なコードです:
              expression1;
              while (expression2) {
                 statement;
                 expression3;
              }

       break   それを含む最も内側の while もしくは for 文による繰
              り返しを強制的に中断します。

              ありません。

   B>疑B>似B>文
       これらは今までの文とは動作が異なります。疑似文は実行文では
       なく、「コンパイル」時点で処理されます。

       limits bc のローカルバージョンにより制限される限界値を表示
              します。 (limits は拡張機能です)

       quit   bc を終了します。どんな場所にあっても、quit 文は 入
              力 さ れ た時点で実行されます。例えば、 "if  (0  ==
              1)  quit" という記述であっても、bc は終了します。

       warranty
              保証に関する注意を長めに表示します。 (warranty は拡
              張機能です)

   B>関B>数
       関 数は、後で実行されるべき計算手順を定義する機能です。 bc
       の関数は常に値を計算し、それを呼びだし側に返します。関数定
       義は、それが入力から読み込まれた時点で定義が行われるという
       点で「ダイナミック(動的)」です。一度定義された関数は、同じ
       名前で別の関数が定義されるまで使用可能で、新しい関数が定義
       された場合は、前の関数が置き換えられます。関数の定義は、以
       下のように行います:
              define name ( parameters ) { newline
                  auto_list   statement_list }
       関 数 呼び出しは、 "name(parameters)" という形式の演算式で
       す。

       パラメータ parameters は数あるいは配列 (拡張機能) です。関
       数 定義では、0 あるいは 1 個以上のパラメータ名をコンマで区
       切って並べることで定義します。数は値渡し(call by value) で
       のみ渡され、配列は変数渡し(call by variable)でのみ渡されま
       す。配列はパラメータ定義中で "name[]" のように表記して指定
       します。関数呼び出しでは、数のパラメータに対して完全な演算
       式の実パラメータを記述します。配列を渡す表記は配列パラメー
       タ定義と同様です。名前付き配列は変数(variable)によって関数
       に渡されます。関数定義はダイナミックゆえ、パラメータの数と
       型は関数呼び出しの際にチェックされます。パラメータの数ある
       いは型に何らかの不整合があると、ランタイムエラーが発生しま
       す。 未 定義関数を呼び出した場合もランタイムエラーとなりま
       す。

       auto_list は省略可能で、ローカル変数として使用する変数のリ
       ストです。auto_list が存在するなら、その文法は "auto name,
       ... ;" となります。(セミコロンは省略可能です。) 各 name が
       ローカル変数の名前となります。配列はパラメータと同様の表記
       で指定できます。これらの変数は、関数の最初でその値がスタッ
       ク にプッシュされたのち値 0 に初期化され、関数の実行中に使
       用されます。これらの変数は関数出口にてポップされ、 (関数呼
       び 出し時の)元の値が復元されます。パラメータは実際にはロー
       を計算し、それを呼び出し元に返します。各関数の 最 後 に は
       "return  (0)" があるものと解釈されます。これにより、明示的
       に return 文を置かなくても、関数は終了して値 0 を 返 し ま
       す。

       関 数の中では、変数 ibase の動作が変わります。関数の中で使
       われている定数は、関数の呼びだし時点の ibase を元に変換 が
       行 われます。このため、関数内部で ibase を変更しても無視さ
       れます。ただし、標準関数 read を呼び出した場合は例外で、こ
       れは常に現在の ibase の値をもとに変換が行われます。

       拡張機能ですが、定義の書式が若干緩やかになりました。標準で
       は、開くブレースが define キーワードと同じ行にあることと、
       他 の 部分が引き続く行にあることが必須です。本バージョンの
       bc では、関数の開くブレースの前後の改行数は任意です。例 え
       ば、次の定義は合法です。

              define d (n) { return (2*n); }
              define d (n)
                { return (2*n); }


   B>数B>学B>ラB>イB>ブB>ラB>リ
       bc-l オプションを付けて起動した場合は、数学ライブラリ
       が読み込まれ、デフォルトの scale が 20 に設定されます。 数
       学 関数は、それを呼び出した時点の scale の値に従って計算を
       行います。数学ライブラリによって使用可能になる関数は、次の
       通りです:

       s (x)  sin (x の単位はラジアン)

       c (x)  cos (x の単位はラジアン)

       a (x)  atan (返り値の単位はラジアン)

       l (x)  log (自然対数)

       e (x)  exp (指数関数)

       j (n,x)
              整数 n 次のベッセル関数

   B>使B>用B>例
       次の例は、/bin/sh でシェル変数 pi に ``パイ'' の値を代入し
       ます。

              pi=$(echo "scale=10; 4*a(1)" | bc -l)


       次の例は、数学ライブラリで使われている ``e (x)'' の定義 で
       す。この関数は POSIX bc で記述されています。

                }

                /* Precondition x. */
                z = scale;
                scale = 4 + z + .44*x;
                while (x > 1) {
                  f += 1;
                  x /= 2;
                }

                /* Initialize the variables. */
                v = 1+x
                a = x
                d = 1

                for (i=2; 1; i++) {
                  e = (a *= x) / (d *= i)
                  if (e == 0) {
                    if (f>0) while (f--)  v = v*v;
                    scale = z
                    if (m) return (1/v);
                    return (v/1);
                  }
                  v += e
                }
              }


       次 の例は、bc の拡張機能を使って、``checkbook balances'' (
       小切手帳残高) を計算する簡単なプログラムです。このプログラ
       ムをファイルにしておくと、毎回タイプしなおさずに何度も使う
       ことができます。

              scale=2
              print "\nCheck book program!\n"
              print "  Remember, deposits are negative transactions.\n"
              print "  Exit by a 0 transaction.\n\n"

              print "Initial balance? "; bal = read()
              bal /= 1
              print "\n"
              while (1) {
                "current balance = "; bal
                "transaction? "; trans = read()
                if (trans == 0) break;
                bal -= trans
                bal /= 1
              }
              quit


       次の例は、再帰呼び出しにより階乗を計算する関数です。
       の数を指定します。 readline では、その値が -1 (デフォル ト
       値) なら、ヒストリ行は制限なく保存されます。正の数を指定す
       ると、ヒストリ行がその数に制限されます。 0 ならヒストリ 機
       能 が無効になります。デフォルト値は 100 です。詳しくは、ユ
       ーザマニュアルの GNU readlinehistory ライブラリと  BSD
       libedit  をご覧下さい。 readlinelibedit の両方を同時に
       有効化できません。

   B>相B>違I</I>点
       このバージョンの bc は POSIX P1003.2/D11 ドラフトから実 装
       されており、そのドラフトや以前の実装に比べていくつかの相違
       点や拡張点があります。伝統的に行われていたような dc(1)  を
       用いた実装ではありません。このバージョンは単一プロセスであ
       り、プログラムをバイトコードに変換したものを解析して実行し
       ます。「ドキュメントに記載されていない」オプション (-c) が
       あり、プログラムを実行する代わりに、それをバイトコードに変
       換した結果を標準出力に出力します。これは主として、パーザの
       デバッグと数学ライブラリの準備に用いられました。

       主な相違点は拡張機能によるものです。機能を高めたり追加した
       りするために機能が拡張されたり、新機能が追加されたりしてい
       ます。相違点と拡張点のリストを以下に示します。

       LANG   このバージョンは、環境変数 LANG および LC_ で始まる
              すべての環境変数の処理に関して POSIX 標準に準拠して
              いません。

       名前   伝統的な bc および POSIX bc は、関数、変数、配列 の
              名 前 と して単一の文字を使います。このバージョンで
              は、先頭が文字で始まり、文字と数字とアンダースコ ア
              で構成される 2 文字以上の名前が使えるように拡張され
              ています。

       文字列 文字列には NUL 文字を含むことはできませ ん。  POSIX
              で は、文字列にはあらゆる文字を含めることができなけ
              ればならない、としています。

       last   POSIX bc には変数 last はありません。 bc の実 装 に
              よっ ては、last と同じ意味でピリオド (.) を用いるも
              のがあります。

       比較   POSIX bc では、比較は if 文、while 文、for 文の第 2
              式 の中でのみ用いることができます。また、これらの文
              の中ではただ 1 つの関係演算しか使えません。

       if 文, else 節
              POSIX bc には else 節はありません。

       for 文 POSIX bc では for 文の各演算式は省略できません。

       &&, ||, !
              POSIX bc には論理演算子はありません。
              POSIX bc では (現在のところ) 配列パラメータは完全に
              は使えません。 POSIX の文法では、関数定義では配列を
              使えますが、実際に呼び出すときのパラメータに配列 を
              指定することができません。(これはおそらく、文法上の
              見落としでしょう。) 伝統的な bc の実装では、配列 パ
              ラメータは値渡しのみでした。

       function format
              POSIX bc では、開くブレースが define キーワードと同
              じ行にあり、 auto 文が次の行にあることが必要です。

       =+, =-, =*, =/, =%, =^
              POSIX bc ではこれらの「旧式」の代入演算子を定義する
              必 要 は ありません。このバージョンではこれらの「旧
              式」代入演算子が使えるかも知れません。 limits 文 を
              使っ て、インストールしたバージョンがこれらをサポー
              トしているかどうか、確かめてみて下さい。もしその バ
              ー ジョンが「旧式」代入演算子をサポートしていれば、
              文 "a =- 1" は a に値 -1 を代入する代わりに a を  1
              減じます。

       数字表記中の空白
              他 の bc 実装では、数字表記の中に空白を含めることが
              許されます。例えば、"x=1 3" は変数 x に値 13 を代入
              し ます。このバージョンの bc では、先の文は文法エラ
              ーになります。

       エラーと実行
              このバージョンの bc は、プログラムに文法上のエラ ー
              や 他のエラーが見つかった場合にどういうコードが実行
              されるか、という点で、他の実装と異なっています。 あ
              る 関数定義中で文法エラーが見つかると、エラー回復機
              構は文の先頭を見つけて関数のパーズを続けようと努 力
              し ます。ひとたび関数の中で文法エラーが見つかると、
              その関数は呼び出せなくなり、未定義状態となりま す。
              対 話的実行コードで文法エラーがあると、現在の実行ブ
              ロックが無効になります。実行ブロックとは、ひと続 き
              の 完全な文のあとの行末までのことです。例えば、次の
              コード
              a = 1
              b = 2
       には 2 つの実行ブロックがあり、
              { a = 1
                b = 2 }
       には 1 つの実行ブロックがあります。ランタイムエラーが発 生
       すると、現在の実行ブロックの実行が終了します。ランタイムの
       警告が発生しても、現在の実行ブロックは終了しません。

       割り込み
              対話セッションの間、SIGINT シグナル (通常、端末から
              の Control-C 入力で発生します) によって現在の実行ブ
              ロックの実行が中断され、どの関数が中断されたかを 示

       BC_BASE_MAX
              現在のところ、出力の基数の最大値は 999 に設定されて
              います。入力側の基数の最大値は 16 です。

       BC_DIM_MAX
              現在のところ 65535 として配布されていますが、インス
              ト ー ル したバージョンでは異なっているかも知れませ
              ん。

       BC_SCALE_MAX
              小数点以下の桁数は INT_MAX 桁に制限されています。ま
              た、小数点より上の桁数も INT_MAX 桁に制限されていま
              す。

       BC_STRING_MAX
              文字列中の文字数は INT_MAX 文字に制限されています。

       指数   累乗演算 (^) の指数の値は LONG_MAX に制限されていま
              す。

       変数名 単純変数、配列、関数各々について、一意に識別され る
              名前は 32767 個に制限されています。


環境変数

       bc は以下の環境変数を解釈します。

       POSIXLY_CORRECT
              -s オプションと同じです。

       BC_ENV_ARGS
              こ れは bc に引数を渡す別の方法で、コマンドライン引
              き数と同じ書式です。この引数が最初に処理さ れ る の
              で、 この環境変数で指定されたファイルはコマンドライ
              ン引数で指定されたファイルよりも先に処理されま す。
              こ れにより、毎回 bc を呼び出すごとに処理する「標準
              の」オプションやファイルを設定できます。この環境 変
              数で指定するファイルには、bc を走らせるたびに定義し
              ておきたいような関数の定義を書いておくとよいで しょ
              う。

       BC_LINE_LENGTH
              数 字 を出力するときの 1 行の文字数を整数で指定しま
              す。数字が長過ぎると、バックスラッシュと改行を含 め
              た出力となります。


診断

       コ マ ンドラインで指定したファイルがオープンできない場合、
       bc はファイルが利用できない旨を表示して終了します。ま た、
       コ ン パイル時あるいはランタイムの診断メッセージもあります
       が、それらは自身で理解できるようになっているはずです。

       意見をもらいました。彼のおかげでとてもよいものになり ま し
       た。



                                .                           bc(1)

ABELNET VPSサービス