Macros 仅使用sas中的宏变量创建(%let)创建宏

Macros 仅使用sas中的宏变量创建(%let)创建宏,macros,sas,Macros,Sas,嗨,我试图创建一个只包含宏变量创建的宏,但失败了。以下是一个例子: %macro createvariable; %let a = 5; %let b = 6; %mend createvariable; %createvariable; data test; c = &a + &b; run; 但它的作用如下: %macro createvariable; %let a = 5; %let b = 6; data test;

嗨,我试图创建一个只包含宏变量创建的宏,但失败了。以下是一个例子:

%macro createvariable; 
    %let a = 5;
    %let b = 6;
%mend createvariable;
%createvariable; 

data test; 
    c = &a + &b;
run;
但它的作用如下:

%macro createvariable; 
    %let a = 5;
    %let b = 6;
data test; 
    c = &a + &b;
run;
%mend createvariable;
%createvariable; 
所以我想知道SAS是否不能创建一个只有宏变量创建的宏?或者有办法解决这个问题。谢谢。

试试看

%macro createvariable; 
%global a b;
    %let a = 5;
    %let b = 6;
%mend createvariable;
%createvariable; 

data test; 
    c = &a + &b;
run;

我认为问题在于,在宏中创建的宏变量是该宏的局部变量。如果要在宏内创建宏变量并允许在该宏外访问它们,则必须将它们声明为全局宏变量。请!谢谢你的解决方案。我真的明白了。有人知道为什么这个问题会被否决吗?描述一下为什么需要%全球声明可以改进这个答案。