SAS - 条件宏变量

时间:2017-01-04 16:03:03

标签: if-statement macros sas

我有一个变量日期= 201611,我需要按照以下格式'2016-12-01'创建下个月的第一天。以下代码适用于截至11月的几个月:

%let date = 201611;
%let rok = %sysfunc(substr(&date,1,4));
%let month = %sysfunc(substr(&date,5,2));
%let xdat2_ii = &rok-%eval(&month + 1)-01;
%let xdat1 = %str(%')&xdat2_ii.%str(%');
%put &xdat1;
'2016-12-01'

我需要添加一些改进以使代码在12个月工作,即当日期是201612时获得'2017-01-01'。

我的想法是使用宏来做,但它不起作用。

%macro promenne;
%if &month < 12 %then %let xdat2_ii = &rok-%eval(&month + 1)-01 
%else %if &month= 12 %then %let xdat2_ii = %eval(&rok + 1)-01-01;
%mend promenne;

感谢您提出任何建议。

1 个答案:

答案 0 :(得分:2)

使用日期时,通常最容易使用内置日期转换功能 - 在这种情况下,disallow

original = {1 => ['a', 'b', 'c'], 2 => ['g', 'm', 'z']}

new_hash = {'a' => 1, 'b' => 1, 'c' => 1, 'g' => 2, 'm' => 2, 'z' => 2}