目次 前ページ 次ページ

コマンド


:efloat [prec] 倍精度浮動小数点型(指数表記で出力される。入力時の表記は問わない。)
:float [prec] 倍精度浮動小数点型(小数点表記で出力される。入力時の表記は問わない。)
:gfloat [prec] 倍精度浮動小数点型。値に応じて上の二つのタイプが使い分けられる。インタープリタ起動直後と、外部関数・ユーザー定義関数起動直後は、このタイプになっている。
:ecomplex [prec] 複素数型(実数部・虚数部ともに指数表記で出力される。入力時の表記は問わない。)
:complex [prec] 複素数型(実数部・虚数部ともに小数点表記で出力される。入力時の表記は問わない。)
:gcomplex [prec] 複素数型。値に応じて上の二つのタイプが使い分けられる。
:prec prec

precには浮動小数点数の表示精度を指定する。\-1を指定すると、6を指定したことと同じになる。また、0を指定すると、表示対象の浮動小数点数に最適な有効桁数が、自動的に設定される。

インタープリタ起動直後と、外部関数・ユーザー定義関数起動直後は、6である。

なお、変数の内部的な値には関係しない。内部的な値は常に倍精度を保持する。

:fract 分数型
:mfract 帯分数型
:htime [fps] 時間型(単位:時)
:mtime [fps] 時間型(単位:分)
:time [fps] 時間型(単位:秒)
:ftime [fps] 時間型(単位:フレーム)
:fps fps

fpsには秒間フレーム数を指定する。0.0を指定すると、30.0を指定したことと同じになる。

インタープリタ起動直後と、外部関数・ユーザー定義関数起動直後は、30.0である。

:char [radix] 符号付き8ビット整数型
:uchar [radix] 符号なし8ビット整数型
:short [radix] 符号付き16ビット整数型
:ushort [radix] 符号なし16ビット整数型
:long [radix] 符号付き32ビット整数型
:ulong [radix] 符号なし32ビット整数型
:int [radix] 符号付き32ビット整数型
:uint [radix] 符号なし32ビット整数型
:radix radix

radixには整数における基数を指定する。2から36の値をとる。\-1を指定すると、10を指定したことと同じになる。

インタープリタ起動直後と、外部関数・ユーザー定義関数起動直後は、10である。

10進以上の数値の表現方法にはアルファベットを用いる。大文字・小文字は問わない。例えば、:radix \36を発行して36進にすると、A/aで10進の10になり、Z/zで10進の35になる。

:ptype 親プロセスの型

型の変更だけでは変数の内部的な値は保持される。例えば、

:float
@a=12.345
:int # ここで一旦、整数型に変更
@b=@a
:float # 型を浮動小数点型に戻す
@c=@a

のように記述した場合、@bには12が代入されるが、@cには12.345が代入される。

:rad [0|1]

ラジアン。親プロセスに戻る時に計算結果の単位を変換しない/変換する。パラメータを省略した場合、:rad 0と同じ。

インタープリタ起動直後と、外部関数・ユーザー定義関数起動直後は、:rad 0の状態になっている。

:deg [0|1] 度。親プロセスに戻る時に計算結果の単位を変換しない/変換する。パラメータを省略した場合、:deg 0と同じ。
:grad [0|1] グラジアン。親プロセスに戻る時に計算結果の単位を変換しない/変換する。パラメータを省略した場合、:grad 0と同じ。

角度の単位指定コマンドのパラメータに1を指定すると、親プロセスに戻る時に、計算結果が現在のプロセスの単位から親プロセスの単位に変換される。例えば、

        func test1
                :deg 0 # 角度の単位は「度」
                return 90
        endfunc
        func test2
                :deg 1 # 角度の単位は「度」
                return 90
        endfunc
        :rad # 角度の単位は「ラジアン」
        @a=test1
        @b=test2

のように記述した場合、@aには90が代入されるが、@bには90(度)をラジアンに変換した値1.570796...が代入される。

なお、角度を求める外部関数・ユーザー定義関数では、関数の内部で、パラメータに1を指定して角度の単位指定コマンドを発行することが必須である。(外部関数サンプル:atan.cef

:angle num

パラメータ値の単位変換

外部関数・ユーザー定義関数内で、指定番号numのパラメータ値を親プロセスの単位での角度とみなし、現在のプロセスでの単位に変換する。例えば、

        func torad
                :rad
                :angle 0
                return @0
        endfunc
        :deg
        @t=torad 180

と実行されると、関数torad内での@0の値は180(度)をラジアンに変換した値3.141592...になり、@tには3.141592...が代入される。

なお、本コマンドを発行する前に、角度の単位指定コマンドで、親プロセスでの単位と現在のプロセスでの単位を指定しておく必要がある。

なお、外部関数・ユーザー定義関数で、関数のパラメータとして角度をとる場合、関数の内部で:angleコマンドを発行することが必須である。(外部関数サンプル:sin.cef

:label label @index

変数にラベルを付ける。本コマンド発行以降、@indexの代わりにlabelと記述できる。以下に例を示す。

:label test_var @t
test_var=123
:label label @@index

配列にラベルを付ける。本コマンド発行以降、@@indexの代わりにlabelと記述できる。以下に例を示す。

:label test_array @@t
test_array 0=123
:params label ...

引数用変数または配列にラベルを設定する。10個まで指定できる。

labelの前に&を記述すると、コマンド:param n 1の機能をする。また、labelの後ろに[]を記述すると、引数用配列にラベル設定する。例えば、

        :params a &b c[]

は、

        :label a @0
        :label b @1
        :param 1 1
        :label c @@2

と同等の機能をする。

:var var_name ...

動的変数を定義する。複数同時に定義できる。本コマンド発行以降、var_nameを変数として使用できる。以下に例を示す

:var test_var
test_var=123
:array array_name ...

動的配列を定義する。複数同時に定義できる。本コマンド発行以降、array_nameを配列として使用できる。以下に例を示す。

:array test_array
test_array 0=123
:define label [val]

定数を定義する。valが指定されていると、定数値がvalになる。指定されていないと、値は1になる。本コマンド発行以降、labelを定数として使用できる。以下に例を示す。

:define TEST 12.345
@t=TEST
:enum [label [val]] ...

列挙子を定義する。デフォルトでは、最初の列挙子の値が0になる。以降の列挙子は前の列挙子より1つずつ値が大きくなる。valを指定することにより、特定の列挙子の値を明示的に指定することができる。以下に例を示す。

:enum FALSE TRUE
:enum BIN 1 OCT DEC HEX

本コマンド発行以降、labelを定数として使用できる。

:undef name コマンド:label:var:array:define:enumによる定義を削除する。

i(小文字)単体では、虚数単位をあらわす定数として定義されているため、var_namearray_nameまたはlabelとして使用できない。iiなど、単体でなければ構わない。

:ans 0|1|\-1

計算結果を返さない/返す/前回の設定に戻す

インタープリタ起動直後と、外部関数・ユーザー定義関数起動直後は、:ans 1の状態になっている。外部関数・ユーザー定義関数の実行が終了して親プロセスに戻るときに計算結果を返さなくてもよい場合、外部関数・ユーザー定義関数内で:ans 0を発行する。

なお、外部関数・ユーザー定義関数内で設定を変更しても親プロセスには反映されない。

:assert 0|1|\-1

診断メッセージOFF/ON/前回の設定

インタープリタ起動直後は:assert 0の状態になっている。外部関数・ユーザー定義関数内での設定は、親プロセスの設定を引き継ぐ。また、子プロセスへ設定は引き継がれる。

なお、外部関数・ユーザー定義関数内で設定を変更しても親プロセスには反映されない。

:warn 0|1|\-1

警告メッセージOFF/ON/前回の設定

インタープリタ起動直後は:warn 1の状態になっている。外部関数・ユーザー定義関数内での設定は、親プロセスの設定を引き継ぐ。また、子プロセスへ設定は引き継がれる。

なお、外部関数・ユーザー定義関数内で設定を変更しても親プロセスには反映されない。

:debug 0|1|\-1

デバッガ無効/有効/前回の設定

インタープリタ起動直後は:debug 0の状態になっている。外部関数・ユーザー定義関数内での設定は、親プロセスの設定を引き継ぐ。また、子プロセスへ設定は引き継がれる。

なお、外部関数・ユーザー定義関数内で設定を変更しても親プロセスには反映されない。

:param num 0|1

パラメータ値変更の親プロセスへの反映OFF/ON

外部関数・ユーザー定義関数内で、指定番号numのパラメータ値を変更した場合に、親プロセスに値を反映させるかどうか指定する。numは、0から9の値をとる。

外部関数・ユーザー定義関数起動直後は、全パラメータが反映OFFの設定になっている。

例えば外部関数testを、

:param 0 1
:param 1 0
@0=123
@1=456

と記述して、

!test @A @B

と実行すると、@Aには@0の値が反映されるが、@Bには@1の値が反映されない。

:params 0|1 ...

パラメータ値変更の親プロセスへの反映OFF/ON。10個まで指定できる。例えば、

        :params 1 1 0

は、

        :param 0 1
        :param 1 1
        :param 2 0

と同等の機能をする。


:real var val 変数varにおける複素数値の実数部を設定する。
:imag var val 変数varにおける複素数値の虚数部を設定する。

:num var val 変数varにおける分数の分子を設定する。
:denom var val 変数varにおける分数の分母を設定する。

:srand val 乱数を初期化する。
:localtime val "format [var ...] 時刻値valから現地時刻を書式付きで入力する。

:clear テキスト画面をクリアする。
:warn "message 警告メッセージを出力する。ただし、:warn 0が発行されていると、出力が抑制される。
:error "message エラーメッセージを出力する。
:print ["str]|[val] ... 文字列を出力する。
:println ["str]|[val] ... 文字列を出力する。文字列の末尾で改行される。
:printf "format [val ...] 文字列を書式付きで出力する。
:scan [["prompt] var|array] ... 変数varの値または文字列arrayを入力する。"promptを指定すると、入力時のタイトル文字列としてpromptが表示される。
:scanf "format [var|array ...] 変数varの値または文字列array書式付きで入力する。

1)message内のハイフン(-)は、外部関数・ユーザー定義関数名に置き換えられる。置き換えたくない場合、エスケープ文字\でエスケープする必要がある。注意すべき点は、インタープリタが"messageを文字列定数として識別した時点で、ハイフンがエスケープ文字\でエスケープされる形になっている必要があるため、ハイフンの前に文字\を2個記述する必要がある。例えば以下のとうり。

"\\\-
["\\-]

(前者の例でのハイフンの直前の\は、ハイフンが二項演算子のマイナスとして解釈されるのを抑制するためのものである。)

2)"message"strまたは"formatの代わりとして文字列表現を指定することができる。

3)strformatには、以下のエスケープ文字を埋め込むことができる。

\a 警告(ベル)文字
\b バックスペース
\e ASCIIエスケープ文字(1Bh)
\f 改頁(フォームフィード)
\n 改行
\r 復帰
\t 水平タブ
\v 垂直タブ
\\ \(バックスラッシュ)
:gworld w h

オフスクリーンを作成する。現在色と現在点は不定になる。

wまたはh0または負の値を指定すると、オフスクリーンが消去される。

:gclear [col] オフスクリーンをクリアする。colが省略されると、0でクリアされる。
:gcolor col 現在色を設定する。
:gfill x y w h [col] オフスクリーンを塗りつぶす。colが指定されると、現在色がcolに設定される。なお、オフスクリーン・イメージのサイズで自動的にクリッピングされる。
:gmove x1 y1 現在点を設定する。
:gline [x1 y1] x2 y2 [col] ラインを描画する。colが指定されると、現在色がcolに設定される。x1y1が指定されていないと、現在点が使用される。描画後、x2y2が現在点に設定される。なお、オフスクリーン・イメージのサイズで自動的にクリッピングされる。
:gput x y [col] ドットを描画する。colが指定されると、現在色がcolに設定される。指定座標がオフスクリーンの外側の場合、何も起こらない。
:gput array 指定された配列名arrayの配列からイメージを描画する。配列は、二次元であることを前提としている。
:gget x y var ドット値を変数varに格納する。指定座標がオフスクリーンの外側の場合、変数varには値0が格納される。
:gget array イメージを、指定された配列名arrayの配列に格納する。配列は、二次元で構築される。
:gupdate [0|1|\-1]

画面更新のOFF/ON/前回の設定。パラメータを省略した場合、:gupdate 1と同じ。

インタープリタ起動直後は:gupdate 1の状態になっている。外部関数・ユーザー定義関数内での設定は、親プロセスの設定を引き継ぐ。また、子プロセスへ設定は引き継がれる。

なお、外部関数・ユーザー定義関数内で設定を変更しても親プロセスには反映されない。

通常、まず:gupdate 0で画面更新OFFにしてから各種描画処理をバックグラウンドで行い、最後に:gupdate \-1で画面更新フラグを元に戻す。


:window left bottom right top

ウィンドウを設定する。現在色と現在点は保持される。

:gworldコマンドで確保されたオフスクリーン・イメージの、左下座標に対応する論理座標をleftbottomに、右上座標に対応する論理座標をrighttopに指定する。leftright、または、bottomtopの大小は問わない。

例えば、

:window \-3 \-2 10 8

で、次のような座標系が設定される。

また、例えば、

:gworld 79 24
:window 0 23 78 0

(ウィンドウのbottomはオフスクリーンの高さ-1、rightはオフスクリーン幅-1)で、オフスクリーンとウィンドウとが一致した状態になる。つまり、:gfill:wfill:gmove:wmove:gline:wline:gput:wput:gget:wgetコマンドが、同じ意味になる。

なお、:gworldコマンドが発行されるとウィンドウ状態は初期化され、オフスクリーンとウィンドウとが一致した状態になる。

:wfill x y w h [col] ウィンドウ内を塗りつぶす。colが指定されると、現在色がcolに設定される。なお、自動的にクリッピングされる。
:wmove x1 y1 現在点をウィンドウ座標で設定する。
:wline [x1 y1] x2 y2 [col] ウィンドウ内にラインを描画する。colが指定されると、現在色がcolに設定される。x1y1が指定されていないと、現在点が使用される。描画後、x2y2が現在点に設定される。なお、自動的にクリッピングされる。
:wput x y [col] ウィンドウ内にドットを描画する。colが指定されると、現在色がcolに設定される。指定座標がウィンドウの外側の場合、何も起こらない。
:wget x y var ウィンドウ内のドット値を変数varに格納する。指定座標がウィンドウの外側の場合、変数varには値0が格納される。

:rectangular 直交座標モードに設定する。インタープリタ起動直後は、このタイプになっている。
:parametric 媒介変数モードに設定する
:polar 極座標モードに設定する
:logscale x|y|xy [base]

直交座標モードにおけるX軸またはY軸を対数座標系に設定する。baseには底を指定する。省略すると10.0になる。

なお、本コマンドの発行では直交座標モードに切り替わらない。直交座標モードに切り替えるには、別途 :rectangularコマンドを発行する必要がある。

:nologscale x|y|xy

直交座標モードにおけるX軸またはY軸の対数座標系の設定を解除する。

なお、本コマンドの発行では直交座標モードに切り替わらない。直交座標モードに切り替えるには、別途 :rectangularコマンドを発行する必要がある。

:plot ["expr] [x1 x2] [col]
:replot [x1 x2] [col]

(直交座標モード用)与えられた演算式"exprを基にしてプロットを行う。

"exprを省略すると、前回の演算式が使用される。

x1x2にプロットを行うX軸方向の範囲を指定できる。ウィンドウ座標で指定する。x1x2が指定されていないと、ウィンドウ左端から右端までのプロットが行われる。

colが指定されると、現在色がcolに設定される。

演算式"expr中に、X座標に対応する変数としてxまたは@xを使用することができる。

:plot ["expr1 "expr2] [t1 t2 step] [col]
:replot [t1 t2 step] [col]

(媒介変数モード用)与えられた演算式"expr1をX値、"expr2をY値としてプロットを行う。

"expr1"expr2を省略すると、前回の演算式が使用される。

t1t2にパラメータの範囲を、stepにサンプリング単位を指定できる。省略すると、前回のパラメータ範囲とサンプリング単位が使用される。

colが指定されると、現在色がcolに設定される。

演算式"expr1"expr2中に、パラメータ値に対応する変数としてtまたは@tを使用することができる。

:plot ["expr] [t1 t2 step] [col]
:replot [t1 t2 step] [col]

(極座標モード用)与えられた演算式"exprを基にしてプロットを行う。

"exprを省略すると、前回の演算式が使用される。

t1t2に角度の範囲を、stepにサンプリング単位を指定できる。省略すると、前回の角度範囲とサンプリング単位が使用される。なお、t1t2に指定する値は、現在の角度単位コマンド(:deg:rad:grad)で設定されている単位に依存する。

colが指定されると、現在色がcolに設定される。

演算式"expr中に、角度に対応する変数としてtまたは@tを使用することができる。

"exprの代わりとして文字列表現を指定することができる。


目次 前ページ 次ページ