0

在 SAS DI 工作室中,我试图创建一个宏,并通过用户编写的代码转换为其分配一个值。如何打印此宏的值以测试我的代码是否符合我的要求。

我需要一个宏,它根据项目运行的日期取值,如下所示:

%let runYear = if month < 6 then year(today) - 1 else year(today)

通常我会从简单的事情开始,例如:

%let test = month(today())

看看它给了我什么并解决它,但我不知道如何在上面的例子中显示“测试”的值。

我是 SAS DI 工作室的新手,我意识到这是一个简单的问题,但我找不到答案。我只想知道如何从用户编写的代码中打印一个值/如何调试用户编写的代码。

4

1 回答 1

0

&要在宏变量名称之前引用宏变量的值。因此,如果宏变量被命名,test&test用于存储在测试中的值。

要显示宏变量的值,您可以使用%put宏语句。

%put &test ;

%put语句允许使用特殊语法,在值之前显示宏变量的名称。

%put &=test ;

请注意,在您的情况下,存储在宏变量中的 vlaue 只是您显示的文本。所以 test 有字符串month(today())。如果您在 SAS 语句中间扩展宏变量的值,这将很有效,因为 SAS 将评估该字符串作为对 month() 和 today() 函数的调用。但是,如果您希望宏变量包含这些函数的结果,则需要将每个函数调用包装在对宏函数的调用中%sysfunc()。例子:

151   %let test = month(today());
152   %put &=test;
TEST=month(today())
153
154   %let test = %sysfunc(month(%sysfunc(today())));
155   %put &=test;
TEST=7
于 2021-07-15T12:11:58.407 回答