my "guess" is that any automatic macro variable to which you can assign a value, could be named on a %LOCAL
&syslast is an example I tried
438 %let syslast = something ;
439 %macro check1( name) ;
440 %local syslast ;
441 %let syslast = nothing ;
442 %put _local_ ;
443 %put &name = &&&name ;
444 %mend ;
445 %check1(syslast) ;
ERROR: Attempt to %LOCAL automatic macro variable SYSLAST.
CHECK1 NAME syslast
syslast = WORK.nothing
446 %put &syslast ;
WORK.nothing
So, that ERROR indicates a rule.
(which almosts demands an exception)
peterC