SAS访问宏变量名
我有一些宏变量,每个都有一个值。如何从变量的值中获取变量的名称? 例如,我为每个人指定了一个年龄值&艾米12岁,彼得10岁。 我还有一个宏函数计算其他东西,比如重量SAS访问宏变量名,sas,Sas,我有一些宏变量,每个都有一个值。如何从变量的值中获取变量的名称? 例如,我为每个人指定了一个年龄值&艾米12岁,彼得10岁。 我还有一个宏函数计算其他东西,比如重量 %macro weight(name=); %let weight=&name*10; %put &name.'s weight is &weight.; %mend; 如果我运行%weightname=Amy,我希望得到结果,因为Amy的体重是120。 我怎样才能得到艾米而不是
%macro weight(name=);
%let weight=&name*10;
%put &name.'s weight is &weight.;
%mend;
如果我运行%weightname=Amy,我希望得到结果,因为Amy的体重是120。
我怎样才能得到艾米而不是12岁的成绩
谢谢这将为您提供部分帮助。请注意,撇号有点问题,您需要避开它或引用它。我暂时忽略了这一点。关于你剩下的问题: 添加更多&解析嵌套的宏变量 使用%SYSEVALF对宏变量进行计算
%let Amy = 12;
%macro weight(name=);
%let weight=%sysevalf(&&&name*10);
%put &name. weight is &weight.;
%mend;
%weight(name=Amy);
好邪恶!艾米书中的那句话把事情搞得一团糟。SAS似乎对试图将宏的其余部分作为带引号的字符串进行求值感到困惑。 从魔术字符串开始,以结束所有引号,并确保已启用宏输出 一旦你这样做了,下面的方法应该会奏效。按照另一位回复者的建议,注意名称前的附加符号
;*';*";*/;quit;
options mprint;
%let Amy = 12;
%macro weightmacro(name=);
%let weight=%sysevalf(&&&name..*10);
%put &name.s weight is &weight.;
%mend;
%weightmacro(name=Amy);
如果点是可以用%str%'完成的所有格名词
357 %let Amy = 12;
358 %macro weightmacro(name=);
359 %let weight=%sysevalf(&&&name..*10);
360 %put &name.%str(%'s) weight is &weight.;
361 %mend;
362 %weightmacro(name=Amy);
Amy's weight is 120
请展示您已经创建了宏变量等的其他工作。通常,要解决这些问题,需要在宏变量前面添加更多。