MACRO 文によるマクロブロック内でのみ使用され、マクロブロック内に限って使用される局所名を宣言します。PROC 内の LOCAL 文とは異なるので注意してください。
構文 LOCAL name ,... 例 LOCAL L LOCAL L1,L2,L3
name は局所名として宣言する名前です。カンマで区切っていくつでも宣言できます。宣言された name は、マクロ呼び出しのたびに一意の新しい名前に置き換えられます。この一意名は「?_X」という形式を持ち、「X」のところに数値が入ります。
たとえば、マクロ内でラベルを定義した場合、そのマクロを複数回呼び出すとラベル二重定義エラーが発生します。これを避けるには、LOCAL 文を使ってラベルを局所名にします。
次に例を示します。
CALLC MACRO FUNC LOCAL L L: CALL FUNC JC L ENDM
このマクロを次のように 2 度呼び出します。
CALLC SUB1 CALLC SUB2
これらのマクロ呼び出しは、次のように展開されます。
?0m: CALL SUB1 JC ?0m ?1m: CALL SUB2 JC ?1m
「?」で始まる名前は、LASM が自動生成したラベルです。競合を避けるために、「?」で始まるラベル名はなるべくソースコードで使用しないでください。