如何向宏变量添加前导零?

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);