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语句来删除

SAS学习笔记10 宏变量的更多相关文章

  1. SAS学习笔记46 宏变量的可使用范围

    全局宏变量 在宏程序内部,除了使用%GLOBAL语句创建.在某些情况下,还可以直接使用DATA步中的CALL SYMPUT创建. 在一个宏程序中,在包含CALL SYMPUT的DATA步程序之前,如果 ...

  2. SAS学习笔记41 宏变量存储及间接引用

    Macro Variables存储在“Symbol Table”中.它是由Macro Processor在SAS启动时自动创建并维护的.SAS提供了一张视图来供我们查看Symbol Table中的内容 ...

  3. SAS学习笔记44 宏函数

    类SAS函数的宏函数 该部分函数共5个,其无论是名字.语法.功能都与SAS函数类似,只是在函数名前多了一个“%”.这5个宏函数分别是: %INDEX %LENGTH %SCAN %SUBSTR %UP ...

  4. SAS学习笔记43 宏语句

    流程控制 %GOTO语句与%label语句是结合起来使用的.首先通过%label语句定义一个位置,使用%GOTO语句可直接将程序的执行位置跳到该label标记位置,达到控制程序执行顺序的目的.可实现与 ...

  5. SAS学习笔记37 宏程序中parmbuff选项

    该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...

  6. SAS学习笔记42 宏程序

    Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting): K ...

  7. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  8. SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...

  9. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

随机推荐

  1. GO- 使用JSON

    1 json.Marshal  把对象转换为JSON的方法 原型如下 func Marshal(v interface{}) ([]byte, error)这个函数接收任意类型的数据 v,并转换为字节 ...

  2. Qt实现原生Flow实现不了的Item错误排列效果,类似淘宝商品展示

    main.qml import QtQuick 2.12 import QtQuick.Window 2.12 import QtQml.Models 2.12 Window { visible: t ...

  3. VSCode前端文件(html文件)如何以服务器模式打开?

    方法1: VSCode前端文件(html文件)如何以服务器模式打开?比如工程下有一个A.html文件,想在VSCode里面直接操作,就想Webstorm一样,以http://localhost/xxx ...

  4. 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

    小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...

  5. 2018-2019-2 《网络对抗技术》 Exp7 网络欺诈防范 20165222

    1.实践目标 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 2.实践内容 (1)简单应用SET工具建立冒名网站 (1分) apachectl start开启服务 ser ...

  6. 记一次用WireShark抓包摆脱Si服后台限制的过程

    背景:闲着无聊找了个小众的手游,因为手游都是比较吃金的,所以就找了个Si服,鉴于小时候宝可梦的情怀,就TB买了个GM后台.谁知这玩意有限制,到了100级之后升级超级难,最多只能发送99999W点经验, ...

  7. osg RTT 多相机-局部放大镜

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...

  8. 【用户体验度量】用户费力度评分(CES)

    http://www.woshipm.com/operate/2819882.html CES这个评分方式有点意思. 相关文章: http://www.woshipm.com/pd/856291.ht ...

  9. python安装lnmp

    #!/usr/bin/python # -*- coding:utf-8 -*- # 注意:本实验用root用户.已经安装python3.6.5 用pycharm运行,首先把nginx安装包放在 /u ...

  10. ubuntu18.04 server配置静态ip,新的网络工具netplan的使用方法【转:http://forum.ubuntu.org.cn/viewtopic.php?t=487463】

    最新发布的ubuntu18.04 server,启用了新的网络工具netplan,对于命令行配置网络参数跟之前的版本有比较大的差别,现在介绍如下:1.其网络配置文件是放在/etc/netplan/50 ...