【发布时间】:2022-12-04 20:41:41
【问题描述】:
我想通过调用这个宏来取回一个字符,但是有一个错误:
%macro getcategory(日期=);
%全球类别;
%if %year(date) < 2002 %then %do; %let 类别 = A;
%修补;
%getcategory(日期=1999);
我尝试使用 symput 但没有工作。
【问题讨论】:
我想通过调用这个宏来取回一个字符,但是有一个错误:
%macro getcategory(日期=);
%全球类别;
%if %year(date) < 2002 %then %do; %let 类别 = A;
%修补;
%getcategory(日期=1999);
我尝试使用 symput 但没有工作。
【问题讨论】:
看起来您正在尝试使用 %year() 函数来确定传递给 getcategory 宏的 date 参数的年份。但是,%year() 函数不是 SAS 语言的一部分。
要从 SAS 日期值中获取年份,您可以使用 year() 函数,它是 SAS 日期和时间函数的一部分。以下是您可能如何使用它的示例:
%macro getcategory(date=);
%global category;
%let year = %sysfunc(year(date));
%if &year < 2002 %then %do;
%let category = A;
%end;
%mend;
%getcategory(date=1999);
在此示例中,%sysfunc() 函数用于调用宏中的year() 函数。这是必需的,因为 year() 函数是 SAS 函数,而不是宏语言函数。
请注意,year() 函数将年份作为四位数返回,因此您需要将其与值 2002 而不是值 2 进行比较。
我希望这有帮助!如果您有任何其他问题,请告诉我。
【讨论】: