为宏变量提供格式

时间:2016-10-12 00:51:30

标签: macros sas format

我对宏变量的格式感到困惑。尝试格式化两个变量。一个是工作,一个不是!

代码是:

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获取格式?

谢谢, 安德烈

0 个答案:

没有答案