In case you are asking if we should invoke a macro with or without a trailing semi-colon:
%put data type is &dattype;
%*-- type1 --*;
%*-- type2 --*;
It depends. A macro invocation does not require a semi-colon, but anything that can signal the end of the invocation. Thus if your macro generates a complete statement including the statement ending semi-colon, then the type 2 style invocation results in an extra semi-colon. This is often OK, though, if the extra semi-colon, in the context, can be considered as a null statement and is ignored.