[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25. 実行環境

25.1 実行環境について  
25.2 中断  
25.3 実行環境に関する諸定義  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.1 実行環境について

- MACSYMAを開始する時に、MACSYMAをカスタマイズする為のファイルが自動的に読込 まれる。macsyma命令のBATCHファイルとして記述された初期化ファイルを持つ事が 可能である。この様にする事で、利用者にとってMACSYMAの環境をカスタマイズする事 が容易になる事を私達は望む。次は初期化ファイルの例である
 
        /*-*-macsyma-*-*/ 
        setup_autoload("share\;bessel",j0,j1,jn);
        showtime:all; comgrind:true;
この見慣れないファイルの先頭のコメント行"/*-*-macsyma-*-*/"で、Macsyma言語の ファイルである事を示す。次の"SETUP_AUTOLOAD"は、BATCHファイルの中で関数を自動 的に読み込む事に用いる。これを用いる事で(例えば、ここでの様に)、Bessel パッケージから関数J0,J1とJnが直接利用出来る。何故なら、これらの関数を用いると、 Besselパッケージが自動的に読み込まれる為である。SETUP_AUTOLOADの引数に二番目 のファイル名が指定されていない(妥当な構文である)場合、二番目のファイル名を "FASL","TRLISP"と">"として標準のファイル検索を実行する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.2 中断

- 利用者がMACSYMAの計算を中断する幾つかの方法があり、通常は制御文字を用いる。 詳細はDESCRIBE(CHARACTERS);を参照せよ。MACSYMAは^Z(Control-Z)が入力されても 中断するが、これはMACSYMAを出てUnixのShellレベルに戻るので、通常はControl-Cで 計算を中断してbreak loopに入る。:tと入力すればMAXIMAの最上層に再び戻る。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.3 実行環境に関する諸定義

関数: ALARMCLOCK (arg1, arg2, arg3)
arg1とarg2に設定した時間が経過した時に名前がarg3で引数を持たない関数を実行 する。arg1が原子の"TIME"であれば、実時間でarg2秒経過した後にarg3が実行され、 arg1が原子の"RUNTIME"であれば、CPU timeでarg2ミリ秒経過した後にarg3が実行され る。arg2が負であればarg1タイマーは使われない。

関数: ALLOC
"run out of space(メモリを使い果した)"と云う質問に対する回答と同じ数値引数を 取る。その結果、メモリの割り当てが増える。例えば、利用者が最初にその問題が非常 に大きなメモリ空間が必要であると判っていれば、ALLOC(4);で最大メモリを割当てる 事が可能である。DYNAALLOCスイッチも参照せよ。

関数: BUG ("message")
mailと似ており、MACSYMA Mailにメッセージを送る。これはMACSYMAのバグや疑わしい ものの報告に用いて良い。これには参照される式を含めても良く、この場合は式を 二重引用符で囲む。

 
例えば、
BUG("I am trying to integrate",D3,"but it asks for more list space.What should I do?");
の様に使う。

関数: CLEARSCREEN ()
画面を消去する。Control-Lと同じ。

 
(* 訳者注:

LINUX環境のGCL及びCLISP上でのMaximaで動作しない。但し、Control-Lは使える。
因に、clearscreenの定義は(DEFMFUN $CLEARSCREEN () (CURSORPOS 'C) '$DONE)と
なっている。しかし、cursorposを定義しているcommac.lisp内部のコメントでは、
基本的にCommon Lispではcursor posがサポートされていないと述べている。

*)

関数: CONTINUE
- MACSYMAでControl-^を入力するとLISPに入る。すると任意のLISPのS式入力と評価が 可能となる。(CONTINUE)か^G(Control-G)でMACSYMAに再び入る。

関数: DDT ()
MACSYMAから抜けてオペレーティングシステムレベルに入る (ITS上のControl-Z、Tops-20のControl-Cと同じ)。

 
(* 訳者注:

Linux環境のGCL及びCLISP上のMaximaでは動作しない。但し、Cnttl-Zは動作する。

*)

関数: DELFILE (file-specification)
file-specification(つまり、最初の名前、二番目の名前、デバイス、利用者)で与え られたファイルを与えられたデバイスから削除する。

関数: DISKFREE ()
引数無しか引数TRUEでシステムのディスクスペースの空きブロックの総数を返す。

引数が0,1,又は13で、関連するディスクパック上での空きブロックの総数を返す。

引数をSECONDARYやPRIMARYとすると、第二、第一のディスクパック各々の空きブロック 総数を返す。

宣言: FEATURE
- システムに対して良いオプションの機能。STATUS(FEATURE)でシステム機能のリスト が得られる。現在、MC向けのリストは:MACSYMA,NOLDMSG,MACLISP,PDP10,BIGNUM, FASLOAD, HUNK, FUNARG,ROMAN,NEWIO,SFA,PAGING,MCとITSである。

これらの任意の"機能"を、その機能が存在すれば、STATUS(FEATURE,...);の第二引数 として与えても良く、その場合はTRUEが返され、そうで無ければFALSEが返される。 注意:これらのシステム機能は本当に"利用者に関連"したものでは無い。より利用者 向けの機能に関してはDESCRIBE(features);も参照せよ。

 
(* 訳者注:

GCL上のMaximaの場合

(C4) STATUS(FEATURE);

(D4) [COMPILER, NUMLIB, NOCP, CL, MAXII, SDEBUG, TRUNCATE_USE_C, 

CLX-LITTLE-ENDIAN, BSD, MC68020, BSD386, SGC, IEEE-FLOATING-POINT, UNIX, GCL, 

AKCL, COMMON, KCL]

CLISP上のMaximaの場合

(C43) STATUS(FEATURE);
(D43) [MAXII, SHADOW-FUNCTIONP, NOCP, CL, MAIN-FILES-LOADED, CLOS, LOOP, 

COMPILER, CLISP, CLTL2, COMMON-LISP, INTERPRETER, LOGICAL-PATHNAMES, FFI, 

GETTEXT, UNICODE, BASE-CHAR=CHARACTER, SYSCALLS, PC386, UNIX]

関数: FEATUREP (a,f)
そのオブジェクトが現行のデータベースに含まれる事実の組合せで機能fを持つかを 調べる。もしも、そうであれはTRUEを返し、そうでなければFALSEとなる。 DESCRIBE(FEATURES);を参照せよ。

 
(C1) DECLARE(J,EVEN)$
(C2) FEATUREP(J,INTEGER);
(D2)                                TRUE

関数: ROOM ()
保存領域の状況を詳細な記述で出力してMACSYMAの管理に蓄える。これはLISPのROOM 関数の単純な利用である。

ROOM(FALSE) - 非常に詳細な記述を出力するか、大半は同様の情報を含んでいる。

 
(* 訳者注:

LINUX環境のGCLやCLISP上のMaximaには実装されていないらしい。尚、GCLやCLISPのROOM関数は動作している。

*)

関数: STATUS (arg)
利用中のMACSYMAに関する様々な情報を与えられたargに依存して返す。

使える引数と結果は次の通り:

ファイルに関する情報はFILEDEFAULTS();命令を見よ。

関数: TIME (Di1, Di2, ...)
Diの計算で用いたミリ秒単位の時間のリストを返す(注:変数SHOWTIME、デフォルト値: [FALSE]をTRUEにすると、各D-行(結果表示行)で計算時間が表示される)。

 
(* 訳者注:

(C44) showtime;
(D44)                                FALSE
(C45) integrate(sin(x)*exp(-x),x,0,inf);
                                       1
(D45)                                  -
                                       2
(C46) showtime:true;
Evaluation took 0.00 seconds (0.00 elapsed)
(D46)                                TRUE
(C47) integrate(sin(x)*exp(-x),x,0,inf);
Evaluation took 0.08 seconds (0.09 elapsed)
                                       1
(D47)                                  -
                                       2
*)


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Hiroshi Yokota on September, 16 2002 using texi2html