'\" te .\" Copyright 1989 AT&T Copyright (c) 2003, Sun Microsystems, Inc. All Rights Reserved Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation.Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html. This notice shall appear on any product containing this material. .TH bc 1 "2003 年 8 月 29 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 bc \- 任意精度の演算言語 .SH 形式 .LP .nf \fB/usr/bin/bc\fR [\fB-c\fR] [\fB-l\fR] [\fIfile\fR]... .fi .LP .nf \fB/usr/xpg6/bin/bc\fR [\fB-c\fR] [\fB-l\fR] [\fIfile\fR]... .fi .SH 機能説明 .sp .LP \fBbc\fR ユーティリティーは、任意精度の電卓を実装します。指定された任意のファイルから入力を受け取ったあと、標準入力から読み取ります。\fBbc\fR の標準入力と標準出力が端末に接続されている場合、\fBbc\fR の呼び出しは\fI対話型\fRになり、以降のセクションで説明されている動作上の制約を受けます。\fBbc\fR は C に似た言語を処理し、\fB-c\fR オプションが指定されていないかぎりは自動的に呼び出す電卓機能プログラム \fBdc\fR のプリプロセッサです。この場合は、\fBdc\fR の入力が代わりに標準出力に送信されます。 .SH 使用法 .sp .LP \fBbc\fR プログラムの構文は次のとおりです。 .sp .ne 2 .mk .na \fB\fIL\fR\fR .ad .RS 5n .rt \fBa\fR - \fBz\fR の文字を示します。 .RE .sp .ne 2 .mk .na \fB\fIE\fR\fR .ad .RS 5n .rt 式を示します。(数学的または論理的な) 値、値を取るオペランド、または値に評価されるオペランドと演算子の組み合わせです。 .RE .sp .ne 2 .mk .na \fB\fIS\fR\fR .ad .RS 5n .rt 文を示します。 .RE .SS "Comments" .sp .LP \fB/*\fR と \fB*/\fR で囲まれます。 .SS "名前 (オペランド)" .br .in +2 単純変数: \fIL\fR。 .in -2 .br .in +2 配列要素: \fIL\fR [ \fIE\fR ] (最大 \fBBC_DIM_MAX\fR 次元)。 .in -2 .br .in +2 単語 \fBibase\fR、\fBobase\fR (\fBBC_BASE_MAX\fR に制限される)、および \fBscale\fR (\fBBC_SCALE_MAX\fR に制限される)。 .in -2 .SS "その他のオペランド" .sp .LP オプションの符号と小数点が付いた任意の長さの数字。二重引用符 (") で囲まれた \fBBC_STRING_MAX\fR 文字未満の文字列。\fB(\fR \fIE\fR \fB)\fR .sp .ne 2 .mk .na \fB\fBsqrt ( \fR\fIE\fR\fB )\fR\fR .ad .RS 21n .rt 平方根 .RE .sp .ne 2 .mk .na \fB\fBlength ( \fR\fIE\fR\fB )\fR\fR .ad .RS 21n .rt 10 進数の有効桁数。 .RE .sp .ne 2 .mk .na \fB\fBscale ( \fR\fIE\fR\fB )\fR\fR .ad .RS 21n .rt 小数点の右側の桁数。 .RE .sp .ne 2 .mk .na \fB\fIL \fR\fB( \fR\fIE\fR , ... , \fIE\fR\fB )\fR\fR .ad .RS 21n .rt .RE .SS "演算子" .sp .ne 2 .mk .na \fB\fB+ - * / % ^\fR\fR .ad .RS 23n .rt (\fB%\fR は剰余、\fB^\fR はべき乗) .RE .sp .ne 2 .mk .na \fB\fB++ -- \fR\fR .ad .RS 23n .rt (接頭辞と後置、名前に適用される) .RE .sp .ne 2 .mk .na \fB\fB== <= >= != < >\fR\fR .ad .RS 23n .rt .RE .sp .ne 2 .mk .na \fB\fB= =+ =- =* =/ =% =^\fR\fR .ad .RS 23n .rt .RE .SS "文" .br .in +2 \fIE\fR .in -2 .br .in +2 \fB{\fR \fIS\fR \fB;\fR. . . \fB;\fR \fIS\fR \fB}\fR .in -2 .br .in +2 \fBif (\fR \fIE\fR \fB)\fR \fIS\fR .in -2 .br .in +2 \fBwhile (\fR \fIE\fR \fB)\fR \fIS\fR .in -2 .br .in +2 \fBfor (\fR \fIE\fR \fB;\fR \fIE\fR \fB;\fR \fIE\fR \fB)\fR \fIS\fR .in -2 .br .in +2 NULL 文 .in -2 .br .in +2 \fBbreak\fR .in -2 .br .in +2 \fBquit\fR .in -2 .sp .LP \&.string .SS "関数定義" .br .in +2 \fBdefine\fR \fIL\fR \fB(\fR \fIL\fR \fB,\fR. . . \fB,\fR \fIL\fR \fB) {\fR .in -2 .br .in +2 \fB auto\fR \fIL\fR \fB,\fR. . . \fB,\fR \fIL\fR .in -2 .br .in +2 \fI S\fR \fB;\fR. . .\fIS\fR .in -2 .br .in +2 \fB return (\fR \fIE\fR \fB)\fR .in -2 .br .in +2 \fB}\fR .in -2 .SS "\fB-l\fR 数学ライブラリ内の関数" .sp .ne 2 .mk .na \fB\fBs(\fR\fIx\fR\fB)\fR\fR .ad .RS 10n .rt 正弦 .RE .sp .ne 2 .mk .na \fB\fBc(\fR\fIx\fR\fB)\fR\fR .ad .RS 10n .rt 余弦 .RE .sp .ne 2 .mk .na \fB\fBe(\fR\fIx\fR\fB)\fR\fR .ad .RS 10n .rt 指数 .RE .sp .ne 2 .mk .na \fB\fBl(\fR\fIx\fR\fB)\fR\fR .ad .RS 10n .rt 対数 .RE .sp .ne 2 .mk .na \fB\fBa(\fR\fIx\fR\fB)\fR\fR .ad .RS 10n .rt 逆正接 .RE .sp .ne 2 .mk .na \fB\fBj(\fR\fIn\fR\fB,\fR\fIx)\fR\fR .ad .RS 10n .rt ベッセル関数 .RE .sp .LP 関数の引数はすべて、値で渡されます。 .sp .LP 式である文の値は、主演算子が代入演算子でないかぎり出力されます。文は、セミコロンまたは復帰改行のどちらかで区切ることができます。\fBscale\fR への代入は、\fBdc\fR の方法の算術演算で保持される桁数に影響を与えます。\fBibase\fR または \fBobase\fR への代入によって、それぞれ入力と出力の基数が設定されます。 .sp .LP 同じ文字を配列、関数、および単純変数として同時に使用できます。変数はすべて、プログラムに対してグローバルです。\fBauto\fR 変数は、関数呼び出し中にスタックされます。配列を関数の引数として使用するか、または自動変数として定義する場合は、配列名のあとに空の角括弧を付ける必要があります。 .SH オプション .sp .LP 次のオペランドがサポートされています。 .sp .ne 2 .mk .na \fB\fB-c\fR\fR .ad .RS 6n .rt コンパイルのみを実行します。出力は、標準出力に送信される \fBdc\fR コマンドです。 .RE .SS "/usr/bin/bc" .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .RS 6n .rt 数学関数を定義し、\fBscale\fR をデフォルトの 0 ではなく \fB20\fR に初期化します。 .RE .SS "/usr/xpg6/bin/bc" .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .RS 6n .rt 数学関数を定義し、\fBscale\fR をデフォルトの 0 ではなく \fB20\fR に初期化します。数学の結果はすべて、スケールが \fB20\fR になります。 .RE .SH オペランド .sp .LP 次のオペランドがサポートされています。 .sp .ne 2 .mk .na \fB\fIfile\fR\fR .ad .RS 8n .rt \fBbc\fR プログラムの文を含むテキストファイルのパス名。すべての \fIfile\fR が読み取られたあと、\fBbc\fR は標準入力を読み取ります。 .RE .SH 使用例 .LP \fB例 1 \fR変数の精度の設定 .sp .LP シェルでは、次のようにして、\fBn\fR の最初の 10 桁の近似が変数 \fIx\fR に代入されます。 .sp .in +2 .nf \fBx=$(printf "%s\en" 'scale = 10; 104348/33215' | bc)\fR .fi .in -2 .sp .LP \fB例 2 \fR計算関数の定義 .sp .LP 指数関数の近似値を計算する関数を定義します。 .sp .in +2 .nf \fBscale = 20 define e(x){ auto a, b, c, i, s a = 1 b = 1 s = 1 for(i=1; 1==1; i++){ a = a*x b = b*i c = a/b if(c == 0) return(s) s = s+c } }\fR .fi .in -2 .sp .LP \fB例 3 \fR関数の近似値の出力 .sp .LP 最初の 10 個の整数の指数関数の近似値を出力します。 .sp .in +2 .nf \fBfor(i=1; i<=10; i++) e(i)\fR .fi .in -2 .sp .sp .LP または .sp .in +2 .nf \fBfor (i = 1; i <= 10; ++i) { e(i) }\fR .fi .in -2 .sp .SH 環境 .sp .LP \fBbc\fR の実行に影響を与える次の環境変数についての詳細は、\fBenviron\fR(5) を参照してください。\fBLANG\fR、\fBLC_ALL\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR、および \fBNLSPATH\fR。 .SH 終了ステータス .sp .LP 次の終了ステータスが返されます。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 16n .rt 指定されたファイルはすべて正常に処理されました。 .RE .sp .ne 2 .mk .na \fB\fB指定なし\fR\fR .ad .RS 16n .rt エラーが発生した。 .RE .SH ファイル .sp .ne 2 .mk .na \fB\fB/usr/lib/lib.b\fR\fR .ad .RS 25n .rt 数学ライブラリ .RE .sp .ne 2 .mk .na \fB\fB/usr/include/limits.h\fR\fR .ad .RS 25n .rt BC_ パラメータを定義 .RE .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os _ インタフェースの安定性確実 _ 標準T{ \fBstandards\fR(5) を参照してください。 T} .TE .SH 関連項目 .sp .LP \fBdc\fR(1), \fBawk\fR(1), \fBattributes\fR(5), \fBenviron\fR(5), \fBstandards\fR(5) .SH 注意事項 .sp .LP \fBbc\fR コマンドは、論理演算子 \fB&&\fR および \fB| |\fR を認識しません。 .sp .LP \fBfor\fR 文には、3 つの式 (\fIE\fR) のすべてが必要です。