スペース等が解りにくいため、半角文字ではなく全角文字で記述しています。
実際にマクロを記述する場合、全角文字では動作しません
特殊文字
KMmacroの記述で特定の意味を持つ記号文字
文字(読み) |
使用 |
% |
パーセント |
変数名の記述に使用 |
[ ] |
大括弧 |
配列型変数の記述/キーコードの記述に使用 |
” ” |
ダブルクォーテーション |
定数の記述に使用(一部の文字を除き使用しなくとも定数の記述可能) |
( ) |
小括弧 |
関数/条件の記述に使用。(” ”と同様の解釈をするパターンがある) |
; |
セミコロン |
コメントの記述に使用 |
: |
コロン |
ラベル名の記述に使用 |
変数
先頭に%をつけたものを変数として扱う。
デフォルトで用意されている変数とユーザーが任意に定義できる変数がある。
デフォルト変数
%0~%63:KMmacroが用意してある変数、宣言不要で使用できる。%0は関数の戻り値で使用
任意変数
DIM文で宣言を行い任意の変数名を使用できる。DIM文の記述は使用する前であればどの位置でもよい。
DIM %aaa
DIM %aaa %bbb ;一度に複数変数を宣言可、変数名の間にスペースを入れて記述
- DIM文で、初期値の設定はできない。SET文などで設定
- DIM文で%10などのデフォルトの変数名も宣言できる(仕様か否か解りません)
配列型変数
DIM文の宣言時、配列数を[ ]で記述する。
DIM %bbb[99] ;0から始まる配列
厳密には配列ではなく
DIM %bbb[0] %bbb[1] ... %bbb[98]が展開される
恐らく配列数の上限は決められていないが、展開に時間がかかるため不用意に大きくしない
例】%bbb[%IX]
OK:%bbb[9]
NG:%bbb[09]
OK:%bbb[%IX]
NG:%bbb [%IX]
NG:%bbb[ %IX]
定数
変数(%付文字列)、予約言(関数・コマンド)以外の文字列の場合、定数として扱う(扱われてしまう)。
※このため、記述ミスであっても構文エラーとなりにくい。このためAUTOPASTEはOFFを指定すると記述ミスがエラーとして検出されやすい。
特定のパターンを除き”ダブルコーテーションで囲む必要なし
逆に、計算式で使用する場合でも数字を”ダブルコーテーションで囲んでもよい
同じ値がセットされる
SET %1 (+ %0 ”1”)
SET %1 (+ %0 1 )
また()小括弧、特に(左小括弧の記述は、パラメータの始まりと解釈されるパターンがある。
特定の記述
”ダブルコーテーション
2個の連続した”ダブルコーテーションで1個の”ダブルコーテーションと解釈する。
例】”A”を定義したい場合→”””A””””
””だけの場合、文字列を囲むための”と解釈され、空データが設定される。
スペースを含んだ文字列
”ダブルコーテーションで囲んだ中に記述する。
例】A Bを定義したい場合→”A B”
:セミコロン
2個の連続した:セミコロンで1個の:セミコロンと解釈する。
”ダブルコーテーションで囲む必要なし
()小括弧
()小括弧で囲む記述は、パラメータと解釈され”ダブルコーテーションで囲む記述と同じ効果がある。
ただし、ダブルコーデーションは2個連続して記述することで、1個のダブルコーテーションとして解釈されるが、小括弧は2個連続して記述しても、パラメーター記述内にパラメータ記述があると解釈される為、小括弧と解釈されない。
(左小括弧はパラメータ記述の始まりと解釈されるパターンがある。
①(左小括弧を直接記述した場合、パラメータ記述の始まり解釈する。
例】SET %WORK (A) ;パラメータと解釈され『A』がセットされる
②ダブルコーテーションの直後に(左小括弧を記述した場合、パラメータ記述の始まりと解釈する
例】SET %WORK ”(A)” ;パラメータと解釈され『A』がセットされる
③ダブルコーテーションの後に何らかの文字を入れその後(左小括弧を記述した場合、文字列と解釈する
例】SET %WORK ” (A)” ;パラメータと解釈され『 (A)』がセットされる
①と②は)右小括弧の記述が無い場合、括弧が閉じていないとエラーがメッセージされる。
)右小括弧は直接記述、ダブルコーテーションで囲んだ中どちらも定義可能
例】SET %WORK ) ;パラメータと解釈され『)』がセットされる
例】SET %WORK ”)” ;パラメータと解釈され『)』がセットされる
小括弧の記述と格納例
①()を文字列の囲みと認識するパターン
②()小括弧を文字列定数と認識するパターン
③(左小括弧、)右小括弧を文字列定数と認識するパターン
④(左小括弧のみで構文エラーとなるパターン。
変数に格納した小括弧と抜け落ち例
①括弧が編集されるパターンと括弧が取り除かれるパターン
②文字列の途中に括弧を格納したパターン
③文字列の先頭に括弧を格納したパターン
④右括弧単独で変数に格納したパターン
⑤左括弧単独で変数に格納したパターン(右括弧が無いためエラーとなる)
コメントの記述
;セミコロン以降はコメントとして扱う。尚、;;(2個)記述した場合、文字;(1個)と解釈されそれ以降はコメントとして扱われない為注意
ラベル名
:コロンを頭につけ任意のラベル名が使用可
GOTO文/CALL文で制御を移す。
スペースを含ませたラベル名が使用できる
ラベル名は変数で指定できる
ラベル名は重複してもエラーとしない。
同じラベル名が存在する場合、先に見つけたラベルに制御を移す。
DIM %変数
SET %変数 1
GOTO (& ”:LBL” %変数) ;ラベル名 :LBL1
:LBL1
AUTOPASTE ON/OFF
コマンド以外の文字列が記述された場合、PASTEコマンドが指定されたと解釈するか否か。
AUTOPASTE ON ;デフォルト
PASTEコマンドが指定されたと解釈。
AUTOPASTE OFF ;
エラーを上げる
ONの場合、記述ミスであっても文字列と解釈され、PASTEコマンドを実施します。
構文エラーとならずに処理が継続、IF文などの分岐で予想外の動きをしてしまう原因になります。
AUTOPASTE OFF推奨
以前のVerとの互換性のためONがデフォルトになっているが、OFFの方が記述ミスが検出しやすい。
kmmacro.INIでAUTOPASET ON/OFFを宣言可
マクロ内で宣言可
原因
2バイトスペースの混入
AUTOPASTE ON | OFF
最終更新:2022年07月05日 23:18