更新:
谢谢大家的回复。
Global的确是解决办法,不过若是加了Global,那么我无论是在%put _user_还是在sashelp.vmacro中都可以找得到他的值。
我说下我最原始的想法:
一般我们在写一段程序的时候,像我喜欢在整段程序中加个很大的宏环境,这样就可以在一些过程步中使用例如%do,%if这些宏语句。例如:
data a;
a =
%if &type. eq C %then in;put( b , best.);
run;
但是当我调试整段程序的时候,我也许只想运行上面那个data步。
现在对于该步中存在的%do,我已经解决了:
这样,对于剪切板中的一段包含%do的data步,我就可以直接用我的快捷键给他加个宏环境来解析、运行它。
但是,面对data步中有的%if &type.,我需要知道
宿主宏中的type为什么值,而我建议在主宏中加上范围声明。
所以。。。
我有些奇怪为什么像data或过程步中的%do,在open code中依然无法解析。(所知在9。2中仍然无法实现)
故出此问,谢谢 :)
————————————————————————————————————————————————————
想请问一下,我能否从一个宏,或者是Open Code来获取另一个宏的某个变量?
前提是不再次调用这个宏,当然这个宏已经被调用过一次。
例如:
%macro a;
*So many statements;
%let a = x;
*So many statements;
%mend;
%a;
%macro b;
*How can I get the value &a. from Macro a?;
*Likes in JAVA style &a.a ;
%mend;
%b;
我试过%put _all_,但是这个a是local的,不知有何办法?
谢谢。