SAS学习笔记10 宏变量

  1. 一个宏变量存放的值保持不变直到被修改(全局变量
  2. 引用时,变量名前加上"&"
  3. 宏变量在引用时放在双引号之间会被解读(单引号不会被解读)

用户定义的宏变量,有三种方式:

  1. %let 宏变量名=宏变量值(宏变量值最大可存储65535个字符)
  2. call symput(宏变量名,值);(这个方法只允许在data步中)
  3. proc sql

宏变量的引用

 显示宏变量及其值

  • _GLOBAL_ :输出用户自定义的宏变量当中的全局宏变量信息;

  • _LOCAL_ :输出用户自定义的宏变量当中的局部宏变量信息;(一般用在宏内部,因为只有在宏内部才有局部的概念)

  • _READONLY_ :输出用户自定义的宏变量中只读的宏变量信息,包括全局和局部的;

  • _WRITABLE_:输出用户自定义的宏变量中可写的宏变量信息,包括全局和局部的;

宏变量与后续文本的分隔

 当宏变量跟后续文本紧密同时使用时,需要界定宏变量的结束位置

间接引用宏变量

“&宏变量名”是直接引用

如果引用的宏变量名是通过宏产生的,则需要间接引用,此时需要用:&&

DATA STEP

如果要在DATA STEP执行阶段创建Macro Variable,就要使用执行阶段生效的语句。在DATA STEP中可通过CALL SYMPUT来完成

CALL SYMPUT( macro-variable, value );
  • macro-varialbe为Macro Variable的名字,可以为引号引起来的字符串,也可以为DATA STEP中的字符变量;

  • value为Macro Variable的取值,可以为引号引起来的字符串;也可以为DATA STEP中的变量(如果是数值变量,SAS会进行一次自动转换,将其转换为字符串后赋给Macro Variable)

此外,还有另外一个CALL SYMPUTX也是用来在DATA STEP中创建Macro Variable。它与CALL SYMPUT的用法一模一样,只有一个区别:

CALL SYMPUTX在给Macro Variable赋值的时候会移除Leading blanks和Trailing blanks

注意:%put语句在输出时会移除输出内容的Leading blanks和Trailing blanks

 PROC SQL

 SQL相比DATA步可以很快速的完成一些聚合运算。这些运算后的结果如果想要输出到Macro Variable中,就需要用INTO子句来完成。其语法格式如下:

INTO :macro-variable-specification-1 <, :macro-variable-specification-2 ...>

特别注意,INTO子句中需要在每个创建的Macro Variable前加“:”

除了上面这种赋单值外,还可以赋多个值给某个Macro Variable,并且以指定的分隔符进行区分。例如:

%SYMDEL STATEMENT

当某个Macro Variable不再使用的时候,可以通过%symdel语句来删除

posted @ 2019-06-04 13:22  特殊的苹果  阅读(6621)  评论(0编辑  收藏  举报
动态线条
动态线条end