转换日期宏变量,用于创建动态数据集名称

时间:2016-11-09 16:55:39

标签: sas

我正在使用此代码:

LibraryName.Bla_&SomeDate._&AnotherDate.;

创建动态数据集名称。代码产生例如:

LibraryName.Bla_2016-10-29_2016-11-12

SAS不喜欢。我该怎么做才能解决这个问题?我猜这是一个有效的名字:

LibraryName.Bla_2016_10_29_2016_11_12

1 个答案:

答案 0 :(得分:2)

一个选项名为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来查看它是否是合法的变量名称(它或多或少是与数据集相同的规则集,或者'成员',名称)示例