将文本日期参数转换为宏中的 SAS 日期值
我想创建一个 SAS 宏,它采用文字日期(例如“31may2011”d)作为参数。在宏内部,我想将其转换为 SAS 日期值(例如 18778)。
%macro transLiteralDate2Value(literal=);
%put literal = &literal.;
%put sasdatavalue = ???; /* how to calculate this value ? */
%mend;
%transLiteralDate2Value(literal='31may2011'd);
是实现这一目标的优雅方法吗?当然,我可以通过解析文字字符串来做到这一点,但我认为必须有更好的方法。
我使用SAS 9.1.3
I want to create a SAS macro which takes a literal date (eg. '31may2011'd) as parameter. Inside the macro I want to transform this into a SAS date value (eg. 18778).
%macro transLiteralDate2Value(literal=);
%put literal = &literal.;
%put sasdatavalue = ???; /* how to calculate this value ? */
%mend;
%transLiteralDate2Value(literal='31may2011'd);
Is the are elegant way to achieve this? Of course I could do this by parsing the literal string, but I think there must be a better way.
I use SAS 9.1.3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这将在宏内部或外部工作。不要忘记 %sysfunc() 有一个方便的可选第二个参数,它可以让您格式化输出值。
或
干杯
抢
This will work inside or outside of a macro. Don't forget %sysfunc() has a handy optional second parameter which will let you format the output value.
or
Cheers
Rob
您可以使用 %sysfunc 宏函数来完成此操作。
You can do it using the %sysfunc macro function.
有一对像下面我的这样的简单转换宏很方便。另请参阅我的 sas-l 帖子。
It is handy to have a pair of simple conversion macros like mine below. See also my sas-l posting.