
			Oleo の使い方

  この文書はOleoについての簡単な記述です。一般的なスプレッドシートへの導入とし
ては適切ではありません。我々は将来、より完全な文書を提供したいと思っています。

		セルの参照:

  セルや範囲では大文字小文字は区別されません、セルや範囲で小文字を称した場合、
大文字に変換されます。

	絶対参照 vs 相対参照

セルに対する参照は、絶対的にも相対的にも行えます。この2つの間の違いは、(beside 
how they are printed) セルを移動またはコピーしたときにどのように修正されるかだ
けです。

絶対参照を含んでいる式が、コピーまたは移動されたとき、参照は元と同じセルを示し
ています。
相対参照を含んでいる式が、コピーまたは移動されたとき、参照は新しいセルから同じ
オフセットのセルを示すように変更されます。

したがって、R8C9のセルに'R[+1]C[+1]'という式があった場合、この式はR9C10 のセル
を参照します。もし、同じ式がR1C1のセルにコピーされた場合、その式はR2C2を示すよ
うになります。

	アドレス表記法:

Oleo はセルの位置を表記するのに`ao'と`noa0'の二種類の記法をサポートしています。
これらの表記法を切替えるためには、set-option コマンドを使用します。

	M-x set-option a0
	M-x set-option no a0

	'noa0' モード: (デフォルト)

絶対アドレス参照はR1C1のようにR{行番号}C{列番号}の形式を持ちます。(R1C1は表の左
上のセルを示します)

相対アドレス参照はR[-1]C[+1]のようにR[{オフセット}]C[{オフセット}]の形式を持ち
ます。(これは、現在のセルの一つ上の列の一つ右のセルを示します)

混合モード参照もあなたが期待しているとおり使用できます。例えば、R4C[-1] は4列目
で現在のセルの一つ左側のセルになります。

範囲は R{行1}:{行2}C{列1}:{列2}の形式になります。行と列には、絶対参照、相対参照
のどちらも使用できます。もし{行2}=={行1} または、{列2}=={列1}ならば、コロンと重
複する二つ目の値は省略できます。例えば R1:10c2 は2列目の1行目から10行目を示しま
す。

混合モードもR2:[-1]c3 のように指定できます。

	'a0' モード:

相対アドレス参照は A1 のように{列文字}{行番号}の形式になります。
( A1 は一つ右下のセルを示します)

絶対アドレス参照は $A$1 のように${列文字}${行番号}の形式になります。
( $A$1 は表の左上のセルを示します)

混合モードも同様です。$A1は絶対指定された列と相対指定された行を持ちます。

範囲は {セル参照}:{セル参照}または{セル参照}.{セル参照}です。
セル参照は範囲の対角線上の角を記述します。例えば、A1:B2 は表のいちばん左上の2x2
のセルになります。

	キーマップ:

キーマップは それぞれ'デフォルトマップ'を持ちます。もしあるマップに割り付けられ
ていないキーが押されたとき、そのマップのデフォルトマップを調べます。コマンドが
見つかるか、これ以上デフォルトマップが見つからなくなるまでそれを繰り返します。

以下に、キーマップ(とそのデフォルトマップ)のリストをあげます。
Oleo は通常5つのキーマップを持ちます。

   KEYMAP (DEFAULT)		 USE
  universal			全てのキーマップの元になります
  help (universal)		ヘルプコマンド
  mouse (universal)		マウスボタンに割り付けられます
  navigate (universal)		カーソル移動コマンド
  trolx-navigate (universal)	^X で始まる navigate コマンド
  meta-navigate (universal)	ESC で始まる navigate コマンド
  main (navigate)		デフォルトキーマップ
  trolx (trolx-nivigate)	デフォルト ^X コマンド
  meta (meta-navigate)		デフォルト ESC コマンド
  digit (main)			コマンドの前に数字を入力するためのキーマップ
  edit (universal)		入力領域で編集するためのキーマップです
  meta-edit (universal)		ESC ではじまる edit コマンド
  trolx-edit (universal)	^X ではじまる edit コマンド
  ansi (universal)		ANSI カーソルキーのためのキーマップ

write-keys コマンドでキー配列のリストを生成できます。
また、ソースファイルの init.c にデフォルトの配列が記述されています。


		入力編集:

スプレッドシートがテキスト入力を読み込む時、幾つかのテキスト編集のコマンドが使
えます。 ヒストリ機構も張り付け(yank)コマンドもありません。あなたが うっかりと 
^u をたたくと テキストは *なくなって* しまいます。これは将来、改良されるでしょ
う。
(訳注 1.6 ではもはや delete-to-start は ^uに割り当てられていません。)

入力領域がアクティブの時、セルカーソルを動かすコマンドは使用できません。あなた
がセルカーソルを動かしたければ、other-window コマンド (^xo) を使って入力領域を
抜けたあともう一度 goto-minibuffer コマンド(M-^)で入力領域に入ってください。

以下の編集コマンドが定義されています:

名前:	キー:			動作:

M-a	insert-abs-ref		現在のセル/範囲の絶対アドレス参照を
				挿入/上書きします
M-r	insert-rel-ref		現在のセル/範囲の相対アドレス参照を
				挿入/上書きします
M-e	insert-cell-expression	現在のセルの式を挿入/上書きします
M-v	insert-cell-value	現在のセルの値を挿入/上書きします
^A	beginning-of-line	カーソルをテキストの先頭に移動します
^B	backward-char		カーソルを一文字戻します
M-b	backward-word		カーソルを一語戻します
^D	delete-char		カーソルのある文字を削除します
M-d	delete-word		カーソルから現在の語の終りまで削除します
^E	end-of-line		カーソルをテキストの終りまで移動します
^F	forward-char		カーソルを一文字進めます
M-f	forward-word		カーソルを一語進めます
^H 	backward-delete-char	カーソルを一文字戻します
M-^?	backward-delete-word	カーソルの前の一語を削除します
^M	exit-minibuffer		テキストの編集を終了し、入力されたコマンドを
				実行します
^K	kill-line		カーソルからテキストの終りまで削除します
M-o	toggle-over-write	挿入/上書きのモードを切替えます
' ' to ~ self-insert		テキストに文字を挿入/上書きすます
^X-o	other-window		カーソルをセル領域に移動します
^J	next-edit-set		次の列または行のセルを編集します。セルを移動す
				る方向は auto-move-* で指定します。
^I	next-edit		次のセルを編集します。セルを移動する方向は
				auto-move-* で指定します。
^?	help			ヘルプを表示します。

			入力の初期値:

ほとんど全ての入力コマンドであなたが以前に入力したテキストを覚えていて、それを
初期値とします。もし、あなたが、まったく新しいテキストを入力したいならば、まず 
^x (または ^u) を入力してから新しいテキストを入力しています。

(訳注 1.6 ではもはや delete-to-start は^uに割り当てられていません。したがって、
 DEL か BS で削除してください)

			エラーメッセージ:

エラーメッセージは入力行に表示されます。もし oleo が複数行のエラーメッセージを
出力する必要がある時には最初のメッセージの終りに[MORE]と表示し、次のメッセージ
を表示する前にキー入力を持ちます。Oleo はまた、テキストを入力しようとしたときに
も[MORE]を表示します。それによって、あなたはエラーメッセージを(消さずに)見るこ
とができます。

			情報メッセージ:

幾つかのコマンド(例えば format-cell) は ときどき エラー以外の情報を表示します。
ステータス行が使用できるときは、そこに表示します。そして、継続するエラー以外の
メッセージは[MORE]を表示することなく上書きします。
これは、(ファイルの読み込みのように)問い合わせのメッセージがどれくらい作業が進
んだかの表示を隠してしまう場合に有用です。ステータス行が使用できないとき、メッ
セージは入力行に表示されます。

			メイン コマンド:
(訳注 USING の記述と、init.c での定義が食い違っているのでinit.cに会わせました。
以下には実際にキーに割り当てられているもののみが記述されています。キーにふられ
ていないコマンドについでは ^hW または ^h^w の出力を読んでください)

キー	コマンド名		動作
^[[D ^b	left-cell		引数だけセルを左に移動します
^[[B ^n	down-cell		引数だけセルを下に移動します
^[[A ^p	up-cell			引数だけセルを上に移動します
^[[C ^f	right-cell		引数だけセルを右に移動します

^a	beginning-of-row	現在の行の先頭に移動します
^e	end-of-row		現在の行の最後の空でないセルに移動します
M-^a	beginning-of-col	現在の列の先頭に移動します
M-^e	end-of-col		現在の列の最後の空でないセルに移動します

^x<	scroll-left		カレントウィンドウを指定した方向に一画面分スク
^v	scroll-down		ロールさせる。これらのコマンドはウィンドウのだ
M-v	scroll-up		いたい同じ位置にセルカーソルが表示されるように
^x>	scroll-right		する。したがって、続けて入力した場合、セルカー
				ソルは同じ位置に戻ってくる。しかし、スクリーン
				に表示されている行や列の数が一定ではないので、
				常にそうなるとは限らない。

M-b	scan-left	これらのコマンドは最初または最後の空でないセルに移動し
M-n	scan-down	ます。繰り返し回数が与えられたときには、N番目の空でない
M-p	scan-up		セルに移動します。空でないセルがなかったときは、いちば
M-f	scan-right	ん上または左のセルに移動します。

^o	insert-row	行を挿入します
M-o	insert-col	列を挿入します
^k	delete-row	行を削除します
M-k	delete-col	列を削除します
M-^?	delete-region	領域を削除します

^g	break	このコマンドは実行中のコマンドを終了させます。最上行でテキスト
		を入力中の場合、入力されたテキストは記憶され、再びコマンドを実
		行する時にはデフォルトとして表示されます。

M-^l	recenter-window		画面を再描画します。もしこのウィンドウにページ
		オプションが設定されていなければ、カレントセルが画面の中心にな
		るように移動します。ページオプションが設定されていれば、再描画
		するだけです。

^x^c	kill-oleo	このコマンドはスプレッドシートを終了し、シェルに戻りま
		す。スプレッドシートにセーブされていない変更が加えられている場
		合、確認のメッセージを表示します。終了の前に変更したシートをセ
		ーブしなかった場合、それは永久に失われます。

^l	redraw-screen	画面を再描画します。画面が乱れた時や、他のプログラムが
		画面に出力した場合に使用します。
				
^x:	set-variable	変数名と、その変数名で参照したいセルか範囲を入力しま
		す。変数を'未定義'にするには、set-variable に変数名だけを入力し
		ます。

^x!	recalculate	 全ての値が変更された可能性のあるセルを再評価するまで、
		スプレッドシートを再計算します。ループになったセル参照がある場
		合、40回まではループして評価します。
		(この値は、変えるかもしれません)

^x;	bind-key	キーマップの名前と、コマンド名と割り付けるキーを指定し
		ます。コマンドがスプレッドシートのセルまたは、範囲だった場合、
		マクロとして扱い、指定されたキーに割り付けます。

^x^s	save-spreadsheet	
		現在のファイルフォーマットでスプレッドシートをファイルにセーブ
		します。

^x^v	find-alternate-spreadsheet
		現在のファイルフォーマットでファイルを読み込みます。
		現在のスプレッドシートの内容が先に消去されます。
		削除の前に確認のメッセージが出ます。

^xi	merge-spreadsheet
		ファイルを読み込み、現在のスプレッドシートにマージします。
		(panic-save のような)幾つかのファイルフォーマットでは、このコマ
		ンドはこのコマンドはうまく動きません。

M-c	copy-region	範囲をコピーします。二つの範囲を引数としてとり、ソース
		からディスティネーションにコピーします。ディスティネーションの
		範囲の大きさが、ソースの範囲の整数倍ならば、ソースの範囲を繰り
		返しコピーします。ディスティネーションの範囲がセル一個の場合は
		そのセルをディスティネーションの範囲の左上だとみなします。

M-^c	copy-values-in-region	値だけをある範囲から別の範囲にコピーします。

M-m	move-region	copy-region に似ていますが、二つの範囲は同じおおきさで
		ないといけません。元の範囲を参照していたセルは新しい範囲を参照
		するように変更されます。(絶対参照は変更されますが相対参照は変更
		されません) 元の範囲の内部を範囲とする変数も修正されます。

M-=	set-region-formula	指定した範囲に同じ式を設定します。

M-^?	delete-region	指定した範囲の、値、式、フォーマット、その他を削除しま
		す。このコマンドは確認を *求めません*

M-^pa	print-region	指定した範囲をファイルに印刷します。(印刷する)範囲と			書き出すファイル名を尋ねて来ます。

M-^ppf	set-default-ps-font	PostScriptで印刷するときのデフォルトフォントを
		指定します。
M-^pps	set-page-size		PostScriptで印刷するときのページの大きさを指定
		します。ページサイズは以下のような形式で指定します。
			8.5x11	-- インチ単位でページの大きさを指定します。
			22x28c	-- センチ単位でページの大きさを指定します。
			612x792p-- ポイント単位でページの大きさを指定します。

			letter     -- 8.5 x 11 インチ
			landscape  -- 11 x 8.5 インチ
			その他、tabloid,ledger,legal,statement,executive,
			a3,a4,latex-a4,b4,b5,folio,quarto が使えます。
			
M-^ppp	psprint-region		PostScriptで指定した範囲を印刷します。

^x(	start-entering-macro	キーボードマクロの記録を開始します。
		キーボードマクロは入力された文字を含む文字列です。
^x)	stop-entering-macro	キーボードマクロを終了します。
^xe	call-last-kbd-macro	最後に記録したキーボードマクロを呼出ます。
^x=	store-last-macro	最後に記録したキーボードマクロをセルに保存しま
		す。

M-x	execute-command		組み込みコマンドやマクロを実行できます。
		組み込みコマンドを実行するには単にコマンド名(と、コマンドが要求
		する引数)を入力します。マクロを実行する場合は、名前かマクロを含
		むスプレッドシートの範囲を指定します。

		マクロはテキスト文字列から作られます。コマンド名は{go-left}のよ
		うに {CMD}と括弧で括られます。幾つかのコマンドは{go-up 12}や
		{goto-cell r1c3}のように引数を取ります。複数のコマンドを実行す
		る場合はそれらを連結します。他の文字はキー入力としてあつかわれ
		ユーザーの入力と同様にあつかわれます。

		スプレッドシートがマクロを実行している時、
		1) 空セルか、文字列以外のセルか、空文字列 "" のセルに行き当たっ
		   た。
		2) キー入力をコマンド名やコマンドの引数として解釈するときにエラ
		   ーが発生した。
		3) 範囲内の全てのセルを実行した。
		のどれかに該当する場合、実行を中止します。

		範囲の左上のセルを最初に実行し、次にその下を実行します。
		マクロのいちばん下のセルまで実行すると、いちばん上の左から二つ
		目のセルを実行し、それ列をいちばん下まで実行します。

		マクロから別のマクロを実行できます。

^xj	goto-cell	移動先のセルを問い合わせ、そこにセルカーソルを移動しま
		す。セルは、'R32C96'のようなセル名でも、変数でも指定できます。
		このコマンドは最後にこのコマンドを使用した時にカーソルがあった
		位置を初期値とします。範囲を与えた場合、その範囲の左上に移動し
		反対側の端をマークします。
		(訳注 実際には、初期値はないし、反対側のマークもしません。
		 次の goto-region と混同しているかも)

M-j	goto-region	移動先の範囲を問い合わせ、その左上にセルカーソルを移動			します。範囲の右下のセルをマークします。

^?	delete-cell	カレントセルの (値、式、フォーマット、その他)を削除しま
		す。

^@	mark-cell	次のコマンドのために、長方形の範囲の角の一つをマークし
		ます。(セルカーソルで反対側の角をマークします)

^x^x	exchange-point-and-mark	マークされたセルにカーソルを移動し、それまでい
		たセルをマークします。

^x-2	split-window-vertically	ウインドウを垂直方向に分割します。
^x-5	split-window-horizontally	ウインドウを水平方向に分割します。
^x-0	delete-window		現在のウインドウを消去します。
^x-1	delete-other-windows	現在のウインドウ以外を消去します。

^xo	other-window	次のウインドウに移動します。繰り返す個とで、全てのウイ
		ンドウに移動できます。

M-^	goto-minibuffer		入力領域をカレントウインドウとします。入力領域
		が使用中でなければ、エラーになります。

^u	universal-argument	次のコマンドのための数値引数を開始します。
		このコマンドの後の数字やマイナス符号を数値引数とします。
		数字やマイナスが入力されなかった場合、4を数値引数とします。
		二度以上使用されると、使用されるたびに値を4倍にします。

^z	suspend-oleo	Oleoの実行を中断し、親プロセスに戻ります。
		Oleoの実行を再開することができます。
		(訳中 X で使用している場合は、無効です)

M-<	upper-left	左上(R1C1)に移動します。

M->	lower-right	空でないセルがあるいちばん右のセルと同じ列、いちばん下
		のセルと同じ行、に移動します。
		
M-da	set-default-alignment	デフォルトのアライメント[a]、フォーマット[f]、
M-df	set-default-format	書き込み保護[p]、セルの幅[w]、セルの高さ[h]、
M-do	set-default-font	フォント[o]を変更します。
M-dp	set-default-protection	
M-dh	set-default-height
M-dw	set-default-width

M-aa	set-cell-alignment	セルのアライメント[a]、フォーマット[f]、
M-af	set-cell-format		書き込み保護[p]、セルの幅[w]、セルの高さ[h]
M-ao	set-cell-font		フォント[o]を変更します。
M-ap	set-cell-protection
M-ah	set-cell-height
M-aw	set-cell-width

M-ra	set-region-alignment	範囲のアライメント[a]、フォーマット[f]、
M-rf	set-region-format	書き込み保護[p]、セルの幅[w]、セルの高さ[h]
M-ro	set-region-font		フォント[o]を変更します。
M-rp	set-region-protection
M-rh	set-region-height
M-rw	set-region-width

^hc	describe-key-briefly	キー入力により実行されるコマンドの名前を表示し
		ます。
^hC	help-with-command	現在実行中のコマンドのヘルプを表示します。
^hf	describe-function	関数の説明を表示します。
^hF	describe-fomura		式で使用される関数の説明を表示します。
^hk	describe-key	ユーザーのキー入力にたいして、どの関数が割り当てられて
		いるのか表示します
^ho	show-options	スプレッドシートのオプションの現在の状態を表示します。
		また、ユーザー定義の変数の現在の値を表示します。
^hv	show-variable	変数の値を表示します
^h^v	show-all-variables	現在定義されている変数を全て表示します。
^hw	where-is		コマンドがどのキーに割り付けられているか表示し
		ます

^xm^	auto-move-up		セルの編集で ^i,^jを使用したときの移動方向を
^xmv	auto-move-down		指定します。auto-move-down ならば ^i で下のセル
^xm<	auto-move-left		に ^j で右のセルに移動します。
^xm>	auto-move-right		auto-move-right ならば ^i で右に ^j で下のセル
^xm`	auto-move-up-left	に移動します。
^xm'	auto-move-up-right
^xm/	auto-move-down-left
^xm\	auto-move-down-right
^xm SPC	auto-move-no-motion

0-9	enter-text-in-cell	セルの編集モードに入り入力した文字を最後に挿入
		します。

Oleo は ^\ をマウスコマンドへのプリフィクスにしています。マウスのキーマップ
のデフォルトは以下のとおりです:

0	mouse-goto
	ポイントされたセルに移動します。
1	mouse-mark
	ポイントされたセルをマークします。カーソルは移動しません。
2	mouse-mark-and-goto
	カレントセルをマークし、ポイントされたセルに移動します。

番号は X のボタン番号に対応します。(通常は 0 がマウスのいちばん左です)

		セルの内容の表示:

セルに含まれる数値や文字列が表示されているセル幅より長い場合、右側のセルに表示
があふれます。これは右側のセルを隠してしまうわけではありません。空かフォーマッ
トが hidden のセルだけが隠されます。

数値を表示する余地がない場合。'#'を表示します。

数値以外の値を表示する余地がない場合、セルの幅だけの文字が表示されます。

			数値のフォーマット

Oleo は数値をさまざまなフォーマットで表示することができます。さらに、16種類のユ
ーザー定義のフォーマットを使用できます。

integer		数値は表示の前に整数に丸められます。

float		数値は通常の方法で表示されます。必要とするだけの精度で表示しま
		す。

hidden		数値は表示されません。再計算などは通常どおり行われます。
                しかし、セルは空であるかのように表示されます。

graph		数値は小さなグラフとして表示されます。数値が0に近い場合、'0'が
		表示されます。数値が正の場合、'+'が値の大きさだけ表示されます。
                負の場合は、'-'が表示されます。

user-1 から	以下に示すように、16個のユーザー定義のフォーマットが使用できま
user-16		す。

以下のフォーマットは精度を指定する必要があります。精度は0から14までの数字で表し
ます。その場合、小数点以下の桁数は常に指定された値になります。(必要に応じて、丸
めたり、0で埋めたりします)。また、精度には `float'を指定することができます。そ
の場合は oleo は必要に応じた桁数をとります。例えば:

	dollar.2		``$1,769.00''
	general.float		``1769.00032''  のように表示されます。

general		セルの桁数と、数値の大きさによって、通常の表示か、指数表示に
		なります。

dollar		正の値の前に'$'をつけます。(したがって、3は'$3'と表示されます)
		負の値は括弧をつけて表します。(したがって、-3は'($3)'と表示され
		ます。そして、すべての大きな値に対して、3桁ごとに',' が入れられ
		ます。(したがって 1000 は '$1,000'と表示されます。

comma		正の値の前に'$'をつけないのを除いて、'dollar'と同じです。

percent		値を100倍し、後ろに '%' をつけます。したがって、 .01 は '1%'と
		表示されます。そして、 1 は '100%' と表示されます。

fixed		数値は通常の方法でかつ、指定された精度で表示されます。
                'fixed.float' は 'float' と同じです。'fixed.0'は'integer'と同じ
		になります。

exponent	数値は指数表示で表示されます。

		ユーザー定義数値フォーマット:

あなたは16種類のユーザー定義数値フォーマットを設定することができます。

現在使用できるフォーマット:
( 'dollar' フォーマットを例にします)

  例:			意味:
  $			正の値の前に表示する文字
  (             	負の値の前に表示する文字
                	正の値の後に表示する文字
  )             	負の値の後に表示する文字
  $0			値が0のとき表示する文字列
  ,			1000の位と100の位の間に表示する文字
  .			小数点の文字
  0-14 または float	小数点以下の桁数。'float'は必要なだけの桁数を意味します
                        ????

  any-number		表示の前にかける値。たいがいの場合 1 である。しかし パ
			ーセントで表示する場合 100 になる。また 100万ドル 単位
			で表示したい場合、 .000001 を設定する。
			(オーバーフローに気をつけること!)

値の前後に置く文字やコンマ、小数点に数字を使ってはいけません。数字を使用すると
内部ルーチンが混乱し、理解不能な結果を生成します。...( set-user-format コマンド
で正当性をチェックするべきだろうか?)

		それ以外のセルのフォーマットオプション:

セルの中の値はセルの右端、セルの左端、セルの中央のどれかにそろえられます。
デフォルトでは左に揃えられます。

セルの列の幅には非負の値が設定できます。値が 0 の場合はその列のセルは表示されま
せん。そして、通常のカーソル移動コマンドはそれらのセルをスキップします。
しかし、 goto-cell コマンドを用いることにより、表示されていないセルにカーソルを
移動させることができます。

もし列の幅がディスプレイより長い場合、ディスプレイと同じ幅に表示されます。

		現在サポートされているオプション:


(no)a0		a0 モードでは、Oleo は 幾つかの有名なスプレッドシートのように
		{文字}{数字} 形式のセル参照を用います。
		noa0 モードでは、Oleo は別の有名なスプレッドシートと同じように
		R{数字}C{数字} 形式のセル参照を用います。

(no)auto	auto モードでは、値が変更された可能性のあるセルは、自動的に再計
		算されます。noauto モードでは、recalculate コマンドが使用された
		ときのみ再計算されます。

(no)background	background モードでは、キー入力待ちの間に再計算を行います。(入
(no)bkgrnd	力を処理している間は再計算を停止します) 。nobackground モードで
		は、oleo は再計算が終了するまでキー入力を受け付けません。

(no)backup	backup モードでは、スプレッドシートをファイルに書き出すとき、
		すでにファイルが存在していた場合に、(emacs のように) バックアッ
		プファイルを作成します。

(no)bkup_copy	nobackup モードでは bkup_copy は無視されます。bkup_copy モード
		では元のファイルをリネームするのではなく、コピーによってバック
		アップファイルが作られます。

ticks (秒数)	この値は、どのくらいの頻度で rnd(),cell(),my(),curcell(),などで
		セルが更新されるかを設定します。この値は、秒を単位とします(???)
		初期値は 10 秒です。

print (数値)	個の値は、print コマンドに対するページの幅です。初期値はスクリ
		ーンの幅と同じです。

file (format-name) -DUSE_DLD が定義されていた場合、format-name は適切な関数の定
		義を含む .o ファイルか 'panic' です。'panic' は oleo に組み込ま
		れている唯一のフォーマットです。もし、 -DUSE_DLD が定義されてい
		なければ、format-name は sylk,sc,panic,list の一つでないといけ
		ません。他のフォーマットを使用するばあいは、再コンパイルする必
		要があります。

load (file-name) このオプションは oleo が -DUSE_DLD オプションを指定してコンパ
		イルされた場合のみ有効です。このオプションでスプレッドシートの
		関数、キーボードコマンド、キーマップなどの .o ファイルをロード
		することができます。スプレッドシート関数とキーボードコマンドは
		式の中で使用されるか、キーに割り付けられる前にロードしておく必
		要があります。

status (数値)	このオプションは画面の何行目にカレントセルのステータスを表示す
		るかを制御します。数値が正の場合、画面の上から数えます。負の場
		合、画面の下から数えます。0 の場合はステータス行を表示しません
		。

input (数値)	このオプションは画面の何行目をテキスト入力のために使用するかを
		制御します。数値が正の場合、画面の上から数えます。負の場合、画
		面の下から数えます。0は使用禁止です。

以下のオプションは現在アクティブなウインドウに対して有効です:

(no)page	基本的に、ページモードでは、あるセルがウインドウの中に表示され
		る時は、いつでも同じ場所に表示されます。ページモードでは
		recenter コマンドは redraw-screen コマンドと同じになります。

(no)pageh	これらのオプションは垂直または水平方向のページモードをon/offし
(no)pagev	ます。

link (num) 	このオプションは現在のウインドウを指定したウインドウとリンクし
		ます。ウインドウがリンクできるのは一つだけです。ウインドウがリ
		ンクされている場合、最初のウインドウのセルカーソルを動かすと、
		もう一方のウインドウのカーソルも同時に動きます。(もう一方のウイ
		ンドウでカーソルがその方向に動かないようにロックされていなけれ
		ば)

		(リンクしたウインドウから強制的にリンクし返すようにした方がいい
		だろうか? そうすれば、初心者にも容易になるだろう)

nolink		これはカレントウインドウのリンクを解除する。
unlink

(no)lockh	これらのオプションはカレントウインドウのセルカーソルが水平また
(no)lockv	は垂直方向に動かないようにします。しかしリンクされているウイン
		ドウのカーソルは動きます。

(no)edges	edges モードでは oleo はウインドウの上に列番号を左に行番号を表
		示します。たぶん edges は edgeh と edgev に分離するべきでしょう
		。

(no)standout	standout モードでは行番号、列番号を強調モードで(通常は反転させ
		て)表示します。

list ファイルフォーマットでは以下のオプションがサポートされています。

list ch		セルの値を分けるのに CH で指定されたキャラクターを使用します。


		ファイル名について:

ファイル名が '|'ではじまる場合、ファイル名の残りをコマンドとして扱い、パイプを
オープンします。したがって、'|zcat file.Z' を圧縮したスプレッドシートを読み込む
ために使用できます。また、書き出すためには '|compress > file.Z' を使用できます。

			Oleo を X11 で使用する

システムが libX11 を持っている場合、Oleo は X をサポートするようにコンパイル去
れます。DISPLAY 環境変数がセットして Oleo を動かすと、Oleo は curses を使用する
代わりに X window で画面を開きます。

Xの環境では、セルは通常デフォルトフォントで表示されます。set-default-font コマ
ンドを使用することで、デフォルトフォントは変更できます。フォント名にはポイント数の部分にもワイルドカードが使用できます。スプレッドシートの特定の範囲のフォントを変更する場合は set-cell-font と set-region-font コマンドを使用します。

			フォント指定

フォントを指定するいちばん簡単な方法は、組み込み済みの省略名を使用することです
。省略名は `fixed',`times',`courier'の三つです。オプションとして、名前の後にス
ケールを指定できます。スケールは希望するポイント数とデフォルトのポイント数の比
率です。例えば、デフォルトのフォントが 10ポイントのフォントだった場合、
`times 1.2' は12ポイントのTimes-Romanフォントを表します。

全てのフォントはフォント指定に使用できる、「長い名前」を持っています。
「長い名前」はXのフォント名、PostScript(*)のフォント名、スケールの三つの部分
からなります。X のフォント名と PostScriptのフォント名は省略できます。省略名
`times 1.2' は以下の「長い名前」と同じです。

	*times-medium-r-*, Times-Roman, 1.2

Xのフォント名のサイズの部分がワイルドカードになっています。これは絶対に必要では
ありませんが、こうしておくと、Oleoはデフォルトフォントの大きさが変わったときに
フォントの大きさを変更します。(デフォルトフォントの大きさは
 set-default-point-size で変更できます)
(訳注 X のアウトラインフォントをサポートしていないので、拡大縮小はあまり効きま
 せん。たいがい、運良く適当なフォントがあれば有効です)

新しい省略名は `define-font-name' コマンドで定義できます。定義した後、フォント
指定で省略名を使用すると、定義した内容で置き換えられます。
例えば、以下は init.c の標準の定義です:

	define-font-name times *times-medium-r-*, Times-Roman

スケールは省略できます。この場合、`times 1.2' のような指定により拡大されるでし
ょう。

	X のリソースとコマンドラインオプション

Oleo はまだ .Xdefault リソースや X で定義されているコマンドラインオプションを
認識しません。将来のリリースでは認識されるでしょう。

(*) PostScript is a trademark of Adobe Systems Incorporated.


		PostScript による印刷

Oleo はスプレッドシートの任意の部分を PostScript にできます。`Oleo を X11 で使
用する' で概略を説明したコマンドを用いて、印刷に用いるフォントを変更できます。


`psprint-region' コマンドは範囲とファイル名を引数として取り、指定されたファイル
に PostScirpt を書き出します。

Oleo はページに収まる範囲でできるだけ大きな出力を作成します。ページサイズは
`set-page-size' コマンドで変更できます。例えば、デフォルトでは、
`set-page-size 8.5 x 11' となっています。ページサイズをセンチメートルで指定する
には `set-page-size 20 x 30 c' のように用います。

`set-default-ps-font' はセルのデフォルトフォントを制御します。例えば、初期値は
 `set-default-ps-font Times-Roman' となっています。



		形式:

数値は 'general' フォーマットで入力してください。
	[-] digits[.digits][e[-]digits]

文字列は、ダブルクォートで囲んで入力します。特殊な文字を含む場合は、 \char
( " に対しても有効) か \nnn のように 8進数でキャラクタを指定します。

			魔法の定数:

Oleo は定数の名前を自動的に大文字に変換します。しかし、入力は大文字でも小文字で
もかまいません。

#TRUE			論理的な 真 の値
#FALSE			論理的な 偽 の値

#ERROR			各種のエラーを表します。
#BAD_INPUT
#NON_NUMBER
#NON_STRING
#NON_BOOL
#NON_RANGE
#OUT_OF_RANGE
#NO_VALUES
#DIV_BY_ZERO
#BAD_NAME
#NOT_AVAIL
#PARSE_ERROR
#NEED_OPEN
#NEED_CLOSE
#NEED_QUOTE
#UNK_CHAR
#UNK_FUNC

#INF			各種超越数、(vax のような)幾つかのマシンではこれらは
#INFINITY		すべて同じ値かもしれません。
#NAN
#NOT_A_NUMBER
#NINF
#MINUS_INFINITY

			組み込み関数:

- num			0 - num
! bool			#TRUE ならば #FALSE
			#FALSE ならば #TRUE、それ以外はエラーになる

num1 ^ num2		累乗	これは *まさに* 想像どおりである。
num1 * num2		乗算	これらの関数はオーバーフローを検出するほど
num1 / num2		除算	すぐれていません。結果が整数でおさまらない場合
int1 % int2		剰余	整数の式を浮動小数点に変換するようになってい
num1 + num2		加算	ます。
num1 - num2		減算

num1 >= num2		算術的に大きいか等しい
num1 > num2		        大きい
num1 < num2			小さい
num1 <= num2			小さいか等しい

val1 = val2		val1 と val2 が等しければ #TRUE そうでなければ #FALSE

val1 != val2		!(val1=val2) と等しい

str1 & str2		文字列結合

bool ? val1 : val2	if(bool==#TRUE)
				val1 を評価
			else if(bool!=#FALSE)
				エラー
			else
				val2 を評価

( val )			(デフォルトの優先順位を上書きする) oleo は式を
			byte-comile した形式で記憶するため、余分な括弧は消滅す
			る


		前置関数:

'a0' モードでは、全ての前置関数は 名前の前に '@' をつけます。

if(bool,val1,val2)	if(test==#TRUE)
				val1 を評価
			else if(test!=#FALSE)
				エラー
			else
				val2 を評価
and(bool1,bool2)	if(val1==#FALSE)
				#FALSE
			else if(val1!=#TRUE)
				エラー
			else val2;
or(bool1,bool2)		if(val1==#TRUE)
				#TRUE
			else if(val1!=#FALSE)
				エラー
			else val2;
pi()			3.14159265358979326848
row()			式が使われているセルの行番号
col()			式が使われているセルの列番号
now()			1970年1月1日からの現在までの秒数(?)
abs(num)		num の絶対値
acos(num)		arc-cosine (num はラジアン)
asin(num)		arc-sine   (num はラジアン)
atan(num)		arc-tangent (num はラジアン)
int(num)		整数への変換 (ゼロに近い方へ)
ceil(num)		整数への変換 (切り上げ)
floor(num)		整数への変換 (切捨て)
cos(num)		cosine (num はラジアン)
dtr(num)		度からラジアンへの変換
exp(num)		指数関数
log(num)		自然対数
log10(num)		10を底とした対数
rtd(num)		ラジアンから度への変換
sin(num)		sine (num はラジアン)
sqrt(num)		平方根
tan(num)		tangent (num はラジアン)
rnd(num)		0 から num-1までの乱数
negate(num)		0-num
not(bool)		bool が #FALSE ならば #TRUE
			        #TRUE ならば #FALSE それ以外ならエラー
iserr(val)		式の値が #FALSE 以外のエラーならば #TRUE を返す

isnum(val)		式の値が数値か、自動的に数値に変換される値ならば #TRUE 
			になる。したがって、isnum("12") は #TRUE になるが、
			isnum("12 ")は #FALSEになる。(これは修正したほうがいい
			かもしれない)
rows(rng)		範囲 rnd に含まれる行の数
cols(rng)		範囲 rnd に含まれる列の数
ctime(num)		num を読みやすい 日付/時間の文字列に変換する。
atan2(num1,num2)	二つの値をとる arctangent ( atan(num1/num2) )
hypot(num1,num2)	man 2 hypot を参照。(sqrt(num1^2+num2^2))
fixed(num1,num2)	num2で指定した位置で num1 を丸める。

index(rnd,int)		範囲 rnd の int番目のセルの内容
index(rng,num1,num2)	範囲 rnd の int1 列目の int2 行目のセルの内容

oneof(int,val1,val2,val3...) switch(int)
				case 1: val1;
				case 2: val2
				...
				default: error;
			}

以下の関数は範囲を引数にとり、その範囲でセルの内容が数値のもののみをスキャンし
ます。文字列やエラー、空のセルなどは無視されます。cnt() 以外の関数は、範囲の中
に一つも数値がなかった場合、#NO_VALUES エラーを返します。#NO_VALUESエラーが望ま
しくない場合、ほとんどの関数で明示的に値を設定できます。例えば、r1:20c5 の範囲
の合計を表示する時、数値がなければ0を表示したいのならば、'sum(0,r1:20c5)'と指定
します。

明示的に関数に与えられた、文字列やその他の値には、通常の変換が適用されます。

sum(vr1...)		...
prod(vr1...)		...
avg(vr1...)		...
std(vr1...)		標本の標準偏差。母集団の標準偏差を求めるために
			sqrt(var(...)) を使用します
max(vr1...)		...
min(vr1...)		...
cnt(vr1...)		数値の入ったセルの数
var(vr1...)		母集団の分散。標本の分散を求めるために std(...)^2 を使
			用します

以下の関数は'string' パッケージに入ります。oleo が -DUSE_DLD でコンパイルされた
場合、これらの関数をしようする前に string パッケージをロードしなければなりませ
ん。もし string パッケージをロードする前に、これらの関数を使用するスプレッドシ
ートをロードした場合、(何のエラーも出さず)失敗します。(これは多分バグです)

len(str)		文字列の長さ
strupr(str)		文字列を大文字に変換
strlwr(str)		文字列を小文字に変換
strcap(str)		文字列の単語の先頭を大文字、それ以外を小文字に変換
trim(str)		余分のスペースや、ascii以外の文字を取り除きます
			(訳注 漢字も取り除かれます)

find(str1,str2,int)	str1の int番目から探し始めて、str2 が str1 のどこに現れ
			たかを返します。
substr(int1,int2,str)	str の int1 から int2 までの文字列を返します。位置は正
			の値(最初の文字が #1 で最後が#(文字列の長さ))でも負の値
			(最後の文字が #-1 で最初が #-(文字列の長さ))でも指定で
			きます。
mid(str,int1,int2)	(先頭から数えて)int1番目から int2 個の長さの文字列を返
			します。
edit(str,int1,int2,...)	int1からint2までの文字を取り除き、...で置き換えます。
			(...は0個以上の文字列です)
			int1 と int2 は上記のsubstr()と同じです。
repeat(str,int)		strをint回繰り返します。したがって repeat("foo",2)は
			"foofoo"を返します。
concat(vr1,...)		文字列や、範囲、その他を結合します。

以下の関数は 'cell'パッケージに含まれます。oleoが -DUSE_DLDをつけてコンパイルさ
れている場合、これらの関数を使用するまえに cellパッケージをロードしなければなり
ません。

my(str)			文字列:		返り値:
			row		row()
			column		col()
			width		このセルを含む列の幅
			lock		"locked" または "unlocked"
			protection	同上
			justify		"left" "right" "center"または"default"
			alignment	同上
			format		"default" "user-1" その他
			fmt		同上
			type		"error","boolean","float",
					"integer", "null", "Unknown",
					その他
			formula		セルの現在の式の文字列

			value		セルの現在の値
			その他		エラー--> #BAD_INPUT

curcell(str)		my() と同様だが、カレントウインドウのセルカーソルがある
			セルの値を返します。

cell(int1,int2,str)	my() と同様だが、Rint1Cint2のセルの値を返します。

member(rng,val)		範囲 RNG で VAL の値を持つ最初のセルの位置を返します。
			もし、値を含むセルがなければ 0 を返します。


以下の4つの関数は、おそらく、スマートな正規表現のルーチンで置き換えられるでしょう...
(訳注 日本語の文字列に対しては正しく動作しません)

smember(rng,str)	範囲 RNG で STR を部分として持つセルの位置を返します。
			もし、文字列を含むセルがなければ 0 を返します

members(rng,str)	範囲 RNG で STRの部分文字列を値として持つ最初のセルの位
			置を返します

pmember(rng,str)	範囲 RNG で STRの最初の何文字かと同じ値を持つ最初のセル
			の位置を返します

memberp(rng,str)	範囲 RNG で STRで始まる値を持つ最初のセルの位置を返しま
			す。

hlookup(rng,num,int)	範囲rngの最初の行を走査してnumより大きな値を探します。
			そして範囲の int 行目の同じ列のセルの値を返します。
			
vlookup(rng,num,int)	hlookupと似ていますが、範囲の左端の列を走査して、同じ行
			の int列目の値を返します。

vlookup_str(rng,str,num)vlookupと似ていますが、範囲の左端の列の文字列を走査しま
			す

(訳注 次の時間に関する関数の記述は林田が追加したものです)
時間、日付の表示、計算について

oleo では、時間は整数として扱います。UNIX で一般に持ちいられる、
1970-01-01 00:00:00 GMT からの秒数です。
(訳注 これは、あまりに一般向けではないので、そのうちに、日付型が導入されると
思います)

now()			現在のUNIX 時間を返します。
strftime(fmt,time)	C ライブラリの strftime と同一の書式を用いて、
			time で与えられた UNIX 時間を文字列に変換します。

ymd(y,m,d)		年、月、日から UNIX 時間に変換します。
ymd_dst(y,m,d,dst)	年、月、日から UNIX 時間に変換します。
			夏時間を考慮します。

get_date(s)		GNU date 形式の文字列を UNIX 時間に変換します。
posix_date(s)		posix 形式の文字列を UNIX 時間に変換します。

local_year(t)		UNIX 時間からローカルタイムでの年を取り出します。
			(1900 を足してください)
local_month		UNIX 時間から地方時での月を取り出します。
			(1月が0、2月が1、... です)
local_date		UNIX 時間から地方時での日を取り出します。
local_hour		UNIX 時間から地方時での時間を取り出します。
local_min		UNIX 時間から地方時での分を取り出します。
local_sec		UNIX 時間から地方時での秒を取り出します。
local_isdst		地方時で夏時間が有効かどうかを返します。
			0以外なら夏時間が有効です。
local_yday		UNIX 時間から地方時での1月1日からの日数を取り出します。
local_wday		UNIX 時間から地方時での曜日を取り出します。
			(日曜が 0 です)

gmt_year		UNIX 時間から標準時での年を取り出します。
			(1900 を足してください)
gmt_month		UNIX 時間から標準時での月を取り出します。
			(1月が0、2月が1、... です)
gmt_date		UNIX 時間から標準時での日を取り出します。
gmt_hour		UNIX 時間から標準時での時間を取り出します。
gmt_min			UNIX 時間から標準時での分を取り出します。
gmt_sec			UNIX 時間から標準時での秒を取り出します。
gmt_isdst		標準時で夏時間が有効かどうかを返します。
			0以外なら夏時間が有効です。
			(訳注 この関数は意味不明、標準時が夏時間になるわけが
			ない)

gmt_yday		UNIX 時間から標準時での1月1日からの日数を取り出します。
gmt_wday		UNIX 時間から標準時での曜日を取り出します。
			(日曜が 0 です)

hms_to_time(h,m,s)	時間、分、秒であらわされた時間を秒に変換する。
			(( h * 60 ) + m ) * 60 + s です。

dhms_to_time(d,h,m,s)	日、時間、分、秒であらわされた時間を秒に変換する。

time_to_d(t)		秒単位の時間から日数を取り出す。
time_to_h(t)		秒単位の時間から時間を取り出す。
time_to_m(t)		秒単位の時間から分を取り出す。
time_to_s(t)		秒単位の時間から秒を取り出す。

(訳注 以下の関数は給与や利息などの計算を行う関数らしいのですが、林田にはその方面の知識がないので、そのままにしてあります。どなたか訳してください
  他でも書きましたが Oleo の実数計算は C の double なので、小数点以下で誤差が
  でる可能性があります。求む BCD 演算ライブラリ)

These functions are in the 'busi' package.  If oleo is compiled with
-DUSE_DLD, the busi package must be loaded before these functions can be
used.

pmt(p,r,t)		Payment per period for a loan of $P at rate R for T
	payments.

pv(pmt,int,term)	Present value of an investment that pays $PMT at the
	end of each of TERM periods with a discount rate (interest) of INT.

npv(rng,rate)		Net Present Value of an investment which will pay
	uneaven payments.  The term is calculated from the number of cells in
	RNG.  .

irr(rng,guess)		Internal Rate of Return.  This function is paticularly
	untested, and should not be trusted.

fv(pmt,int,term)	Future Value of an annuity.

rate(fut,pres,term)	Interest rate required to turn $PRES into $FUT in
	TERM periods.

term(pmt,int,fut)	Number of periods required to collect $FUT in
	payments of $PMT, where depositd payments earn at a rate of INT.

cterm(int,fut,pres)	Number of periods required to collect $FUT from a
	single initial deposit of $PRES, at an interest rate of INT.

sln(cost,scrap,life)	Straight line depreciation of an asset that cost
	$COST when new, can be sold for $SCRAP, and will last for LIFE
	periods.

syd(cost,scrap,life,per)	Sum-of-the-digits depreciation of an asset
	that cost $COST, can be sold for $SCRAP and lasts LIFE, in period PER.

ddb(cost,scrap,life,per)	Double-declining-balance deprecion, otherwise
	similar to syd().

anrate(pmt,pres,term)	
anterm(pmt,prin,rate)
balance(prin,rate,term,period)
paidint(prin,rate,term,period)
kint(prin,rate,term,period)
kprin(prin,rate,term,period)
compbal(print,rate,term)
