我对宏变量的格式感到困惑。尝试格式化两个变量。一个是工作,一个不是!
代码是:
proc format;
value classgrp
1 = 'Total Resurfacing'
2 = 'Cemented Total Conventional'
3 = 'Cementless Total Conventional'
4 = 'Hybrid Total Conventional'
value hrtp
1='0-1Mth'
2='1Mth-'
3='3Mth-'
4='1Yr-'
5='5Yr-'
6='10Yr+'
;
run;
%macro t(varfmt,tpfmt);
%do m=2 %to 3;
%let mformat=%sysfunc(putn(&m., &varfmt.));
%let tpformat=%sysfunc(putn(&m., &tpfmt.));
%put ****variable &mformat.*****;
%put ****time period &tpformat.*****;
%end;
%mend;
%t(varfmt=classgrp.,tpfmt=hrtp.);
输出
警告:%SYSFUNC或%QSYSFUNC宏函数引用的函数PUTN的参数2为 超出范围。 ****变量水泥总传统***** ****时间段 ***** 警告:%SYSFUNC或%QSYSFUNC宏函数引用的函数PUTN的参数2为 超出范围。 ****可变非骨水泥总常规***** ****时间段*****
只是classgrp格式成功转移到宏变量“mformat”。那么为什么宏变量tpformat不能从hrtp获取格式?
谢谢, 安德烈