Sas 用于创建动态数据集名称的transform date宏变量

Sas 用于创建动态数据集名称的transform date宏变量,sas,Sas,我正在使用以下代码: LibraryName.Bla_&SomeDate._&AnotherDate.; 创建动态数据集名称。该代码将生成例如: LibraryName.Bla_2016-10-29_2016-11-12 SAS不喜欢的。我能做些什么来解决这个问题?我想这应该是一个有效的名字: LibraryName.Bla_2016_10_29_2016_11_12 一个选项名为literal: LibraryName."Bla_&SomeDate._&A

我正在使用以下代码:

LibraryName.Bla_&SomeDate._&AnotherDate.;
创建动态数据集名称。该代码将生成例如:

LibraryName.Bla_2016-10-29_2016-11-12
SAS不喜欢的。我能做些什么来解决这个问题?我想这应该是一个有效的名字:

LibraryName.Bla_2016_10_29_2016_11_12

一个选项名为literal:

LibraryName."Bla_&SomeDate._&AnotherDate."n;
这样你就可以使用它了。也许是个好主意,也许不是,但这是可能的

如果您喜欢使用普通SAS名称,可以在
%sysfunc
调用中处理它。如果您只拥有
-
,并且希望它们是
,那么这很简单:

%let somedate=2016-10-29;
%let anotherdate=2016-11-12;
%let datasetvar = %sysfunc(translate(Bla_&somedate._&anotherdate.,_,-));
%put &=datasetvar.;

如果你有其他角色,它可能会更复杂,这取决于具体情况;例如,您可以使用sas函数
nvalid
查看它是否是合法的变量名(与数据集或“成员”名称的规则集大致相同)。

一个选项命名为literal:

LibraryName."Bla_&SomeDate._&AnotherDate."n;
这样你就可以使用它了。也许是个好主意,也许不是,但这是可能的

如果您喜欢使用普通SAS名称,可以在
%sysfunc
调用中处理它。如果您只拥有
-
,并且希望它们是
,那么这很简单:

%let somedate=2016-10-29;
%let anotherdate=2016-11-12;
%let datasetvar = %sysfunc(translate(Bla_&somedate._&anotherdate.,_,-));
%put &=datasetvar.;

如果你有其他角色,它可能会更复杂,这取决于具体情况;例如,您可以使用sas函数
nvalid
查看它是否是一个合法的变量名(这与数据集或“成员”名称的规则大致相同)。

作为一个侧栏,这类事情并不少见,如果您环顾四周,您可以找到不同的人编写的代码来执行更复杂的版本;特别是看看那些发布实用程序宏库的人,因为这类东西将是其中的一部分。谢谢。我在谷歌上搜索了一下,但你能帮我指一下好的实用程序宏库吗?谢谢作为一个侧边栏,这类事情并不少见,如果你环顾四周,你可以找到各种各样的人编写的代码来完成更复杂的版本;特别是看看那些发布实用程序宏库的人,因为这类东西将是其中的一部分。谢谢。我在谷歌上搜索了一下,但你能帮我指一下好的实用程序宏库吗?谢谢