SAS中文论坛
标题:
请教宏中日期的比较
[打印本页]
作者:
shiyiming
时间:
2009-8-13 09:43
标题:
请教宏中日期的比较
有这么一点程序:
%macro a(endd);
%let char=10AUG2009;
%if "&endd"d<"&char"d %then %do;
%put "&endd"d;
%end;
%else %do;
%put "&char"d;
%end;
%mend;
%a(31JUL2009);
我的理解应该是输出“31JUL2009”d的,但是为什么输出的是"10AUG2009"d,是不是我的程序哪里写的不对?
对宏里面时间变量"&endd"d是数字型的还是字符型的?我希望是数字型的,这个程序该怎么写呢?
谢谢
作者:
shiyiming
时间:
2009-8-13 09:49
标题:
Re: 请教宏中日期的比较
请别让贴子沉了。
作者:
shiyiming
时间:
2009-8-13 10:28
标题:
Re: 请教宏中日期的比较
[code:3q645c7n]%macro a(endd);
%let endd=%sysfunc(inputn(&endd,date9.));
%let char=%sysfunc(inputn(10AUG2009,date9.));
%if &endd<&char %then %do;
%put %sysfunc(putn(&endd,date9.));
%end;
%else %do;
%put %sysfunc(putn(&char,date9.));
%end;
%mend;
%a(31JUL2009);[/code:3q645c7n]
SAS宏变量的值永远是以character形式存储的,不管赋的是字符还是数值,宏变量"&endd"d解析后是字符串“31JUL2009”d
虽然在%if语句中会对expression自动调用%eval(),但字符串“31JUL2009”d没有被自动转换为numeric,仍然是character的,需要类型转换
作者:
shiyiming
时间:
2009-8-13 13:23
标题:
Re: 请教宏中日期的比较
谢谢
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2