如何向宏变量添加前导零?
How to add leading zeros to macro variable?
我正在尝试创建一个循环,对一组 table 执行相同的查询,从 2008 年到 2020 年,每年有一个 table:
%macro sqlloop(start,end);
%DO year=&start. %TO &end.;
PROC SQL;
CREATE TABLE WORK.RESULT_&year
SELECT DISTINC ID
FROM YEAR_&year.
QUIT;
%END;
%mend;
%sqlloop(start=8, end=20)
问题是我需要 2008 年和 2009 年的 table 前导零,因为它们的名称是:YEAR_08、YEAR_09、YEAR_10.. .
使用 Z 格式生成带前导零的数字。
%do year=8 to 20;
%let year=%sysfunc(putn(&year,Z2.));
...
%do year = 2008 %to 2020;
%let y2 = %substr(&year,3,2);
我正在尝试创建一个循环,对一组 table 执行相同的查询,从 2008 年到 2020 年,每年有一个 table:
%macro sqlloop(start,end);
%DO year=&start. %TO &end.;
PROC SQL;
CREATE TABLE WORK.RESULT_&year
SELECT DISTINC ID
FROM YEAR_&year.
QUIT;
%END;
%mend;
%sqlloop(start=8, end=20)
问题是我需要 2008 年和 2009 年的 table 前导零,因为它们的名称是:YEAR_08、YEAR_09、YEAR_10.. .
使用 Z 格式生成带前导零的数字。
%do year=8 to 20;
%let year=%sysfunc(putn(&year,Z2.));
...
%do year = 2008 %to 2020;
%let y2 = %substr(&year,3,2);