その他ツール > KMmacro > 文法


スペース等が解りにくいため、半角文字ではなく全角文字で記述しています。
実際にマクロを記述する場合、全角文字では動作しません

特殊文字

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