Sas 尝试创建一个宏,该宏检查宏变量是否存在,如果不存在则创建
我想检查宏变量g900_r是否存在,如果不存在,则创建一个 谢谢,Sas 尝试创建一个宏,该宏检查宏变量是否存在,如果不存在则创建,sas,sas-macro,Sas,Sas Macro,我想检查宏变量g900_r是否存在,如果不存在,则创建一个 谢谢, 山姆。你差点就拿到了。。。你遗漏了两件关键的事情。需要包含%global语句才能将宏声明为全局宏变量。这将使其在宏之外可用。您在%let语句中将其赋值为零时,也缺少了&项 您的最终代码应该是这样的: %Macro symexistchk(valuex); %if %symexist(&valuex) %then %put &valuex; %
山姆。你差点就拿到了。。。你遗漏了两件关键的事情。需要包含%global语句才能将宏声明为全局宏变量。这将使其在宏之外可用。您在%let语句中将其赋值为零时,也缺少了&项 您的最终代码应该是这样的:
%Macro symexistchk(valuex);
%if %symexist(&valuex) %then %put &valuex;
%else %do; %let valuex = 0;
%end;
%Mend symexistchk;
%symexistchk(g900_r);
你差一点就得到了。。。你遗漏了两件关键的事情。需要包含%global语句才能将宏声明为全局宏变量。这将使其在宏之外可用。您在%let语句中将其赋值为零时,也缺少了&项 您的最终代码应该是这样的:
%Macro symexistchk(valuex);
%if %symexist(&valuex) %then %put &valuex;
%else %do; %let valuex = 0;
%end;
%Mend symexistchk;
%symexistchk(g900_r);
如果要将新创建的宏分配给具有%global的全局作用域,请在%let语句中解析宏变量参数,这样您就不仅仅是在具有&&&&的%put语句中创建名为valuex的变量
如果要将新创建的宏分配给具有%global的全局作用域,请在%let语句中解析宏变量参数,这样您就不仅仅是在具有&&&&的%put语句中创建名为valuex的变量
%macro symexistchk(valuex);
%if %symexist(&valuex.) %then %put Already exists: &valuex = &&&valuex;
%else %do;
/* Make macro variable available outside macro */
%global &valuex.;
%let &valuex. = 0;
%put Assigning: &valuex = &&&valuex;
%end;
%mend symexistchk;
%symexistchk(mVar);
%symexistchk(mVar);