zoukankan      html  css  js  c++  java
  • SAS宏功能(下)

    继续SAS宏功能(上),介绍一些常用的SAS宏函数、宏变量,及其宏程序写法。

    宏变量

    具有唯一确定的值

    存储字符串。

    是全局变量。

    可以在数据步中被引用,但不能在数据步中用赋值语句定义。

    引用时,在变量名前加“&”号。

    引用效果是:变量值代替变量名。

    宏变量在引用时放在单引号之间不会被解读,只能在双引号之间。

    观察宏变量的值:

    %put &宏变量名;结果在log窗口中。

    宏变量类型

    自动宏变量

    SAS进程开始时,或程序运行过程中由系统自动创建

    SAS退出前一直保持有效

    是全局宏变量,能在SAS任何地方被引用

    查看所有自动宏变量语句:%put _automatic_;

    自定义宏变量

    %LET语句定义:%LET 变量名=值;

    symput函数生成,调用方法:call symput(“宏变量名”,变量); 说明:创建一个宏变量,并用第二个参数的内容来给这个宏变量赋值。例:

    call symput("teddy",ro);

    %put &teddy;

    值可以是空的

    数字构成的字符串无数值含义,存为字符串

    数学表达式不进行赋值

    字符串前后空格被删除

    若值的字符串中有宏变量的引用,则先解读,后赋值

    查看所有自定义宏变量:%put _user_;

    查看所有宏变量(自动+自定义)

    %put _all_;

    宏函数

    %STR

    在给宏变量赋值时,使用此函数将值扩起来如:%STR(值),程序视作括号内的值为宏变量的值,例:%let print= %str(print data =sashelp.class;run;);

    %EVAL

    在给宏变量赋值时,使用此函数将值扩起来如:%EVAL(值),若值中含表达式,则先计算表达式的值,再将结果赋给宏变量。

    %SYSFUNC

    在给宏变量赋值时,为了使用数据步中的函数(如:SUBSTR,SCAN,TRIM,LEFT等;一些数据步函数不能套用此宏函数,如:PUT,INPUT,LAG,DIF等)对值进行加工,需要用此宏函数将值扩起来。如:%SYSFUNC(数据步函数名(自变量)<,输出格式>)。例:%let currdate = %sysfunc(today(),worddate.);

    注:在宏或宏语句中嵌套使用数据步函数时,必须在每个数据步函数外使用%SYSFUNC

    字符串中引用宏变量

    宏变量与字符串直接用”.”分隔。例:%let drc=v; proc gchart data=dst.project; &drc.bar region; run; (vbar region;)

    数据步中生成宏变量

    CALL SYMPUT(自变量1,自变量2)

    函数SYMGET

    得到在数据步中,有表达式动态生成(调用SYMPUT函数)的宏变量的值。

    宏程序

    %MACRO 宏名称;

             宏文本

    %MEND <宏名称>

    注:宏文本只能为,普通文本、SAS语句和程序步、宏变量,宏函数或宏语句、以上内容的组合。

    调用时:%宏名称(后不加分号)

    含参数的宏

    例:%macro printClass(class);

                      proc print data=&class;

                      run;

    %mend;

    调用:%printClass(sashelp.class)

    定义时可给参数赋默认值:%macro printClass(class=sashelp.class);

    调用时:%printClass()

  • 相关阅读:
    mysql处理字符串
    关于git新建本地分支与远程分支关联问题
    phpexcel相关函数
    centos添加开机启动项目
    centos搭建NFS网络文件系统
    centos 查看版本(转)
    ubuntu搭建nfs网络文件系统
    linux 日常学习
    从现在开始强迫自己使用 Reflect
    正则小括号实践
  • 原文地址:https://www.cnblogs.com/Teddy/p/1095341.html
Copyright © 2011-2022 走看看