在宏变量(循环)SAS 中使用 PUT 时出错

Error when using PUT in a Macro variable (loop) SAS

我需要一个大小为 2 且前导零的变量,例如 01、02、10、11...,以便在宏中使用。 宏 executa1 有效,但显示值 1,2,10,11 ....(没有零)。 所以我尝试使用 z2。格式,如宏 executa2.

但不幸的是,它不起作用。

%LET vdia = 01;
%LET vano = 2019;

%MACRO executa1;
    %DO i=1 %TO 12 %BY 1;
        %LET vmes = &i;      
        %PUT &vmes;
    %END;
%MEND;

%MACRO executa2;
    %DO i=1 %TO 12 %BY 1;
        %LET vmes = %PUT(&i, z2.);
        %PUT &vmes;
    %END;
%MEND;

%executa1
%executa2

错误日志(executa2):

39              %LET vmes = %PUT(&i, z2.);
ERROR: Macro keyword PUT appears as text.
ERROR: A dummy macro will be compiled.

我也尝试了 %eval()%sysfunc() 的一些组合,但无济于事。

有谁知道达到预期效果的秘诀吗?

宏语言中的

%put 仅将项目打印到日志中。相反,您想使用 putn().

%LET vmes = %sysfunc(putn(&i, z2.));