マイクロスクリプトであらかじめ定義され、各種の機能を実現する手続きがあります。これを、組み込み手続き(関数)と呼びます。これらは“式”の中で任意に使えます。
■値の判断
〈式〉の値が不正値の時は0、不正値でない時は1を結果とします。
例: SET a=$SV[10]
なら、valid(a)は0となる。
SET a=$SV[1000]
なら、valid(a)は1となる。
†システム変数$SVの要素番号は0~49です。
〈式〉の値が数値の時は1、数値でない時(名前)は0を結果とします。
例: SET a=1.0
なら、number(a)は1となる。
SET a=〈セグメント名〉
なら、number(a)は0となる。
■数値演算
三角関数、算術関数を提供します。引数は浮動小数値または整数値、結果は浮動小数値となります。
†max(),min()は、引数が整数値のとき、結果も整数値となります。
〈数値〉の正弦を求めます。〈数値〉の単位はラジアンです。
〈数値〉の余弦を求めます。〈数値〉の単位はラジアンです。
〈数値〉の正接を求めます。〈数値〉の単位はラジアンです。
〈数値〉の逆正弦を求めます。結果の単位はラジアンです。
†〈数値〉<-1、〈数値〉>1のときは、結果は0.0となります。
〈数値〉の逆余弦を求めます。結果の単位はラジアンです。
†〈数値〉<-1、〈数値〉>1のときは、結果は0.0となります。
〈数値〉の逆正接を求めます。結果の単位はラジアンです。
〈数値〉の平方根を求めます。
†〈数値〉<0のときは、結果は0.0となります。
eの〈数値〉乗を求めます。
〈数値〉の自然対数を求めます。
†〈数値〉<0のときは、結果は不正値です。
〈数値〉の常用対数を求めます。
†〈数値〉<0のときは、結果は不正値です。
〈数値〉以下の最大整数を求めます。結果は、小数点以下が0の浮動小数値です。
〈数値〉以上の最小整数を求めます。結果は、小数点以下が0の浮動小数値です。
〈数値〉を四捨五入した整数を求めます。結果は、小数点以下が0の浮動小数値です。
〈数値〉の絶対値を求めます。
〈数値1〉の〈数値2〉乗を求めます。
†〈数値1〉=0で〈数値2〉≦0のとき、または〈数値1〉<0で〈数値2〉が整数でないとき、結果は0.0となります。
〈数値1〉と〈数値2〉の大きな方の値を結果とします。
〈数値1〉と〈数値2〉の小さな方の値を結果とします。
■配列操作
配列をサーチします。
〈変数〉の〈開始〉要素から〈長さ〉個の要素のうち、〈値〉と一致する要素を探し、その要素の配列の先頭からの位置を結果として戻します。見つからない場合は、不正値を戻します。
〈長さ〉=0の時は配列の最後までサーチします。〈長さ〉<0の時は逆順にサーチします。
例: asrch(A,10,55,20)
A[10]~A[39]のうち、55の値をもつ要素の位置を戻す。A[23]=55の時、手続きの値は23となる。
配列を比較します。
〈変数1〉の〈開始1〉要素から〈長さ〉個の要素と、〈変数2〉の〈開始2〉要素から〈長さ〉個の要素を比較して、以下の値を結果として戻します。
値 | 内容 |
---|---|
0 | 一致 |
1 | 不一致〈変数1〉の方が大きい |
-1 | 不一致〈変数2〉の方が大きい |
〈長さ〉=0の時は配列の最後までサーチします。
配列をコピーします。
〈変数2〉の〈開始2〉要素から〈長さ〉個の要素を、〈変数1〉の〈開始1〉要素からはじまる場所へコピーします。結果として、コピーした要素を戻します。〈変数1〉と〈変数2〉が同じであっても構いません。
文字列の長さを調べます。
〈変数〉の先頭要素から最後まで、0の値の要素を探し、その要素の配列の先頭からの位置を結果として戻します。見つからない場合は、不正値を戻します。
◆asrch(〈変数〉,0,0,0)と同じです。
文字列を比較します。
acmp()と基本的に同じですが、変数の要素が0の位置を、配列の終りとして判断すします。
†〈変数〉の〈開始〉までの言語指定コードは解釈しません。〈変数〉の〈開始〉からの一意表現として比較します。
■文字列変換操作
文字列を、数値に変換します。
〈文字列変数〉の〈開始〉要素からの文字列を、〈数値形式〉にしたがって数値に変換した値を結果として戻します。変換が終了した要素の位置を〈終了変数名〉に格納します。〈終了変数名〉は省略できます。
†〈文字列変数〉の〈開始〉までの言語指定コードは解釈しません。〈文字列変数〉の〈開始〉からの一意表現として変換します。
〈数値形式〉として、以下の文字定数を指定します。ただし、文字列が "0x" で始まる時は、〈数値形式〉の指定に無関係に16進整数値となります。
〈数値形式〉 | 内容 |
---|---|
'd' | 10進整数値 |
'x' | 16進整数値 |
'f' | 浮動小数値 |
その他 | 数値(10進整数値または浮動小数値) |
文字コード形式を変換します。シフトJIS、EUCコード文字列をTRONコード文字列に変換します。
〈変数2〉の〈開始2〉要素から〈長さ〉個の要素を〈文字コード〉で指定した文字列とみなして、文字コード変換を行い、〈文字列1〉の〈開始1〉要素から格納します。〈変数2〉はバイト型の配列でなくてはいけません。〈変数2〉の途中の要素に0があるときは、その直前で変換を終了します。結果として変換した文字数(〈文字列1〉に格納した文字数)を戻します。
†〈文字列1〉の〈開始1〉までの言語指定コードは解釈しません。〈文字列1〉の〈開始1〉からの一意表現として格納します。
〈文字コード〉として以下の文字定数を指定します。
〈文字コード〉 | 内容 |
---|---|
's' | シフトJISコード |
'e' | EUCコード |
◆不正な文字コードおよび改行コード0x0Dは無視されます。
例:
VARIABLE n:I,T:C[20],SJ:B[20]
#SJ[]にはシフトJISコードの文字列が入っている
SET n=sconv(T,0,SJ,0,20,'s')
#T[0:n]に変換した文字列が入る
文字コード形式を変換します。TRONコード文字列をシフトJISまたは、EUCコード文字列に変換します。
〈文字列2〉の〈開始2〉要素から〈長さ〉個の要素を〈文字コード〉で指定した文字コードに変換して、〈変数1〉の〈開始1〉要素から格納します。〈変数1〉はバイト型の配列でなくてはいけません。〈文字列2〉の途中に0があるときは、その直前で変換を終了します。結果として変換した文字数(〈変数1〉に格納した要素数)を戻します。
†〈文字列2〉の〈開始2〉までの言語指定コードは解釈しません。〈文字列2〉の〈開始2〉からの一意表現として変換します。
†システムスクリプトAゾーン以外の文字は変換されません。
〈文字コード〉として以下の文字定数を指定します。
〈文字コード〉 | 文字コード形式 | 変換内容 |
---|---|---|
'S' | シフトJISコード | すべて2バイトコードに変換 |
's' | シフトJISコード | ASCIIコードに対応する文字は1バイトコードに変換 |
'k' | シフトJISコード | ASCIIコード、1バイトカタカナコードに対応する文字は1バイトコードに変換 |
'E' | EUCコード | すべて2バイトコードに変換 |
'e' | EUCコード | ASCIIコードに対応する文字は1バイトコードに変換 |
◆シフトJISコードのときは改段落コード(0x0A)は、0x0D、0x0Aの2つのコードに変換されます。
例:
VARIABLE n:I,T:C[20],SJ:B[20]
SET T[:]="あい123"
SET n=srconv(SJ,0,t,0,5,'s')
# SJ[]にはシフトJISコード文字列"あい123"が入る(n=7)
SET n=srconv(SJ,0,t,0,5,'s')
# SJ[]にはシフトJISコード文字列"あい123"が入る(n=10)
■画像操作
〈パス名〉で指定したJPEG/PNGファイルの内容の画像セグメントを動的に生成します。生成したセグメントを関数値として戻し、エラーが発生した場合は不正値を戻します。
〈パス名〉に含まれる画像ファイル名は、以下のいずれかの形式に限ります。また、レコードタイプは、1または31のいずれかに設定しておきます。
画像ファイル名 | 内容 |
---|---|
~.jpg(~.JPG) | JPEG形式の画像 |
~.png(~.PNG) | PNG形式の画像 |
~.bmp(~.BMP) | BMP形式の画像 |
〈x〉,〈y〉に、生成した画像セグメントの左上の座標位置を指定します。
〈Xi〉,〈Yi〉,〈Wi〉,〈Hi〉は、画像の一部の領域のみを有効にしたい場合に指定します(省略可能)。
引数 | 内容 |
---|---|
Xi | 画像の左端からの有効領域のXオフセット |
Yi | 画像の上端からの有効領域のYオフセット |
Wi | 有効領域の幅 |
Hi | 有効領域の高さ |
生成した画像セグメントには名前がないため、そのままでは一度しか使用できません。SETSEG文によりセグメント名を対応づけると、何度でも使用することができます。したがって、newimgseg()は、通常SETSEG文とともに用いられます。
動的に生成した画像セグメントは、参照されなくなった時点で自動的に廃棄されます。そのためのメモリ領域も解放されます。
例:
SEGMENT jpeg1, jpeg2
SETSEG jpeg1=newimgseg("/SYS/USR/im/img001.jpg",100,10)
SETSEG jpeg2=newimgseg("/SYS/USR/im/img002.jpg",500,10)
APPEAR jpeg1, jpeg2
: :
SETSEG jpeg1=newimgseg("/SYS/USR/im/img101.jpg",100,10)
# この時点で /SYS/USR/im/img001.jpg に対応する
# セグメントは廃棄される。
SETSEG jpeg2=newimgseg("/SYS/USR/im/img102.jpg",500,10)
# この時点で /SYS/USR/im/img002.jpg に対応する
# セグメントは廃棄される。
APPEAR jpeg1, jpeg2
■実身操作
〈パス名〉で指定した実身のなかに含まれる仮身に対応する実身名を順番に取り出して、〈文字列変数〉に格納します。〈文字列変数〉には、実身名の最後に'0'を付加して順番に詰めて格納され、すべての実身名を取り出した場合、または、配列の要素が不足した場合に実際に格納した実身名の数を関数値として戻します。
実身名を1つも取り出せなかった場合は0を戻し、エラーが発生した場合は不正値を戻します。
取り出しを開始する仮身の出現順番を〈順番〉で指定します。0または省略した場合は先頭からとなります。
〈順番〉を1つずつ増やすことにより、実身名を1つずつ順番に取り出すこともできますが、一度に取り出したほうが効率的です。
例: "実身入れ"に含まれる実身名を取り出して、順番にログ表示します。
VARIABLE 名前リスト:C[100],取出数:I,文字位置:I,取出位置:I
SET 取出位置=0
REPEAT
SET 取出数=filelist("実身入れ",名前リスト,取出位置)
IF 取出数<=0
BREAK
ENDIF
SET 文字位置=0
REPEAT 取出数
LOG "%s",名前リスト[文字位置:]
SET 文字位置=asrch(名前リスト,文字位置,0,0)+1
ENDREPEAT
SET 取出位置=取出位置+取出数
ENDREPEAT
■システム操作
グローバル名データを取り出します。
〈文字列〉で指定したグローバル名のデータを取り出し、その値を結果として戻します。指定したグローバル名が存在しない時は、不正値を戻します。
グローバル名データを設定します。
〈文字列〉で指定したグローバル名のデータを生成し、〈値〉を設定します。結果の値は常に0です。
グローバル名データを削除します。
〈文字列〉で指定したグローバル名のデータを削除します。指定したグローバル名が存在しない時は、不正値を戻します。
■システム時刻操作
システム時刻を、日付時刻に変換します。
〈システム時刻〉で指定したシステム時刻(1985年1月1日00:00:00GMTからの現在までの秒数)を日付時刻に変換して、〈日付配列〉に格納します。正常に変換できた場合は0を戻し、変換できなかった場合は不正値を結果として戻します。
†〈システム時刻〉に0を指定した場合は、現在時刻を日付時刻に変換します。
†現在のシステム時刻はシステム変数$SYSTMで得られます。
〈日付配列〉には9個以上の要素を持つ数値型の配列を指定します。各要素には、以下の値が格納されます。
〈日付配列〉 | 内容 | 値範囲 |
---|---|---|
[0] | 年 | 1985~ |
[1] | 月 | 1~12 |
[2] | 日 | 1~31 |
[3] | 時 | 0~23 |
[4] | 分 | 0~59 |
[5] | 秒 | 0~59 |
[6] | 週 | 1~54 |
[7] | 曜日 | 0:日曜~6:土曜 |
[8] | 年日 | 1~366 |
例:
VERSION 3
LOCAL dt:C[9], i:I
SET i = tmdate(dt,$SYSTM )
MESG "%d/%d/%d %d:%d:%d",dt[0],dt[1],dt[2],dt[3],dt[4],dt[5]
日付時刻をシステム時刻に変換します。
〈日付配列〉で指定した日付時刻をシステム時刻に変換して、結果として戻します。変換できなかった場合は不正値を戻します。
〈日付配列〉は0~5の要素のみ有効であり、週、曜日、年日の要素は無視されます。
前のページへシステム管理 次のページへプログラミングの実際