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

# 32. Runtime Environment

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

## 32.1 Introduction for Runtime Environment

`maxima-init.mac`は、 Maximaがスタートする時自動的にロードされるファイルです。 自分の Maxima環境をカスタマイズするために `maxima-init.mac`を使うことができます。 `maxima-init.mac`は、もし存在するなら、 関数 `file_search`が検索する任意のディレクトリで大丈夫ですが、 通常は `maxima_userdir`で名付けられたディレクトリの中に置かれます。

以下は `maxima-init.mac`ファイルの例です:

    setup_autoload ("specfun.mac", ultraspherical, assoc_legendre_p);
    showtime:all;

この例では、 `setup_autoload`はMaximaに もし関数 (`ultraspherical`, `assoc_legendre_p`)のいずれかがコールされた時まだ定義されていなかったら、 指定されたファイル (`specfun.mac`)をロードするように命じます。 このように関数をコールする前にファイルをロードすることを覚えておく必要はありません。

文 `showtime: all`は Maximaに `showtime`変数を設定することを命じます。 `maxima-init.mac`ファイルは他の任意の割り当てや Maxima文を含むことができます。

Categories: Session management

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

## 32.2 Interrupts

ユーザーは、時間のかかる計算を ^C (control-C)文字で止めることができます。 デフォルトの動作は、計算を止めて、別のユーザープロンプトを印字することでです。 この場合、止められた計算の再開することはできません。

もし

    :lisp (setq *debugger-hook* nil)

を実行することによって、 Lisp変数`*debugger-hook*`が`nil`に設定されているなら、 ^Cを受け取ると、Maximaは Lispデバッガに入り、 ユーザーは Lisp環境を検査するためにデバッガを使うことができます。 止められた計算は Lispデバッガの中で、 `continue`を入力することで、再開することができます。 (計算を完了まで走らせる以外に) Lispデバッガから Maximaに戻る方法は Lispのバージョンそれぞれで異なります。

Unixシステム上では、 文字^Z (control-Z)は Maximaが完全に止まるようにし、 制御はシェルスクリプトに戻ります。 `fg`コマンドが Maximaが止められた点から再開するようにします。

Categories: Console interaction

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

## 32.3 Functions and Variables for Runtime Environment

システム変数: maxima_tempdir

  `maxima_tempdir`は Maximaが一時的なファイルを生成するディレクトリを指名します。 特に、プロットのための一時ファイルが `maxima_tempdir`に生成されます。

  `maxima_tempdir`の初期値は、 もし Maximaが置くことができるならユーザーのホームディレクトリです; そうでないなら、Maximaは適切なディレクトリについて推量します。

  `maxima_tempdir`はディレクトリを指名する文字列に割り当てられます。

  Categories: Global variables

システム変数: maxima_userdir

  `maxima_userdir`は、 Maximaが Maximaや Lispファイルを見つけるために検索するディレクトリを指名します。 (Maximaは他のディレクトリも検索します; `file_search_maxima`と `file_search_lisp`が完全なリストです。)

  `maxima_userdir`の初期値は、 もし　Maximaが置くことができなら ユーザーのホームディレクトリのサブディレクトリです; そうでないなら Maximaは適切なディレクトリについて推量します。

  `maxima_userdir`はディレクトリを指名する文字列に割り当てられます。 しかしながら、 `maxima_userdir`への割り当ては、自動的には `file_search_maxima`と `file_search_lisp`を変えません; それらの変数は別々に変更しなければいけません。

  Categories: Global variables

関数: room
`room` ()
`room` (true)
`room` (false)

  Maximaの記憶装置とスタックマネージメントの状態の描写を印字します。 `room`は同じ名前の Lisp関数をコールします。

  - `room ()`は適度の描写を印字します。
  - `room (true)`は言葉数の多い描写を印字します。
  - `room (false)`は簡潔な描写を印字します。

  Categories: Debugging

関数: sstatus (keyword, item)

  keywordがシンボル `feature`の時、 itemがシステムフィーチャのリスト上に追加されます。 `sstatus (keyword, item)`が実行された後、 `status (feature, item)`は `true`を返します。 もし keywordがシンボル `nofeature`なら、 itemはシステムフィーチャのリストから削除されます。 これはパッケージ作者が、搭載したフィーチャの追跡をするのに役に立つかもしれません。

  `status`も参照してください。

  Categories: Programming

関数: status
`status` (`feature`)
`status` (`feature`, item)

  いくつかのシステム依存のフィーチャの存在と不在についての情報を返す。

  - `status (feature)`はシステムフィーチャのリストを返します。 これらは Lispのバージョン、オペレーティングシステムのタイプなどを含みます。 リストは１つの Lispタイプからもう１つに変わるかもしれません。
  - `status (feature, item)`は、 もし itemが `status (feature)`が返す項目のリスト上にあるなら、 `true`を返し、そうでないなら `false`を返します。 `status`は引数 itemをクォートします。 クォート-クォート演算子 `''`はクォーテーションに優先されます。 名前がハイフンのように特殊文字を含むフィーチャは、 文字列引数として与えられなければいけません。例えば、 `status (feature, "ansi-cl")`。

  `sstatus`も参照してください。

  変数 `features`は数式に適用されるフィーチャのリストを含みます。 もっと情報を知るには、 `features`と `featurep`を参照してください。

  Categories: Programming

関数: system (command)

  別のプロセスとして commandを実行します。 コマンドは実行のためデフォルトのシェルに渡されます。 `system`はオペレーティングシステムすべてではサポートされませんが、 一般に Unixと Unixライクな環境では存在します。

  `_hist.out`は、 `xgraph`を使ってバーグラフとしてプロットしたい頻度のリストだと仮定します。

      (%i1) (with_stdout("_hist.out",
                 for i:1 thru length(hist) do (
                   print(i,hist[i]))),
             system("xgraph -bar -brw .7 -nl < _hist.out"));

  プロットをバックグラウンドで（ Maximaに制御を戻すように）させるようにし、 終了した後、一次ファルを削除するようにするためには以下のようにします:

      system("(xgraph -bar -brw .7 -nl < _hist.out;  rm -f _hist.out)&")

関数: time (%o1, %o2, %o3, …)

  出力行 `%o1`, `%o2`, `%o3`, …を計算するために使った時間のリストを秒で返します。 返された時間は内部計算時間の Maximaの概算であって、経過時間ではありません。 `time`は出力行変数にだけ適用されます; 他の変数に関して `time`は `unknown`を返します。

  Maximaに出力行それぞれに計算時間と経過時間を印字させるには、 `showtime: true`を設定してください。

  Categories: Debugging

関数: timedate
`timedate` (T, tz_offset)

  `timedate` (T)
  `timedate` ()

  `timedate(T, tz_offset)`は タイムゾーン tz_offsetでの時刻 Tを表す文字列を返します。 文字列フォーマットは (小数部を表すのにひつよなだけの数字を使った) `YYYY-MM-DD HH:MM:SS.NNN[+|-]ZZ:ZZ`か もし小数部がなければ `YYYY-MM-DD HH:MM:SS[+|-]ZZ:ZZ`です。

  Tは GMTタイムゾーンで1900年1月1日0時から測定された秒です。

  tz_offsetはGMTからのタイムゾーンのオフセット時間です。 東が正で西が負です。 tz_offsetは-24以上24以下の整数か有理数か浮動小数点でなければいけません。 もし tz_offsetが1/60の倍数でなければ、 それは最も近い1/60の倍数に丸められます。

  `timedate(T)`は ローカルタイムゾーンのオフセットに等しい tz_offsetでの `timedate(T, tz_offset)`と同値です。

  `timedate()`は `timedate(absolute_real_time())`と同値です。 すなわち、ローカルタイムゾーンで現在時刻を返します。

  例:

  引数なしの `timedate()`は現在時刻と日付を表す文字列を返します。

      (%i1) d : timedate ();
      (%o1)                      2010-06-08 04:08:09+01:00
      (%i2) print ("timedate reports current time", d) $
      timedate reports current time 2010-06-08 04:08:09+01:00

  引数ありの `timedate`は引数を表す文字列を返します。

      (%i1) timedate (0);
      (%o1)                      1900-01-01 01:00:00+01:00
      (%i2) timedate (absolute_real_time () - 7*24*3600);
      (%o2)                      2010-06-01 04:19:51+01:00

  オプションのタイムゾーンオフセットありの `timedate`。

      (%i1) timedate (1000000000, -9.5);
      (%o1)               1931-09-09 16:16:40-09:30

  Categories: Time and date functions

関数: parse_timedate
`parse_timedate` (S)

  日付や日時を表す文字列 Sをパースし、GMT 1900年1月1日零時からの秒数を返します。 もしゼロでない小数部があれば戻り値は有理数で、そうでなければ整数です。 もし許されるフォーマットのどれによっても Sをパースできなければ、 `parse_timedate`は `false`を返します。

  文字列 Sは、オプションとしてタイムゾーン指定が続くような 以下のフォーマットのいずれかでなければいけません:

  - `YYYY-MM-DD[ T]hh:mm:ss[,.]nnn`
  - `YYYY-MM-DD[ T]hh:mm:ss`
  - `YYYY-MM-DD`

  ここで、フィールドは年、月、日、時、分、秒、少数で、 カギ括弧は可能な代替文字を示します。 小数は1つ以上の数字を含むかもしれません。

  秒の小数を除いてそれぞれの欄は指定の数字数を持たなければいけません: 年は4つの数字、月、日、時間、分、秒は2つの数字。

  タイムゾーン指定は以下の形式のどれかでなくてはいけません:

  - `[+-]hh:mm`
  - `[+-]hhmm`
  - `[+-]hh`
  - `Z`

  ここで `hh`と `mm`は時刻と分です 符号はGMTの東 (`+`)か西 (`-`)です。 タイムゾーンは+24時間から-24時間までです。

  文字 `Z`は `+00:00`やその変形と同値で、 GMTを示します。

  もしタイムゾーン指定がないなら、 時刻はローカルタイムゾーンと仮定されます。

  頭やお尻の空白文字(スペース, タブ, 改行, キャリッジリターン)は無視されますが、 他の文字は `parse_timedate`が失敗して `false`を返す原因となります。

  `timedate`と `absolute_real_time`も参照してください。

  例:

  可能なフォーマットそれぞれでのローカルタイムゾーンでの 1900年1月1日零時。 結果はローカルタイムゾーンでの秒数です。 GMTに先行する場合マイナスでGMTに遅れる場合プラスされます。 この例ではローカルタイムゾーンはGMTに遅れること8時間です。

      (%i1) parse_timedate ("1900-01-01 00:00:00,000");
      (%o1)                         28800
      (%i2) parse_timedate ("1900-01-01 00:00:00.000");
      (%o2)                         28800
      (%i3) parse_timedate ("1900-01-01T00:00:00,000");
      (%o3)                         28800
      (%i4) parse_timedate ("1900-01-01T00:00:00.000");
      (%o4)                         28800
      (%i5) parse_timedate ("1900-01-01 00:00:00");
      (%o5)                         28800
      (%i6) parse_timedate ("1900-01-01T00:00:00");
      (%o6)                         28800
      (%i7) parse_timedate ("1900-01-01");
      (%o7)                         28800

  異なる指定のタイムゾーンでの 1900年1月1日零時。 Midnight, January 1, 1900, GMT, in different indicated time zones.

      (%i1) parse_timedate ("1900-01-01 19:00:00+19:00");
      (%o1)                           0
      (%i2) parse_timedate ("1900-01-01 07:00:00+07:00");
      (%o2)                           0
      (%i3) parse_timedate ("1900-01-01 01:00:00+01:00");
      (%o3)                           0
      (%i4) parse_timedate ("1900-01-01Z");
      (%o4)                           0
      (%i5) parse_timedate ("1899-12-31 21:00:00-03:00");
      (%o5)                           0
      (%i6) parse_timedate ("1899-12-31 13:00:00-11:00");
      (%o6)                           0
      (%i7) parse_timedate ("1899-12-31 08:00:00-16:00");
      (%o7)                           0

  Categories: Time and date functions

関数: encode_time
`encode_time` (year, month, day, hours, minutes, seconds, tz_offset)
`encode_time` (year, month, day, hours, minutes, seconds)

  year, month, day, hours, minutes, seconds で指定された時刻と日にちを与えると、 `encode_time`は(場合によって少数部を含む) GMT 1900年1月1日0時からの秒数を返します。

  yearは1899以上の整数でなければいけません。 しかし、1899年は、エンコード時刻の結果が0以上の場合だけ許されます。

  monthは1から12までの整数でなければいけません。

  dayは1から nまでの整数でなければいけません。 ここで nは monthが指定する月の日数です。

  hoursは0から23までの整数でなければいけません。

  minutesは0から59までの整数でなければいけません。

  secondsは0以上60未満の整数、有理数、少数でなければいけません。 secondsが整数でない時、 `encode_time`は 戻り値の少数部が secondsの少数部に等しい有理数を返します。 そうでなければ、 secondsは整数であり、戻り値も同様に整数です。

  tz_offsetは時間単位でタイムゾーンのオフセットを示します。 GMTの東が正で西が負です。 tz_offsetは-24から24までの整数、有理数、少数でなければいけません。 もし tz_offsetは 1/3600の倍数でなければ、 最も近い1/3600の倍数に丸められます。

  もし tz_offsetが存在しなければ、 オフセットにはローカル時刻が仮定されます。

  `decode_time`も参照してください。

  例:

      (%i1) encode_time (1900, 1, 1, 0, 0, 0, 0);
      (%o1)                           0
      (%i2) encode_time (1970, 1, 1, 0, 0, 0, 0);
      (%o2)                      2208988800
      (%i3) encode_time (1970, 1, 1, 8, 30, 0, 8.5);
      (%o3)                      2208988800
      (%i4) encode_time (1969, 12, 31, 16, 0, 0, -8);
      (%o4)                      2208988800
      (%i5) encode_time (1969, 12, 31, 16, 0, 1/1000, -8);
                                2208988800001
      (%o5)                     -------------
                                    1000
      (%i6) % - 2208988800;
                                     1
      (%o6)                         ----
                                    1000

  Categories: Time and date functions

関数: decode_time
`decode_time` (T, tz_offset)
`decode_time` (T)

  GMT 1900年1月1日0時からの(場合によって少数部を含む)秒数を与えると、 年、月、月の日、時、分、秒、タイムゾーンオフセットからなるリストで表現された 日にちと時刻を返します。

  tz_offsetは時間単位でタイムゾーンのオフセットを示します。 GMTの東が正で西が負です。 tz_offsetは-24から24までの整数、有理数、少数でなければいけません。 もし tz_offsetは 1/3600の倍数でなければ、 最も近い1/3600の倍数に丸められます。

  もし tz_offsetが存在しなければ、 オフセットにはローカル時刻が仮定されます。

  `encode_time`も参照ください。

  例:

      (%i1) decode_time (0, 0);
      (%o1)               [1900, 1, 1, 0, 0, 0, 0]
      (%i2) decode_time (0);
      (%o2)             [1899, 12, 31, 16, 0, 0, - 8]
      (%i3) decode_time (2208988800, 9.25);
                                                37
      (%o3)              [1970, 1, 1, 9, 15, 0, --]
                                                4
      (%i4) decode_time (2208988800);
      (%o4)             [1969, 12, 31, 16, 0, 0, - 8]
      (%i5) decode_time (2208988800 + 1729/1000, -6);
                                            1729
      (%o5)           [1969, 12, 31, 18, 0, ----, - 6]
                                            1000
      (%i6) decode_time (2208988800 + 1729/1000);
                                            1729
      (%o6)           [1969, 12, 31, 16, 0, ----, - 8]
                                            1000

  Categories: Time and date functions

関数: absolute_real_time ()

  GMTで1900年1月1日0時からの秒数を返します。 戻り値は整数です。

  `elapsed_real_time`と `elapsed_run_time`も参照してください。

  例:

      (%i1) absolute_real_time ();
      (%o1)                      3385045277
      (%i2) 1900 + absolute_real_time () / (365.25 * 24 * 3600);
      (%o2)                   2007.265612087104

  Categories: Time and date functions

関数: elapsed_real_time ()

  Maximaがもっとも最近スタートしたか再スタートして以来の (1秒の小数を含む)秒数を返します。 戻り値は浮動小数点数です。

  `absolute_real_time`と `elapsed_run_time`も参照してください。

  例:

      (%i1) elapsed_real_time ();
      (%o1)                       2.559324
      (%i2) expand ((a + b)^500)$
      (%i3) elapsed_real_time ();
      (%o3)                       7.552087

  Categories: Time and date functions

関数: elapsed_run_time ()

  Maximaがもっとも最近スタートしたか再スタートして以来 Maximaが計算に費やした(1秒の小数を含む)秒数の概算を返します。 戻り値は浮動小数点数です。

  `absolute_real_time`と `elapsed_real_time`も参照してください。

  例:

      (%i1) elapsed_run_time ();
      (%o1)                         0.04
      (%i2) expand ((a + b)^500)$
      (%i3) elapsed_run_time ();
      (%o3)                         1.26

  Categories: Time and date functions

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

This document was generated by 市川雄二 on October, 4 2018 using texi2html 1.76.