2.04.組み込み関数1

以下の組み込み関数が存在します。

戻り値のない関数は、式の中では使えません。


abs() 絶対値を返します。

acos() アークコサインを返します。

arraylen() 配列変数の要素数を返します。

arc() 円を描画します。(戻り値なし)

asin() アークサインを返します。

atan() アークタンジェントを返します。

atan2() アークタンジェント2を返します。

ceil() 引数以上の最小の整数を返します。

chkvar() 変数の存在を確認します。

clear() 画面の指定領域をクリアします。(戻り値なし)

clearkey() キー入力バッファをクリアします。(戻り値なし)

clearvar() 変数をすべて削除します。(戻り値なし)

clip() 描画領域を設定します。(戻り値なし)

cls() 画面全体をクリアします。(戻り値なし)

col() 描画色を設定します。(戻り値なし)

color() 描画色をRGBで設定します。(戻り値なし)

copy() 配列変数を一括コピーします。(戻り値なし)

copyall() 配列変数の全要素を一括コピーします。(戻り値なし)

cos() コサインを返します。

dcos() コサインを返します。

dbgdrawfix() drawimg()の不具合対策用です。(戻り値なし)

dbgloopset() ループの時間制限を解除します。(戻り値なし)

dbgpointer() ポインタ変数の内容を文字列にして返します。

dbgprint() デバッグ表示を行います。(戻り値なし)

dbgstop() プログラムを停止します。(戻り値なし)

dbgtest() 2つの値が等しいかをテストします。

defconst() 定数を定義します。(戻り値なし)

disarray() 配列変数を削除します。(戻り値なし)

disconst() 定数を削除します。(戻り値なし)

disimg() Image変数を削除します。(戻り値なし)

disvar() 変数を削除します。(戻り値なし)

download() データをダウンロードします。

downloadimg() 画像をダウンロードします。

dpow() べき乗を返します。

drawarea() Image変数に格納した画像の指定領域を描画します。(戻り値なし)

drawimg() Image変数に格納した画像を描画します。(戻り値なし)

drawimgex() Image変数に格納した画像を描画します。画像の反転等が行えます。(戻り値なし)

drawscaledimg() Image変数に格納した画像の指定領域を拡大/縮小して描画します。(戻り値なし)

dsin() サインを返します。

dtan() タンジェントを返します。

exp() 自然対数の底eのべき乗を返します。

farc() 円を塗りつぶします。(戻り値なし)

floor() 引数以下の最大の整数を返します。

foval() 扇形を塗りつぶします。(戻り値なし)

frect() 四角形を塗りつぶします。(戻り値なし)

fround() 角丸四角形を塗りつぶします。(戻り値なし)

funccall() ユーザ定義の関数を再帰的にならない形で呼び出します。(戻り値なし)

funcgoto() ユーザ定義の関数をコールスタックを増加させないで呼び出します。(戻り値なし)

gc() ガーベージコレクトを行います(実際には何もしません)。(戻り値なし)

getoutdata() 外部データを取得します。

getpixel() 画面の1点の色を取得します。

imgheight() 画像の高さを返します。

imgwidth() 画像の幅を返します。

index() 文字列を検索して見つかった位置を返します。

input() 携帯に対応したキー入力を行います。

inputdlg() 入力ダイアログを表示します。

int() 引数を整数に変換して返します。小数部は切り捨てます。

join() 配列変数の要素を結合した文字列を返します。

keyinput() ブラウザのキー入力を行います。

keyscan() ブラウザで特定のキーの押下状態を返します。

line() 線を描画します。(戻り値なし)

linewidth() 線の幅を設定します。(戻り値なし)

load() データをロードします。

loadimg() 文字列から画像を作成してImage変数に格納します。(戻り値なし)

loadimgdata() data URI schemeの文字列から画像を作成してImage変数に格納します。(戻り値なし)

loadimgstat() loadimgdata()の完了待ち状態を返します。

lock() 画面の表示をロックします(実際には何もしません)。(戻り値なし)

log() 対数を返します。

makearray() 配列変数を作成します。(戻り値なし)

makeimg() 画像を新規作成してImage変数に格納します。(戻り値なし)

max() 最大値を返します。

min() 最小値を返します。

msgdlg() メッセージダイアログを表示します。(戻り値なし)

onlocal() ローカル変数を有効にします。(戻り値なし)

offlocal() ローカル変数を無効にします。(戻り値なし)

origin() 描画の原点を設定します。(戻り値なし)

oval() 円弧を描画します。(戻り値なし)

point() 点を描画します。(戻り値なし)

pow() べき乗を返します。

rect() 四角形を描画します。(戻り値なし)

replace() 文字列を置換します。

rotate() 座標系の回転を設定します。(戻り値なし)

round() 角丸四角形を描画します。(戻り値なし)

save() データをセーブします。(戻り値なし)

scale() 座標系の拡大縮小を設定します。(戻り値なし)

setfont() 文字サイズを設定します。(戻り値なし)

setfontsize() 文字サイズを数値で設定します。(戻り値なし)

setoutdata() 外部データを設定します。(戻り値なし)

setpixel() 色を指定して点を描画します。(戻り値なし)

setscl() 小数の四捨五入を行います。

setscsize() 画面のサイズを設定します。(戻り値なし)

sign() 数値の符号に対応した値を返します。

sign2() 数値の符号に対応した値を返します(ただし0は正と判定)。

sin() サインを返します。

sleep() 一定時間待ちます。(戻り値なし)

sleepsync() 処理時間を考慮して一定時間待ちます。(戻り値なし)

soft1() ソフトキー1の表示を設定します。(戻り値なし)

soft2() ソフトキー2の表示を設定します。(戻り値なし)

split() 文字列を区切り文字列で分割します。

spmode() 互換モードを設定します。(戻り値なし)

sqrt() 平方根を返します。

strat() 文字列の指定位置の文字を返します。

strlen() 文字列の長さを返します。

stwide() 文字列の表示上の幅(px)を返します。

substr() 文字列の指定位置から指定文字数だけ取り出して返します。

tan() タンジェントを返します。

text() 文字を表示します。(戻り値なし)

trgt() 描画先を設定します。(戻り値なし)

trim() 文字列の前後の空白を削除して返します。

unlock() 画面の表示ロックを解除します(実際には何もしません)。(戻り値なし)

yndlg() 確認ダイアログを表示します。

@() 配列変数に値を一括代入します。(戻り値なし)


2.4.1.組み込み関数1の詳細


--

abs(a1)

a1の絶対値を返します。


--

acos(a1)

a1のアークコサインを返します。単位は度です。

戻り値の範囲は 0~180度になります。


--

arraylen(arr,a1,a2)

配列変数arrの添字a1~a2の間の要素数をカウントして返します。

(arrには[ ]をつけないで配列変数名だけを指定します)

a1とa2は省略可能です。

a1を省略した場合には0を指定したことになります。

a2を省略した場合には、添字を1ずつ加算していき、配列の要素が

見つからなかった時点でカウントを停止します。

例1.

a[0]=0

a[1]=0

a[2]=0

ret=arraylen(a)

を実行すると、

ret=3

となります。

例2.

a[1]=0

a[3]=0

a[5]=0

ret=arraylen(a,1,5)

を実行すると、

ret=3

となります。


--

arc(x,y,w,h)

左上座標が(x,y)で幅w,高さhのだ円を描画します。

hを省略すると、幅と高さをどちらもwとして描画します。

(内部を塗りつぶしたいときはfarc()を使用してください)

(戻り値なし)


--

asin(a1)

a1のアークサインを返します。単位は度です。

戻り値の範囲は -90~90度になります。


--

atan(a1)

a1のアークタンジェントを返します。単位は度です。

戻り値の範囲は -90~90度になります。


--

atan2(y,x)

座標(x,y)のアークタンジェント2を返します。単位は度です。

戻り値の範囲は -180~180度になります。

引数の順番が y,xの順であるため注意が必要です。


--

ceil(a1)

a1以上の最小の整数を返します。


--

chkvar(a1)

変数a1の存在を確認します。

変数a1が存在すれば1を、存在しなければ0を返します。


--

clear(x,y,w,h)

画面の左上座標が(x,y)で幅w,高さhの領域をクリアします。

(trgt()で描画先が変更されていた場合には、描画先の画像をクリアします)

(戻り値なし)


--

clearkey()

キー入力バッファをクリアします。

input()およびkeyinput()で使用するキー入力バッファを両方ともクリアします。

(戻り値なし)


--

clearvar()

変数をすべて削除します(グローバル変数,ローカル変数,Image変数をすべて削除)。

(戻り値なし)


--

clip(x,y,w,h)

左上座標が(x,y)で幅w,高さhの領域をクリッピング領域(描画領域)に設定します。

以後、クリッピング領域(描画領域)の外側に描画しても 表示されません。

(戻り値なし)


--

cls()

画面全体をクリアします。

(trgt()で描画先が変更されていた場合には、描画先の画像をクリアします)

(戻り値なし)


--

col(c)

描画色を設定します。

色cは RGB各8ビット、合計24ビットの数値で色を指定します。

(例えば 0xFF0000 は赤色になります)

(戻り値なし)


--

color(r,g,b)

描画色をRGBで設定します。

r,g,bは 赤,緑,青の輝度を 0-255までの数値で指定します。

(戻り値なし)


--

copy(arr1, i, arr2, j, n)

配列変数の要素を一括コピーします。

arr1のi番目からn個分の要素を arr2のj番目からに一括コピーします。

同一配列の重なった領域の場合でも適切にコピーされます(1個分ずらしてコピー等)。

arr1,arr2には[ ]をつけないで配列変数名だけを指定します。

(戻り値なし)


--

copyall(arr1, arr2)

配列変数の全要素を一括コピーします。

arr1の全ての要素をarr2に一括コピーします。

arr1,arr2には[ ]をつけないで配列変数名だけを指定します。


注意点として、本命令はすべての変数を検索するため、時間がかかる場合があります。


(戻り値なし)


--

cos(a1)

a1のコサインを返します。a1の単位は度です。

spmode(1)で互換モードにした場合には、100倍した整数値を返します。


--

dbgdrawfix()

Chrome v57 で GPU使用あり設定 (accelerated-2d-canvas : ON) のとき、

getpixel(), fillarea() 等の内部で画面データを取得する命令を実行した後、

256x256 より大きい画像を drawimg() すると、画面が更新されない状態になる

不具合が見つかりました。

このとき、本命令を実行することで、表示を復旧できます。(暫定対策です)


(本不具合は、Chrome v57 のマイナーバージョンアップ(v57.0.2987.133)で

修正されました。このため、もう本命令を実行する必要はありません。

(2017-3-30 確認))


(戻り値なし)


--

dbgloopset(mode)

ループの時間制限を解除します。

modeに0以外を指定した場合、ループの時間制限を解除します。

modeに0を指定した場合、ループの時間制限を再度有効にします。

ループの時間制限を解除すると、ループのプログラムでブラウザが固まった場合に

プログラムを強制終了しなくなります。

(ループのプログラムの制限事項については、アプリケーション説明の「1.3.制限事項」参照)

(戻り値なし)


--

dbgpointer(a1,show)

ポインタ変数a1の内容を表示します。


例えば、

a=&b

dbgpointer(a)

を実行すると、画面下部のデバッグ表示領域に

a = {"kind":0,"name":"b","sc_no":0,"sc_id":0}

のように表示します。


表示する内容は、ポインタ変数が指している先の 変数の情報になります。

kind は変数の種別です。0 がグローバル変数、1 がローカル変数、

2 がローカル変数かつスコープ有効 であることを示します。

name は変数名です。

sc_no と sc_id は、変数が所属するスコープの情報です。

(sc_no と sc_id は 変数の種別が 2 のときのみ有効です)


showに0を指定すると、表示後に改行します。

showに1を指定すると、表示後に改行しません。

showに2を指定すると、何も表示しません。

showは省略可能です。省略した場合には表示後に改行します。


戻り値は、ポインタ変数a1の内容を文字列にして返します。

(改行は含みません)


--

dbgprint(msg,show)

デバッグ表示を行います。

画面下部のデバッグ表示領域にmsgの内容を表示します。


showに0を指定すると、表示後に改行します。

showに1を指定すると、表示後に改行しません。

showに2を指定すると、何も表示しません。

showは省略可能です。省略した場合には表示後に改行します。


(戻り値なし)


--

dbgstop(msg)

プログラムを停止します。

このとき画面下部のデバッグ表示領域にmsgの内容を表示できます。

msgは省略可能です。

(戻り値なし)


--

dbgtest(msg, a, b, err, show)

2つの値aとbが等しいかをテストします。

結果は画面下部のデバッグ表示領域に表示します。

aとbが等しければ「MSG : OK」と表示します。

aとbが等しくなければ「MSG : NG (a = X , b = Y)」と表示します。

(MSGの部分には、msgに指定した文字列が入ります。

XとYの部分には、aとbの値がそれぞれ入ります)


errには比較時の許容誤差を指定します。

errに正の数値を指定すると、aとbの差の絶対値がerrより小さい場合に 等しいと判定します。

errに0を指定すると、比較時に誤差を許容しません。

errは省略可能です。省略した場合には0を指定したことになります。


showに0を指定すると、常に結果を表示します。

showに1を指定すると、aとbが等しくない場合のみ 結果を表示します。

showに2を指定すると、何も表示しません。

showは省略可能です。省略した場合には常に結果を表示します。


戻り値は、aとbが等しければ0を返します。

aとbが等しくなければ1を返します。


--

dcos(a1)

a1のコサインを返します。a1の単位は度です。


--

defconst(name,value)

名前がnameで値がvalueである定数を定義します。

例えば defconst(c1,100) とすると、text(c1) で 100 を表示できます。

単純なトークン置換用であるため、valueに計算式等を指定することはできません。


本命令は、プログラム上に現れた順番に処理されます。

また、本命令は制御命令の影響を受けません。

(例えば、if文の中に書いてもスキップされません)


(戻り値なし)


--

disarray(arr,a1,a2)

配列変数arrを削除します。

(arrには[ ]をつけないで配列変数名だけを指定します)

a1とa2は省略可能です。

a1とa2の両方を省略した場合には、配列変数arrのすべての要素を削除します。

a2のみを省略した場合には、配列変数arrの添字0~a1-1の要素を削除します。

a1とa2の両方を指定した場合には、配列変数arrの添字a1~a2の要素を削除します。

(戻り値なし)


--

disconst(name)

名前がnameである定数を削除します。


本命令は、プログラム上に現れた順番に処理されます。

また、本命令は制御命令の影響を受けません。

(例えば、if文の中に書いてもスキップされません)


(戻り値なし)


--

disimg(a1)

Image変数a1を削除します。

(戻り値なし)


--

disvar(a1)

変数a1を削除します。

(戻り値なし)


--

download(a1,fname,flag)

データをダウンロードします。

a1の内容をテキストファイルに変換して、ブラウザでダウンロードします。

fnameにはファイル名を指定します。

fnameは省略可能です。省略した場合、ファイル名は"download"になります。

戻り値は、a1の内容をdata URI schemeに変換した文字列になります。

flagに1を指定すると ダウンロードは行わず、戻り値のみを返します。

flagは省略可能です。省略した場合、ダウンロードを行います。


--

downloadimg(fname,flag)

画像をダウンロードします。

trgt()で指定されている描画先の画像(デフォルトでは画面の表示内容)を、

png形式の画像ファイルに変換して、ブラウザでダウンロードします。

fnameにはファイル名を指定します。

fnameは省略可能です。省略した場合、ファイル名は"download.png"になります。

戻り値は、png形式の画像ファイルをdata URI schemeに変換した文字列になります。

flagに1を指定すると ダウンロードは行わず、戻り値のみを返します。

flagは省略可能です。省略した場合、ダウンロードを行います。


--

dpow(a1,a2)

a1のa2乗を返します。


--

drawarea(img,x,y,sx,sy,w,h)

Image変数 imgに格納した画像の 左上座標が(sx,sy)で幅w,高さhの領域を、

画面の座標(x,y)が左上となる位置に描画します。

imgにscreenを指定した場合、画面の表示内容をtrgt()で指定した描画先に 転送する命令になります。

(戻り値なし)


--

drawimg(img,x,y,anc)

Image変数 imgに格納した画像を 画面の座標(x,y)の位置に描画します。

ancには 右寄せ,下寄せ等のアンカーを指定します。

(アンカーについては組み込み定数を参照)

例えば右下に寄せる場合には RIGHT | BOTTOM というようにORで指定します。

ancを0にした場合は左寄せと上寄せを指定したことになります。

imgにscreenを指定した場合、画面の表示内容をtrgt()で指定した描画先に 転送する命令になります。

(戻り値なし)


--

drawimgex(img,sx,sy,w,h,t,x,y,anc)

Image変数 imgに格納した画像の 左上座標が(sx,sy)で幅w,高さhの領域を、

画面の座標(x,y)の位置に描画します。

変換tには画像の反転等を数値で指定します。

tに指定可能な値は以下の通りです。

t=0:変換なし

t=1:上下反転

t=2:左右反転

t=3:180度回転

t=4:左右反転+270度回転

t=5:90度回転

t=6:270度回転

t=7:左右反転+90度回転

また、ancには 右寄せ,下寄せ等のアンカーを指定します。

(アンカーについては組み込み定数を参照)

例えば右下に寄せる場合には RIGHT | BOTTOM というようにORで指定します。

ancを0にした場合は左寄せと上寄せを指定したことになります。

imgにscreenを指定した場合、画面の表示内容をtrgt()で指定した描画先に 転送する命令になります。

(戻り値なし)


--

drawscaledimg(img,x,y,w,h,sx,sy,sw,sh)

Image変数 imgに格納した画像の 左上座標が(sx,sy)で幅sw,高さshの領域を、

画面の左上座標が(x,y)で幅w,高さhの領域に 拡大/縮小して描画します。

imgにscreenを指定した場合、画面の表示内容をtrgt()で指定した描画先に 転送する命令になります。

(戻り値なし)


--

dsin(a1)

a1のサインを返します。a1の単位は度です。


--

dtan(a1)

a1のタンジェントを返します。a1の単位は度です。


--

exp(a1)

自然対数の底eのa1乗を返します。


--

farc(x,y,w,h)

左上座標が(x,y)で幅w,高さhのだ円を塗りつぶします。

hを省略すると、幅と高さをどちらもwとして描画します。

(輪郭のみを表示したいときはarc()を使用してください)

(戻り値なし)


--

floor(a1)

a1以下の最大の整数を返します。


--

foval(x,y,w,h,d1,d2)

左上座標が(x,y)で幅w,高さhで 開始角がd1度,描画角がd2度の 扇形を塗りつぶします。

開始角は時計の3時の方向を0度とし、角度は時計と反対回りを正とします。

(輪郭のみを表示したいときはoval()を使用してください)

(戻り値なし)


--

frect(x,y,w,h)

左上座標が(x,y)で幅w,高さhの四角形を塗りつぶします。

(輪郭のみを表示したいときはrect()を使用してください)

(戻り値なし)


--

fround(x,y,w,h,rx,ry)

左上座標が(x,y)で幅w,高さhで 角の丸みの水平半径rx,角の丸みの垂直半径ryの

角丸四角形を塗りつぶします。

(輪郭のみを表示したいときはround()を使用してください)

(戻り値なし)


--

funccall(f(x),ret)

ユーザ定義の関数f(x)を(インタープリターの内部で)再帰的にならない形で呼び出します。

retにはf(x)の戻り値が入ります。retは省略可能です。


(v3.00から本命令を使う必要はなくなりました。過去との互換性のために残してあります)


(戻り値なし)


--

funcgoto(f(x))

ユーザ定義の関数f(x)をコールスタックを増加させずに呼び出します。

末尾呼び出しの関数をgoto文に変換したような効果が得られます。

f(x)の処理が終了しても、funcgoto()の次の行には戻ってこないため、

使用する際には注意が必要です。


本命令は、ユーザ定義の関数内でのみ使用可能です。

また、本命令は、式の中では使えません(例えば y=funcgoto(f(x)) 等は不可)。


(戻り値なし)


--

gc()

ガーベージコレクトを行います。

(現状は未実装のため、実際には何もしません)

(戻り値なし)


--

getoutdata(no)

番号noの外部データを取得して返します。

(外部のJavaScriptとデータをやりとりする場合に利用できます)


--

getpixel(x,y)

画面の座標(x,y)の色を返します。

色は RGB各8ビット、合計24ビットの数値になります。


--

imgheight(img)

Image変数imgに格納した画像の 高さ(px)を返します。

Image変数imgが存在しない場合には0を返します。


--

imgwidth(img)

Image変数imgに格納した画像の 幅(px)を返します。

Image変数imgが存在しない場合には0を返します。


--

index(st1,st2,i)

文字列st1から文字列st2を検索して、見つかった位置を返します。

位置は1文字目を0として数えます(例えば 2であれば3文字目に見つかったという意味です)。

見つからなかった場合には-1を返します。

iを指定すると、st1のi番目の位置から検索を開始します。

このときも 位置は1文字目を0として数えます。

iを省略すると、st1の先頭から検索を開始します。


--

input(t)

tミリ秒の間、携帯に対応したキー入力を待ちます。

tを省略すると、キー入力があるまで待ち続けます。

携帯の各ボタンは以下のように割り付けています。

上下左右 → 矢印キー

決定キー → スペース/Enter/Ctrlキー

0~9 → [0]~[9]キー

* → [z]キー

# → [x]キー

soft1 → [c]キー

soft2 → [v]キー

キー入力があれば、キーに対応した値を返します。

(戻り値については組み込み定数を参照)

キー入力がなければ0を返します。

キー入力はバッファリングされます(取りこぼし防止のため)。

キー入力バッファをクリアするにはclearkey()を呼びます。

バッファリングが不要の場合は、組み込み変数scanの利用を検討ください。


--

inputdlg(msg,val,n,ime)

入力ダイアログを表示します。

msgに表示メッセージを指定します。

valに入力の初期値(文字列)を指定します。

nに最大文字数を指定します。

imeに入力モード(=0:日本語を含めたすべての文字種,=1:英字のみ,=2:数字のみ)を指定します。

(現状は、nとimeは未対応のため無視されます)

val~imeは省略可能です。

戻り値は入力された文字列になります。

キャンセルされたか または入力がない場合には、空文字列("")が返ります。


--

int(a1)

引数a1を整数に変換して返します。小数部は切り捨てます。


--

join(arr,st1,a1,a2)

配列変数arrの添字a1~a2の要素を、結合した文字列を返します。

st1には結合の間に挿入する文字列を指定します。

a1とa2は省略可能です。

a1を省略した場合には0を指定したことになります。

a2を省略した場合には、添字を1ずつ加算して結合していき、配列の要素が

見つからなかった時点で処理を停止します。

例1.

a[0]="aaa"

a[1]=100

a[2]="bbb"

a[3]="ccc"

ret=join(a,",")

を実行すると、

ret="aaa,100,bbb,ccc"

となります。

例2.

a[0]="aaa"

a[1]=100

a[2]="bbb"

a[3]="ccc"

ret=join(a,",",1,2)

を実行すると、

ret="100,bbb"

となります。


--

keyinput(t)

tミリ秒の間、ブラウザのキー入力を待ちます。

tを省略すると、キー入力があるまで待ち続けます。

キー入力があれば、ブラウザのキープレスコードを返します。

キー入力がなければ0を返します。

キー入力はバッファリングされます(取りこぼし防止のため)。

キー入力バッファをクリアするにはclearkey()を呼びます。

バッファリングが不要の場合は、keyscan(k),keydowncode,keypresscode等の

利用を検討ください。


ブラウザのキープレスコードを調べるには以下のプログラムを実行して、

調べたいキーを押してください。

while(1){cls() text(keypresscode) sleep(10)}


--

keyscan(a1)

ブラウザのキーダウンコードがa1であるキーの 押下状態を返します。

押下中であれば1を、そうでなければ0を返します。

キーごとに状態が取得できるため、キーの同時押しに対応できます。

(同時押し可能なキーについては、キーボードの制限があります)


ブラウザのキーダウンコードを調べるには以下のプログラムを実行して、

調べたいキーを押してください。

while(1){cls() text(keydowncode) sleep(10)}


--

line(x1,y1,x2,y2)

座標(x1,y1)を始点とし 座標(x2,y2)を終点とする 線を描画します。

(戻り値なし)


--

linewidth(a1)

描画の線の幅を設定します。単位はpxです。

(戻り値なし)


--

load(n)

save()でセーブしたn番の記憶領域のデータをロードして返します。

nを省略すると0番の記憶領域のデータをロードして返します。

(現状は、save(),load() は、内部変数に保存するのみです。

プログラムが終了するとセーブデータは消えます)


--

loadimg(img,st)

文字列stから画像を作成して、Image変数imgに格納します。

作成したimgはdrawimg()で表示することができます。

文字列stはカンマ区切りの数値の羅列(csv形式)で、以下の順に記述します。


cN(色数),

c1_r(色1の赤 (0-255)),

c1_g(色1の緑 (0-255)),

c1_b(色1の青 (0-255)),

c2_r(色2の赤 (0-255)),

c2_g(色2の緑 (0-255)),

c2_b(色2の青 (0-255)),

:

cN_r(色Nの赤 (0-255)),

cN_g(色Nの緑 (0-255)),

cN_b(色Nの青 (0-255)),

cT(透過色の色番号(0-なので注意。色1は0、色2は1、色NはN-1で指定する)),

w(画像幅(pixel)),

h(画像高(pixel)),

cX(画素の色データ(=色番号(0-なので注意。色1は0、色2は1、色NはN-1で指定する))),

:

画素の色データが w × h 個続く


(戻り値なし)


--

loadimgdata(img,dat)

data URI schemeの文字列datから画像を作成して、Image変数imgに格納します。

作成したimgはdrawimg()で表示することができます。


datには、画像ファイル(jpeg等)をdata URI schemeに変換した文字列を指定します。


注意点として、本命令は画像の作成が完了するまでに時間がかかります。

そして、作成が完了するまでは Image変数imgを使用することができません。

このため、画像の作成完了を 以下のようにloadimgstat()をチェックして待つ必要があります。

loadimgdata(img,dat)

while(loadimgstat(img)){sleep(100)}


(戻り値なし)


--

loadimgstat(img)

loadimgdata()の完了待ち状態を返します。

imgには loadimgdata()の引数と同じImage変数を指定してください。

loadimgdata()の処理中は1が返ります。

loadimgdata()の処理が完了すると0が返ります。


--

lock()

画面の表示をロックします。

(現状は未実装のため、実際には何もしません)

(戻り値なし)


--

log(a1,a2)

a2を底とするa1の対数を返します。

a2を省略すると、a1の自然対数(eを底とする対数)を返します。


--

makearray(arr,a1,a2,a3)

配列変数arrを作成します。

(arrには[ ]をつけないで配列変数名だけを指定します)

a2とa3は省略可能です。

a2とa3の両方を省略した場合には、配列変数arrの添字0~a1-1の要素を作成し、

各要素を0で初期化します。

a3のみを省略した場合には、配列変数arrの添字a1~a2の要素を作成し、

各要素を0で初期化します。

a1~a3をすべて指定した場合には、配列変数arrの添字a1~a2の要素を作成し、

各要素をa3で初期化します。

例1.

makearray(a,3)

を実行すると、

a[0]=0

a[1]=0

a[2]=0

となります。

例2.

makearray(a,1,2,100)

を実行すると、

a[1]=100

a[2]=100

となります。

(戻り値なし)


--

makeimg(img,w,h)

幅w,高さhの画像を新規作成して、Image変数imgに格納します。

作成したimgはtrgt()で指定して描画を行い、drawimg()で表示することができます。

(戻り値なし)


--

max(a1,a2, ...)

引数a1,a2, ... の最大値を返します。


--

min(a1,a2, ...)

引数a1,a2, ... の最小値を返します。


--

msgdlg(msg)

またはmsgdlg(title,msg)

メッセージダイアログを表示します。

msgに表示メッセージを指定します。

titleにはダイアログのタイトルを指定します。

(現状は、titleは未対応のため無視されます)

(戻り値なし)


--

onlocal()

ローカル変数を有効にします。

すなわち、ユーザ定義の関数内で、loc(またはlocal)をつけて変数を宣言することで、

ローカル変数を使用できるようになります。

(v6.00から、ローカル変数はloc(またはlocal)による宣言が必要になりました)


本命令を使用しなくても、デフォルトでローカル変数は有効です。

ただし、spmode(1)で互換モードにした場合には、ローカル変数は無効になります。

この場合、spmode(1)の次に本命令を記述することで、ローカル変数を有効にできます。


本命令は、プログラムの先頭に記述してください。

ただし、spmode(1)と併用する場合には、spmode(1)の次に本命令を記述してください。


本命令は、プログラム全体の動作を変更します。

(プログラムの途中でローカル変数の有効/無効を切り換えることはできません)

また、本命令は制御命令の影響を受けません。

(例えば、if文の中に書いてもスキップされません)


(戻り値なし)


--

offlocal()

ローカル変数を無効にします。

すなわち、すべての変数がグローバル変数になります。

(loc(またはlocal)を付けた変数も グローバル変数になります)


spmode(1)で互換モードにした場合には、本命令を使用しなくても、

ローカル変数は無効になります。


本命令は、プログラムの先頭に記述してください。


本命令は、プログラム全体の動作を変更します。

(プログラムの途中でローカル変数の有効/無効を切り換えることはできません)

また、本命令は制御命令の影響を受けません。

(例えば、if文の中に書いてもスキップされません)


(戻り値なし)


--

origin(x,y)

描画の原点を座標(x,y)に設定します。

例えばorigin(width/2,height/2)とすると、画面の中心が原点(0,0)になります。

デフォルトでは、画面の左上が原点です。


(座標系の設定は scale() → rotate() → origin() の順に適用されます)


(戻り値なし)


--

oval(x,y,w,h,d1,d2)

左上座標が(x,y)で幅w,高さhで 開始角がd1度,描画角がd2度の 円弧を描画します。

開始角は時計の3時の方向を0度とし、角度は時計と反対回りを正とします。

(内部を塗りつぶしたいときはfoval()を使用してください)

(戻り値なし)


--

point(x,y)

座標(x,y)に点を描画します。

(戻り値なし)


--

pow(a1,a2)

a1のa2乗を返します。


--

rect(x,y,w,h)

左上座標が(x,y)で幅w,高さhの四角形を描画します。

(内部を塗りつぶしたいときはfrect()を使用してください)

(戻り値なし)


--

replace(st1,st2,st3,start,limit)

文字列を置換します。

文字列st1から文字列st2をすべて検索し、文字列st3で置換します。

置換した結果の文字列を返します。

startを指定すると、st1のstart番目の位置から検索を開始します。

位置は1文字目を0として数えます(例えば 2であれば3文字目から検索を開始します)。

startを省略すると、st1の先頭から検索を開始します。

limitを指定すると、limit個だけ置換します。

limitを省略するか-1を指定すると、すべて置換します。

例1.

ret=replace("abcdef abc","abc","vwxyz")

を実行すると、

ret="vwxyzdef vwxyz"

となります。

例2.

ret=replace("abcdef abc","abc","vwxyz",3,1)

を実行すると、

ret="abcdef vwxyz"

となります(4文字目から1個だけ置換)。


--

rotate(angle,ox,oy)

座標系の回転を設定します。

angleは回転の角度になります。単位は度です。

oxは回転の中心座標Xになります。

oyは回転の中心座標Yになります。

以後の描画命令(line(),text(),drawimg()等)は、

(ox,oy)を中心としてangle度だけ回転した位置に表示されます。

oxとoyは省略可能です。省略した場合には ox=oy=0 になります。


(座標系の設定は scale() → rotate() → origin() の順に適用されます)


(戻り値なし)


--

round(x,y,w,h,rx,ry)

左上座標が(x,y)で幅w,高さhで 角の丸みの水平半径rx,角の丸みの垂直半径ryの

角丸四角形を描画します。

(内部を塗りつぶしたいときはfround()を使用してください)

(戻り値なし)


--

save(a1,n)

a1の内容をn番の記憶領域にセーブします。

nを省略すると0番の記憶領域にセーブします。

(現状は、save(),load() は、内部変数に保存するのみです。

プログラムが終了するとセーブデータは消えます)

(戻り値なし)


--

scale(sx,sy,ox,oy)

座標系の拡大縮小を設定します。

sxは拡大縮小のX方向の倍率になります。

syは拡大縮小のY方向の倍率になります。

oxは拡大縮小の中心座標Xになります。

oyは拡大縮小の中心座標Yになります。

以後の描画命令(line(),text(),drawimg()等)は、

(ox,oy)からの距離に倍率を掛けた位置に表示されます。

また、大きさも 倍率を掛けた大きさで表示されます。

oxとoyは省略可能です。省略した場合には ox=oy=0 になります。


(座標系の設定は scale() → rotate() → origin() の順に適用されます)


(戻り値なし)


--

setfont(size)

文字サイズを設定します。

sizeには以下のいずれかの文字列を指定します。

"L" 文字サイズ大 (30px)

"M" 文字サイズ中 (24px)

"S" 文字サイズ小 (16px)

"T" 文字サイズ最小(12px)

デフォルトではフォントサイズは"S"です。

ただし、spmode(1)で互換モードにすると フォントサイズは"T"になります。

(戻り値なし)


--

setfontsize(a1)

文字サイズを数値a1に設定します。単位はpxです。

(戻り値なし)


--

setoutdata(no,data)

番号noの外部データを設定します。

(外部のJavaScriptとデータをやりとりする場合に利用できます)

(戻り値なし)


--

setpixel(x,y,c)

座標(x,y)に色cの点を描画します。

色cは RGB各8ビット、合計24ビットの数値で色を指定します。

(戻り値なし)


--

setscl(n,d)

数値nを小数第d位で四捨五入した値を返します。

(例えば y=setscl(1.567,2) を実行すると y=1.57 となります)

dを省略すると、小数部を四捨五入した整数を返します。

(例えば y=setscl(1.567) を実行すると y=2 となります)


--

setscsize(w,h,w2,h2)

画面のサイズを幅w(px),高さh(px)に設定します。


本命令を実行すると、画面はクリアされ、

描画色(col())と線の幅(linewidth())はリセットされます。

また、座標系の設定(scale(), rotate(), origin())もリセットされます。

また、クリッピング領域の設定(clip())も解除されます。


また、w2とh2を指定すると、画面を幅w2(px),高さh2(px)に収まるように拡大縮小して表示します。

すなわち 画面の解像度が(w,h)で、実際の表示サイズが(w2,h2)になります。

w2とh2は省略可能です。省略した場合には w2=w, h2=h になります。

現状、HTML5のcanvas機能の制約により、拡大縮小するとかなりぼやけた表示になります。


(戻り値なし)


--

sign(a1)

数値の符号に対応した値を返します。

a1>0ならば1を、a1<0ならば-1を、それ以外ならば0を返します。


--

sign2(a1)

数値の符号に対応した値を返します(ただし0は正と判定)。

a1>=0ならば1を、それ以外ならば-1を返します。


--

sin(a1)

a1のサインを返します。a1の単位は度です。

spmode(1)で互換モードにした場合には、100倍した整数値を返します。


--

sleep(t)

tミリ秒間待ちます。


(現状の SPALM Web インタープリターには、

「ループのプログラムで固まる」という制限事項があります。

この件の回避策として sleep()が使える場合があります。

(アプリケーション説明の「1.3.制限事項」参照))


(ループのプログラムの実行速度を、PCの性能によらず一定にしたい場合には、

sleepsync() の利用を検討ください)


(戻り値なし)


--

sleepsync(t,no)

処理時間を考慮してtミリ秒間待ちます。

例えば、ループのプログラムのループ1回の処理時間を t2 ミリ秒とすると、

sleepsync() は t-t2 ミリ秒間だけ待ちます。

これによって、PCの性能の違いによる速度差を、ある程度吸収することができます。

ただし、t-t2 が0以下の場合には、sleepsync() の動作は以下になります。

・t-t2<=0 かつ t2<t*50 であれば、1ミリ秒間だけ待ちます。

・t-t2<=0 かつ t2>=t*50 であれば、普通にtミリ秒間待ちます。


番号noには、複数の sleepsync() を区別するための数値を指定します。

異なるnoの sleepsync() は、別々に処理時間を計測して動作します。

noは省略可能です。省略した場合には0を指定したことになります。


(戻り値なし)


--

soft1(a1,a2)

画面下部のソフトキー1の表示エリアに 文字列a1を表示します。

フォントサイズはa2で指定できます。単位はpxです。

a2を省略すると、デフォルトサイズ(16px)で表示されます。

(ソフトキー1はPC上では[c]キーに割り当てられています。

文字列a1の先頭文字を*にすると、「[c]:」が非表示になります)

(オリジナルのSPALMには フォントサイズの指定はありません)

(戻り値なし)


--

soft2(a1,a2)

画面下部のソフトキー2の表示エリアに 文字列a1を表示します。

フォントサイズはa2で指定できます。単位はpxです。

a2を省略すると、デフォルトサイズ(16px)で表示されます。

(ソフトキー2はPC上では[v]キーに割り当てられています。

文字列a1の先頭文字を*にすると、「[v]:」が非表示になります)

(オリジナルのSPALMには フォントサイズの指定はありません)

(戻り値なし)


--

split(arr,st1,st2,limit)

文字列st1を区切り文字列st2で分割し、配列変数arrに格納します。

配列変数arrには、分割した文字列が0番の要素から順番に入ります。

最大分割数limitに正の数を指定すると、先頭から最大limit個まで分割します。

limitを省略または0以下の数を指定すると、最後まですべて分割します。

戻り値は分割できた数になります。

例1.

st1="abcde,あいうえお,12345"

n=split(arr,st1,",")

を実行すると、

n=3

arr[0]="abcde"

arr[1]="あいうえお"

arr[2]="12345"

となります。

例2.

st1="abcde,あいうえお,12345"

n=split(arr,st1,",",2)

を実行すると、

n=2

arr[0]="abcde"

arr[1]="あいうえお,12345"

となります。


--

spmode(1)

互換モードを設定します。

spmode(1) をプログラムの先頭に書くと、互換モードで動作します。

このとき、以下の項目が適用されます。

(a)フォントサイズが "T" にセットされます(最小サイズ)

(b)ローカル変数未使用になります

(c)割り算 / の結果が整数化されます

(d)sin,cos,tan が 100倍した整数値を返すようになります

(e)一部の構文エラーが発生しなくなります

互換モードでは、「オリジナルのSPALM用のプログラム」がそのまま動作する可能性が高くなります。

(しかし現状では、アプリケーション説明の1.3.の制限事項のため、

結局プログラムの書き換えが必要になる場合があります)


本命令は、プログラムの先頭に記述してください。


本命令は、プログラム全体の動作を変更します。

(プログラムの途中で互換モードのON/OFFを切り換えることはできません)

また、本命令は制御命令の影響を受けません。

(例えば、if文の中に書いてもスキップされません)

また、本命令の引数に変数や計算式は指定できません。


(戻り値なし)


--

sqrt(a1)

a1の平方根を返します。


--

strat(st,i)

文字列stのi番目の位置の文字を返します。

位置は1文字目を0として数えます(例えば 2であれば3文字目という意味です)。

該当位置の文字が存在しなければ空文字列("")を返します。


--

strlen(st)

文字列の長さを返します。


--

stwide(st)

文字列の表示上の幅(px)を返します。


--

substr(st,i,n)

文字列stのi番目の位置からn文字分だけ取り出して返します。

位置は1文字目を0として数えます(例えば 2であれば3文字目という意味です)。

nを省略すると、i番目の位置から最後の文字まで取り出します。

該当する文字列が存在しなければ空文字列("")を返します。


--

tan(a1)

a1のタンジェントを返します。a1の単位は度です。

spmode(1)で互換モードにした場合には、100倍した整数値を返します。


--

text(st,x,y,anc)

文字列stを座標(x,y)の位置に表示します。

ancには 右寄せ,下寄せ等のアンカーを指定します。

(アンカーについては組み込み定数を参照)

例えば右下に寄せる場合には RIGHT | BOTTOM というようにORで指定します。

ancを0にした場合は左寄せと上寄せを指定したことになります。

引数x,y,ancを省略してtext(st)とした場合には、画面左上に文字列stを表示します。

(戻り値なし)


--

trgt(img)

描画先を Image変数imgに格納した画像に設定します。

以後の描画命令(line(),text(),drawimg()等)は、その画像に対して行われ、

画面には表示されません。

imgにoffを指定すると、描画先を画面に戻します。

本命令を実行すると、描画色(col())と線の幅(linewidth())はリセットされます。

また、座標系の設定(scale(), rotate(), origin())もリセットされます。

また、クリッピング領域の設定(clip())も解除されます。

(戻り値なし)


--

trim(st)

文字列stの前後の空白を削除した文字列を返します。


--

unlock(a1)

画面の表示ロックを解除します。

(現状は未実装のため、実際には何もしません)


a1に0を指定すると、lock()を実行した回数だけunlock()を実行した場合に、

画面の表示ロックを解除します。

a1に0以外を指定すると、無条件に画面の表示ロックを解除します。

a1は省略可能です。省略した場合には、無条件に画面の表示ロックを解除します。


(戻り値なし)


--

yndlg(msg)

またはyndlg(title,msg)

確認ダイアログを表示します。

msgに表示メッセージを指定します。

titleにはダイアログのタイトルを指定します。

(現状は、titleは未対応のため無視されます)

OKを押した場合には"YES"が、キャンセルを押した場合には"NO"が返ります。


--

@(arr,a0,a1, ... ,an)

配列変数arrの要素0~n に値a0~anを一括代入します。

例えば @(arr,100,200,300) を実行すると、

arr[0]=100 arr[1]=200 arr[2]=300 となります

(戻り値なし)


(2019-6-25)