问题标签 [sas-macro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1960 浏览

sas - 在 SAS 中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么?

在 SAS 中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么?

这似乎TRANSLATE是一个很好的功能。但是,当%SYSFUNC与此函数一起使用时,参数不会用引号括起来。您如何表示应使用空白作为替换?

0 投票
4 回答
28987 浏览

sas - SAS:从另一个调用一个宏...宏定义的顺序

在我的代码中,我有几个宏。宏 A 是主宏。然后宏 A 调用宏 B,宏 B 又调用宏 C。

在 SAS 中,我是否必须按倒序定义它们?换句话说,我是否必须先定义宏 C,然后定义宏 B,最后定义宏 A?还是因为 SAS 在实际执行运行宏的命令之前读取了所有代码,这是否重要?就此而言,我可以发出命令将宏作为代码中的第一条语句运行,然后在命令下方定义宏吗?

谢谢!

0 投票
3 回答
8082 浏览

global - SAS 宏全球范围

有没有一种捷径可以让在宏范围内创建的所有宏变量都在全局范围内?

IE:

0 投票
1 回答
1155 浏览

toolbar - 从工具栏提交 SAS 代码或宏

是否可以将 SAS 脚本或宏分配给 Base SAS 中的工具栏按钮?即你能'dm'一个宏或sas脚本吗?

0 投票
1 回答
3278 浏览

sas - 如何将宏函数的结果分配给 SAS 中的宏变量?

我有一个创建时间戳的宏(附加到输出文件名)。但是,与其记住宏将值分配给哪个宏变量,我更愿意将宏变量分配给宏的结果(如果这还不够循环的话)。

这是当前的宏......

您如何引用它以使其发挥作用?另外,我会从宏中删除“%let tms=”吗?

此外,相同的引用是否适用于以下 ODS 分配语句?

感谢您抽出宝贵的时间....

0 投票
3 回答
2166 浏览

sas - 从另一个会话引用远程 SAS 工作库

是否曾经遇到过 SAS 会话问题,但由于远程工作库 (RWORK) 中有关键文件而无法关闭会话?

我当然有!那么如何从另一个(新)会话访问该库?

0 投票
3 回答
912 浏览

sas - 我可以更改 SAS 中 CALL EXECUTE 堆栈的执行顺序吗?

我正在使用 SAS 9.1.3 在 DATA 步骤中调用宏,但宏会生成 PROC REPORT 步骤,因此我使用 CALL EXECUTE 来调用它,生成所有这些 PROC REPORT 步骤,然后在数据步。

我正在使用一个数组,每次都会为此数组中的每个元素执行宏:

问题是,报告输出(通常)向后输出 - 它会先打印 question3,然后是 2,然后是 1。

有没有办法修改 CALL EXECUTE 的执行顺序,以便我可以按顺序打印问题报告,或者它只是做自己的事情?

谢谢!

0 投票
8 回答
42688 浏览

sas - 使用 SAS 宏从 Windows 目录通过管道传输文件名列表

我正在尝试修改下面的宏以接受宏参数作为 dir 命令的“位置”参数。但是,由于嵌套引号问题,我无法正确解决它。使用 %str(%') 不起作用,由于某种原因引用函数也不起作用。

当文件路径没有空格(例如 C:\temp\withnospace)时,宏将正常工作,因为不需要中间引号。但是我需要这个宏来处理带有空格的文件路径(例如'C:\temp\with space\')。

请帮忙!

0 投票
2 回答
410 浏览

macros - sas宏索引还是其他?

我有 169 个城镇,我想为其迭代一个宏。我需要使用城镇名称(而不是城镇代码)保存输出文件。我有一个TOWN包含城镇代码和城镇名称的数据集 ( )。是否可以为%leti=town-code 的每次迭代设置一个设置为 town-name 的语句?

我知道我可以使用索引函数列出城镇名称,但我想要一种设置索引函数的方法,以便%let在 i=TOWN.town-code 时为 TOWN.town-name 设置一条语句。


下面的所有答案似乎都是可能的。我现在使用了 %let = %scan( ,&i) 选项。一个限制是城镇名称可以超过一个单词,所以我用下划线代替了我稍后更正的空格。

这是我的宏。我将 proc 报告输出到 169 个城镇中的每一个的 excel 中。我需要将 excel 文件保存为城镇名称,并且标题中需要包含城镇名称。然后,在 Excel 中,我将所有 169 个工作表合并到一个工作簿中。

0 投票
2 回答
434 浏览

sas - SAS 宏包括警卫

在其他编程语言(如 C++)中,包含保护用于防止同一代码的多次包含。

在 C++ 中就像这样:

在 SAS 宏函数定义中构建包含保护是否有意义?应该怎么做?