我正在寻找创建一个宏变量。宏变量名称需要通过在解析之后将文本连接到已存在的变量来完成。具体来说,我想使用 INTO:在 PROC SQL 块中执行此操作。这是解释我想要做什么的片段。
%macro MyMacro(process);
PROC SQL;
SELECT
COUNT(*) INTO: &process._new_text
FROM
DataSetHere
;QUIT;
%mend MyMacro;
如果我打电话给这个宏,我会传出“#34; cat"进入进程,我想现在声明/初始化一个名为 cat_new_text 的变量,每当&& 时,它应返回在该查询中选择的COUNT(*) ;引用了cat_new_text 。
我已经做了一些阅读,研究了使用多个&符号,试图首先在引号内解决和处理 - 没有什么能真正解决我的确切问题。有没有人知道一个明确的方法来实现这个目标?
提前致谢!
答案 0 :(得分:2)
您的代码似乎很好,似乎它会完全按照您的描述进行操作。 但是,如果您尝试访问"宏之外的新宏变量,例如,
%MyMacro(cat);
%put &cat._new_text.;
然后确实它不会起作用,因为变量是在宏中本地创建的,并且不存在于该宏的范围之外。
要解决此问题,您只需在宏定义中添加%global
语句:
%macro MyMacro(process);
%global &process._new_text;
PROC SQL;
SELECT COUNT(*)
INTO: &process._new_text
FROM DataSetHere
;
QUIT;
%mend MyMacro;