メモ --spreadsheet calculator(sc)
- Date:2006.1.20
- Last updated:2009.10.27
- 2009.9.20: gcc4系(?)でビルドできないバグ修正と、いくつかのバグ修正・機能追加を行ったscのパッチファイルをアップしました。
きちんとまとめたいと思いつつ果たせなかった文書の成れの果て。
Spreadsheet calculator(sc)
ここで扱うspreadsheet calculatorとは、「James Gosling氏によって書かれ、Mark Weiser氏によって修正・vcの名でUSENETに投稿され、その後多くの人々により修正された」(sc manpageより)仮想端末上で動作するパブリックドメインのスプレッドシート・ソフトウェアを指す。
現在(sc-7.16)のメンテナはChuck Martin氏であり、本体はftp://ibiblio.org/pub/Linux/apps/financial/spreadsheet/で得ることができる。
筆者は某RH系Linuxディストリビューション、およびMac OS X (10.3)にて動作を確認している。
現在のscに関する文書は日本語・英語問わず極めて限られている模様。日本語の関連文書としては、喜多敏博氏のsc(spreadsheet calculator)の紹介がある。その他の情報は、主にmanページなどの付属文書や試行、ソースコードなどから得ることになる。
- Notes(含感想)
-
- manページの記述は古く、いくつかobsoleteな記述がある。また、網羅されていない部分もある。
- ある意味同類であるoleo-1.99.16よりは、痒い所に手が届く感じ。特に出力フォーマットの意味が明瞭であるため変換が容易。
- Web上に存在するいくつかの説明にもあるように、習得にそれなりの時間がかかる。Viと入力形式は少し似ているが、エディタとスプレッドシートの違いもあり、Viの知識のみではやはり不足は避けられない。
- マイナーな存在であるがゆえに、デバッグが不十分である可能性や、習得した技能が再利用され難いという制約がある。
- (2009.9.20:) ktermではREADMEにあるncvの問題にひっかかるため、terminfoのncvエントリを奇数から1引いた数に修正しなければならない。
- (2009.9.20:) xspreadなど多くの亜種が存在していて、ソースが統合されず各所に散っている。
- (2009.10.27:) 日本語はEUC以外のUTF、SJIS等だと表示が化けてしまう。
- (2009.10.27:) mlterm、gnome-terminalといった最近の端末で、デフォルトでは画面が真っ黒になってまともに使えない。
パッチファイル (2009.9.20追加)
筆者の環境で用いているgcc-4.3.3では、構文規則が厳しくなったためか、xmalloc.c記述エラーのためsc-7.16はビルドできなくなっている。
また、記述を直しても、lex.cの変数の初期化の解釈が変わったためか、入力に対し常時syntax errorを返すscができてしまう。
実用上問題があるので、これらの問題を解消したパッチファイルを作成した。
また、メンテナのChuck Martin氏とは記載メールアドレスからは連絡がつかないようなので
ひとまずここに公開することにした。
(例によって無保証です。gcc-4.3.3、gcc-3.4.4でビルドを確認しています。)
- sc-7.16_am-p090920.patch.gz(パッチファイル、
3,652bytes、MD5sum: fd351b0f8bb6d36bc42e0b34a4aa476f)
sc-7.16/のディレクトリがある場所で「zcat sc-7.16_am-p090920.patch.gz | patch -p0」などと実行することで適用できます。
- sc-7.16_am-p1.tar.bz2(sc-7.16に上記パッチを適用したscソースコード、
168,968bytes、MD5sum: 7ca7d68341e2faf0d7aac3d566466a5c)
# 上記問題のほか、以下の項目を修正・追加しています:
- Tでのテーブル出力でタブ区切りテキストファイルが出力できるようにした (set tblstyle=tsv、拡張子はtsvextで設定)
- ナビゲートモードで^Gを押すとそれ以降ナビゲートモードに入れなくなる問題を修正
- set cractionが設定されていると、素のコマンドを打ち込めない問題 (endleftなどの直接打つしかないコマンドの実行や、自作プラグインの実行など) を、:を打つことで入力可能にすることで対処
- make cleanで、sc・psc・scqrefのバイナリが消去されないのを修正
- デフォルトprefixを/usrから/usr/localに
古い試作スクリプト(advanced macro)
# 2009.9.20: 以下の記述は3年前の古いものであり、下記スクリプトも上記パッチファイルを適用すれば不要なものです。
出力形式にtsv(tab-separated value)が欲しかったため、sc用advanced macroとして個人使用向けに簡単なスクリプトを作成した。
基本的にtsv出力向けだが、冒頭のユーザ定義部を書き換えればcsvやセパレータなしとしても使える筈。後者は系統的なソースプログラムの作成に一応使用できる(HTMLのtable要素等)。
scにおけるマクロについてはmanページ、advanced macroについては、sc同梱のSC.MACROSを参照の事。このスクリプトはmergeやコマンド呼び出し、plugout等として用いる事ができる。
- 既知の問題
-
- 遅い(特にシェルスクリプト版)
- 例外処理をあまりきちんと行なっていないので、想定されていない入力によっておかしな動作を起こし得る
- ろくに文書がない(素人の個人用という出自により)
- 呼び出し名にピリオドを含む場合、うまく呼び出せない模様(scのバグか?)
- etc.
# ファイル入出力等を行う事もあり、スクリプトのバグに伴って、scファイル以外の部分に及ぶ打撃を与える可能性があります。
# このスクリプト、及びその実行に起因するあらゆる損害について、筆者はその責を負いかねます。