首页 > 其他分享 >SAS - Macro 笔记

SAS - Macro 笔记

时间:2022-10-04 16:44:38浏览次数:58  
标签:name Macro 笔记 variable macro SAS 变量

SAS Macro 由两部分组成:Macro variables and Macro.

Macro variable :

  • 命名规范:需要遵循 SAS 变量命名规范(不超过32 characters, 以下划线或字母开始,只包含数字、字母或下划线)。Macro variable value 长度不超过64000 characters.
  • Local & Global : Local macro variable is defined insides the macro, which can be used only in the macro. Global macro is defined outsides the macro, which can be used exerywhere in the program. Local macro variable 可以被转换成 Global macro variable, 反之亦然。
  • 使用宏变量:给宏变量添加前缀&就可以调用宏变量。当需要把 macro variable 放进引号时,由于SAS macro process无法识别单引号,必须将其放进双引号。
%let iterations = 10;
%let country = New Zealand;

DO i = 1 to &iterations;
TITLE "Addresses in &country";

Macro :

%MACRO macro-name;
    macro-text
%MEND macro-name;
  • 命名规范:Macro name 要遵循和 macro variable name 一致的命名规范。Macro name in %mend is optional but it's better to have it.
  • 添加逻辑判断:%IF-%THEN 比 IF-THEN 的功能更多,比如包含在 DATA,PROC 步外层。其他带%的逻辑语句也是。
%IF condition %THEN action;
    %ELSE %IF condition %THEN action;
    %ELSE action;

%IF condition %THEN %DO;
    SAS statements
%END;

在 macro 运行中,会自动产生一些系统宏变量,常见的有:

&SYSDATE : the character value of the date that job or session began,e.g. 28MAY08

&SYSDAY:the day of the week that job or session began,e.g.Wednesday

 

  • CALL SYMPUT("macro-variable-name",value) : 将DATA步的值赋值给一个宏变量,使后面的代码可以调用它。value 可以是一个变量或一个具体的值,当时一个具体的值时,必须放进引号。
IF Age >= 18 THEN CALL SYMPUT("status", "Adult");
ELSE CALL SYMPUT("status", "Minor");

IF TotalSales > 1000000 THEN CALL SYMPUT("bestseller", BookTitle);

注意:由于只有在DATA步运行后才会将值赋给宏变量,所以用CALL SYMPUT创建的宏变量无法在它所在的当前DATA步中使用,只能在后面的代码语句中使用。

 

  • System Options for macro debugging: 在执行 macro 前面添加 options 帮助输出 macro 执行的一些信息。常用的 options :粗体是选项的默认设置。

/*Usage*/
OPTIONS MPRINT NOSYMBOLGEN NOMLOGIC;

/*Options MPRINT*/ %macro mktitle(proc,data); title "%upcase(&proc) of %upcase(&data)"; %mend mktitle; options mprint; %mktitle; /*Directing MPRINT Output to an External File - use mfile*/ options mfile mprint; filename mprint 'debugmac';

 

标签:name,Macro,笔记,variable,macro,SAS,变量
From: https://www.cnblogs.com/zooz-logging/p/16754005.html

相关文章

  • 学习笔记——Django项目中请求与响应(json数据)
    2022-10-04测试json数据与Django项目与pycharm连接,在“postman”软件中。“postman”是一个接口测试软件。下载方式问度娘。(1)在“postman”中设置“json”连接请求 ......
  • 观看尚硅谷redis6的学习笔记
     文章目录笔记,资料下载建议先补一下数据结构2.redis介绍3.常用的五大基本数据类型1.对key的基本操作Redis字符串(String)Redis列表(List)Redis集合(Set)Redi......
  • Java基础笔记
    Java程序运行机制编译型由编译器直接编译成能给计算机可以执行的东西速度快操作系统C/C++解释性一步步解释最终达成解释的全部的目的网页java程序运行机制......
  • [补档]高斯消元做题记录/或曰 学习笔记
    早就退役啦!乍一看挺水的。P2455[SDOI2006]线性方程组板子题。codeP4035[JSOI2008]球形空间产生器给定一个\(n\)维的球体上\(n+1\)个点的坐标\(a_{i,j}\)。求......
  • 【学习笔记】数据库级别的MD5加密
    数据库级别的MD5加密什么是MD5?MD5信息摘要算法(英语:MD5Message-DigestAlgorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信......
  • 【学习笔记】Mysql函数
    Mysql函数 常用函数数学运算SELECTABS(-100)  --绝对值SELECTCEILING(6.5) --向上取整SELECTFLOOR(6.5)  --向下取整SELECTRAND()   ......
  • 元模板 笔记
    对类型编写,由于c++不存在if(type==xxx){}这种语法。类型计算可以使用:1,重载。2,虚函数。继承。3,c语言中利用Union查看代码structVariant{union{......
  • <<程序员修炼之道:从小工到专家>>阅读笔记01
       <<程序员修炼之道:从小工到专家>>阅读笔记01第一章注重实效的哲学1.注重实效的程序员的特征:是他们处理问题、寻求解决方案时的态度、风格、哲学。设法把问题放......
  • C++ 自学笔记 Declaring references 引用
    引用:类型&Y=X;Y是X的另一个名字   pointersvsreferences(指针vs引用)(ps:引用就是用的const指针)  java:所有对象放在堆里只能用指针(不能计算用的const)访......
  • 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin
    原文链接我是一名五六年经验的前端程序员,现在准备学习一下Golang的后端框架gin。以下是我的学习实战经验,记录下来,供大家参考。https://github.com/gin-gonic/gin1.......