【发布时间】:2020-09-30 18:39:33
【问题描述】:
我需要一个大小为 2 且前导零的变量,例如 01、02、10、11...,以便在宏中使用。 宏 executa1 有效,但显示值 1,2,10,11 ....(没有零)。 所以我尝试使用z2。格式,如宏 execta2。
但不幸的是,它不起作用。
%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是一个宏语句。您不能为变量分配语句。您为变量分配一个值、一个可解析的表达式、宏解析或宏调用,它们可能会或可能不会将源代码作为 RHS 发出。