SAS中全局宏变量的类型
我们可以调用由创建的全局宏变量吗 %让,, %做, callsymput, sql into子句 宏参数SAS中全局宏变量的类型,sas,sas-macro,Sas,Sas Macro,我们可以调用由创建的全局宏变量吗 %让,, %做, callsymput, sql into子句 宏参数 请告诉我。为了便于讨论,最高范围是全局范围 安培或superq分辨率时使用的宏变量是当前或最近的更高范围。如果需要同一命名宏变量值,且该值的范围高于默认值,则必须从字典表(SASHELP.VMACRO)中查询该值 当计划从宏调用中执行的代码填充全局宏变量时,请使用%global语句声明该宏变量 使用宏函数%SYSMEXECDEPTH可以知道宏的执行深度。还有许多其他宏函数用于“反射”宏系统,
请告诉我。为了便于讨论,最高范围是全局范围 安培或superq分辨率时使用的宏变量是当前或最近的更高范围。如果需要同一命名宏变量值,且该值的范围高于默认值,则必须从字典表(SASHELP.VMACRO)中查询该值 当计划从宏调用中执行的代码填充全局宏变量时,请使用%global语句声明该宏变量 使用宏函数%SYSMEXECDEPTH可以知道宏的执行深度。还有许多其他宏函数用于“反射”宏系统,主要是中的SYS*和SYM*函数 举个例子。即使在宏执行深度中调用zoot,zoot宏也会填充全局宏变量age
options nocenter;
%let MY_MACRO_VAR = global;
%macro foo;
%local MY_MACRO_VAR;
%let MY_MACRO_VAR = local_1;
%put &=MY_MACRO_VAR;
options nolabel;
title "&SYSMACRONAME %nrstr(%SYSMEXECDEPTH=)%SYSMEXECDEPTH";
proc sql;
select * from dictionary.macros
where name = 'MY_MACRO_VAR';
quit;
options label;
%bar;
%mend;
%macro bar;
%local MY_MACRO_VAR;
%let MY_MACRO_VAR = local_%SYSMEXECDEPTH;
%put &=MY_MACRO_VAR;
options nolabel;
title "&SYSMACRONAME %nrstr(%SYSMEXECDEPTH=)%SYSMEXECDEPTH";
proc sql;
select * from dictionary.macros
where name = 'MY_MACRO_VAR';
quit;
options label;
%put &SYSMACRONAME %nrstr(%SYSMEXECDEPTH=)%SYSMEXECDEPTH;
%put _user_;
%if %SYSMEXECDEPTH=2 %then %bar;
%zoot
%mend;
%macro zoot;
%global my_global;
proc sql noprint;
select age into :my_global from sashelp.class where name = 'Jane';
quit;
%mend;
%foo;
%put _user_;
与宏系统的其他交互(如EXECUTE、SYMGET或RESOLVE)的范围可能变得相当微妙。调用是什么意思?你的意思是扩大它们的价值吗?范围界定: