■値
マイクロスクリプトでは整数値、浮動小数値が扱えます。
∇整数値の表記
以下の2種類の表記ができます。
*10進数表記
〈数字列〉 “0”~“9”を使用。
例: 10 123 -24 0
*16進数表記
0x〈16進数字列〉 “0”~“9”、“A”~“F”(または“a”~“f”)を使用。
例: 0x4 0xAE
∇範囲
扱える範囲は、-2147483648(0x80000000)から+2147483647(0x7FFFFFFF)までです。
†32ビットの整数値が扱えます。
∇浮動小数値
浮動小数値の表記
〈数字列〉.〈数字列〉
〈数字列〉【 .〈数字列〉】〈指数部〉
〈指数部〉:E【+∥-】〈数字列〉
e【+∥-】〈数字列〉
“0”~“9”、“.”(小数点)、“E”または“e”を使用。
例: 1.0 5.2E5 2e-5
†E/e〈数字列〉は「10^〈数字列〉」(“^”はべき乗)を表わします。たとえば、「5.2E5」は「5.2×10^5=520000」となります。
†【 】内は省略できます。
†“.”(小数点)、または〈指数部〉がある場合は、浮動小数値とみなされます。
範囲
扱える範囲は、-1e300から1e300までです。
†64ビットの浮動小数値が扱えます。有効桁数は約14桁です。
∇不正値
一般的に式や項目の計算時に何らかの異常が発生した場合は、結果は不正値となります。
不正値は最小(負)の整数値(0x80000000)です。関数valid()で、不正値かどうか判断できます。
■文字定数
1つの文字を '(シングルクォーテーション)でくくったもので、文字コードを値とする整数値として取り扱われます。
†文字定数として使える文字はシステムスクリプトの文字のみです。
\はエスケープ文字として作用します。
\n 改段落 (0x000A)
\r 改行 (0x000D)
\t タブ (0x0009)
\b バックスペース (0x0008)
\0 ゼロ (0x0000)
\<文字> <文字> そのもの
例: '漢' 0x3441(漢の文字コード)
'A' 0x2441(Aの文字コード)
'\\' 0x216F(\の文字コード)
'\'' 0x2147('の文字コード)
'\n' 0x000A(改段落コード)
''(空文字) 0
■文字列定数
複数の文字の列を "(ダブルクォーテーション) でくくったもので、文字コードを値とする文字型の配列として取り扱われます。配列の最後には文字列の終了を示す値0が付加されます。
†「” “ ゛ ″」はすべてダブルクォーテーションとして同じに扱われます。
†文字列定数は一意表現であるものとして扱われます。
空の文字列も使えます。
\はエスケープ文字として作用します。
例:"文字列" '文','字','列',0 の4つの要素の文字型の配列
"\"A\"" '"','A','"',0 の4つの要素の文字型の配列
■演算子
演算子には、“単項演算子”と“2項演算子”があります。
単項演算子 | 意味 |
---|---|
- | 符号の反転 |
~(~) | ビット反転(1の補数) |
! | 論理否定 |
2項演算子 | 意味 |
---|---|
>=(≧) <=(≦) | 関係演算子 |
>(〉) <(〈) | 関係演算子 |
==(=) !=(≠) | 等値演算子 |
+ - | 加減演算子 |
*(×) /(÷) | 乗除演算子 |
% | 乗除演算子 |
&& || | 論理演算子 |
<< >> | シフト演算子 |
& | ビットごとのAND演算子 |
| | ビットごとのOR演算子 |
^ | ビットごとの排他的OR演算子 |
†( )内の演算記号を使っても同じ意味です。
1) 比較(関係)演算子の結果は整数の値となります。
2) “+ - * /”(加減乗除)演算子の結果は、整数同士のときには整数値となり、そうでないときは浮動小数値となります。
3) “~ % & << >> | ^” の各演算子で、浮動小数値のときは整数に切り捨てられて演算されます。
4) すべての演算は数値(整数値/浮動小数値)に対してのみ適用できます。数値でないときは結果は不正値となります。
整数値/浮動小数値の演算で、値の範囲を超えたときの結果は保証されません。
0による除算(/)、および0による剰余(%)の結果は、被演算数が0、または正数の場合最大整数値または最大浮動小数値となり、負数の場合最小整数値または最小浮動小数値となります。エラーとはなりません。
関係演算子の演算結果は、真のとき“1”、偽のとき“0”の整数値を取ります。また、“0”の論理否定は“1”となり、“非ゼロ”の論理否定は“0”となります。
論理演算子の演算結果は、真のとき“1”、偽のとき“0”の整数値を取ります。
†ビット演算子“& |”と間違わないようにしてください。
∇演算子の優先度
演算子を優先度が高い順に並べます。おおむねC言語に準拠しています。
演算子 | 結合順序 |
---|---|
! ~ - (単項) | 右から左 |
* / % | 左から右 |
<< >> | 左から右 |
+ - | 左から右 |
< <= > >= | 左から右 |
== != | 左から右 |
& | 左から右 |
^ | 左から右 |
| | 左から右 |
&& | 左から右 |
|| | 左から右 |
■式
式は、以下のものを演算子を使ってつなげたものです。
(式)
整数値、浮動小数値
文字定数、文字列定数
†文字列定数、セグメント名、手続き名は数値ではありませんので、演算子でつなげることはできません。
■書式文字列
TEXT文などにおいて、出力の書式を指定することができます。そのための文字列を、“書式文字列”と呼びます。
"で囲まれた任意の文字列で、以下の書式指定を含みます。"の代わりに゛を使うこともできます。【 】内は省略できます。
†書式文字列としては文字列定数以外にも文字型の配列が使えます。
書式文字列 | 意味 |
---|---|
%【【-】#】d | 10進数変換 |
%【【-】#】x | 16進数変換(A以降をa~fと表記) |
%【【-】#】X | 16進数変換(A以降をA~Fと表記) |
%【【-】【#】【.#】】f | 浮動小数変換:実数型式(n…n.n…n) |
%【【-】【#】【.#】】e | 浮動小数変換:指数型式(n.n…ne±dd) |
%【【-】【#】【.#】】E | 浮動小数変換:指数型式(n.n…nE±dd) |
%【【-】【#】【.#】】g | 浮動小数変換:f変換またはe変換 |
%【【-】【#】【.#】】G | 浮動小数変換:f変換またはE変換 |
“#”は全体の文字数指定です。出力の幅を数値で指定します。先頭に0を置いて指定すると、空白となる上位のケタの部分を0で埋めます。".#"は小数点以下の文字数指定です。また、“-”をつけると、左ぞろえで出力します。
†g,G変換では、値が1E-5以下、または1En(nは “.#”で指定した数)以上のときに指数型式となります。
†これらの書式指定は、C言語のそれとおよそ似たものになっています。
プログラム例
VERSION 3
VARIABLE 数値:I
PROLOGUE
SET 数値=12
MESG "値=%d:",数値
END
出力
値=12:
プログラム例
VERSION 3
VARIABLE 書式:C[10]
PROLOGUE
SET 書式[:]="値=10.5f"
MESG 書式,sqrt(5)
END
出力
値=2.23607
書式文字列 | 意味 |
---|---|
%【【-】【#】【.#】】s | 文字列変換 |
%c | 文字変換 |
%% | '%'の文字 |
\n | 改段落 |
“#”は全体の文字数指定です。出力の幅を数値で指定します。
“.#”は文字列の先頭からの有効文字数指定です。また、“-”をつけると、左ぞろえで出力します。
†“%s”は言語指定コードを含む文字列も正しく変換します。変換後は一意表現となります。
†“%c”はシステムスクリプトの文字のみ変換します。
プログラム例
VERSION 3
VARIABLE 文字列:C[10]
PROLOGUE
SET 文字列[:]="ABCDEFG"
MESG "文字列=%s",文字列
END
出力
文字列=ABCDEFG
プログラム例
VERSION 3
VARIABLE 文字列:C[10]
PROLOGUE
SET 文字列[:]="ABCDEFG"
MESG "文字列=%5.3s",文字列
END
出力
文字列=ABC
そのほかの例:
書式文字列の例 | 出力 |
---|---|
"値=%4d:" | 値=12: |
"値=%4x:" | 値=c: |
"値=%-4X:" | 値=C: |
"値=%04d:" | 値=0012: |