一、先从最宏观的角度来了解宏,这里的宏观角度是指程序的运行流程:

1,提交代码后,SAS先把代码读取储存到堆栈中;

2,用文本扫描插件来扫描堆栈中的代码,从上到下,从左到右;

3,扫描到一个分号,则编译之前的代码,(有错则警告报错或者停止扫描)

4,读到%,&的宏则马上调用宏编译器对宏进行替换,直到替换完为止;

5,扫描到代码边沿(RUN,DATA,PROC )则暂停扫描,执行以上代码;

6,然后接着扫描下一步,重复2-5步骤。

可以理解成一小段代码给你,先把宏给替换完再执行别的。

二、储存宏变量

%LET在宏的外面,则直接检查为全局宏变量表,若存在则替换刷新该宏值,

若在宏函数里面,则:

1,检查局部宏变量表,若存在则更新,

2,不存在则检查全局宏变量表,存在则更新,

3,不存在则在局部宏变量表创建一个该宏变量。

三、类似的工作久了,可以将一些常用的宏写在一个固定的逻辑库中,以后可以随时调用,以提高工作效率。

如:

LIBNAME ZLJ_MACRO "H:\ZLJ_MACRO";
OPTIONS MSTORED SASMSTORE=ZLJ_MACRO;
%MACRO A/STORE SOURCE;
PROC FREQ;
TABLES X/MISSING;
RUN;
%MEND;

第二句是为了指明存放宏 的逻辑库,如要将一个宏储存起来,则只需想第三行一样写“STORE SOURCE”就可以永久保存,调用可普通临时宏调用方法一样。

最新文章

  1. 《开源博客Q群》和《NET上海Q群》入群须知
  2. 如何做好一个ORM框架
  3. 准备Activiti的开发环境
  4. iOS键盘覆盖输入框的处理.doc
  5. Labeling Balls--poj3687
  6. 前缀 树 背单词(Remember the Word,LA 3942)
  7. SDWEBImage和collectionView的组合,以及collectionView的随意间距设置
  8. mobile meta iphone
  9. Go语言数组的使用
  10. PHP对象和接口抽象类注意事项
  11. Android之greenDao使用
  12. Docker容器的基本了解和命令
  13. 转"container of()函数简介"链接地址
  14. spring cloud:Edgware.RELEASE版本hystrix超时新坑
  15. asp.net Identity 设置自定义登录
  16. ERP项目实施记录04
  17. kubernetes的CI/CD
  18. Spring源码阅读(六)
  19. PHP升级7.2之后需要注意的事情
  20. winform菜单栏、工具栏

热门文章

  1. Http协议 Content-Type
  2. 2.Markdown学习
  3. 电脑开机后多了OneKey Ghost启动选项怎么解决
  4. hihoCoder 1387 A Research on "The Hundred Family Surnames"
  5. hge引擎使用技巧
  6. .net core 常见设计模式-IChangeToken
  7. sqli_labs学习笔记(一)Less-21~Less-37
  8. Shell字符串比较相等、不相等方法小结【转】
  9. sas9.2 windows7系统 10年11月后 建立永久数据集时,提示:“用户没有与逻辑库相应的授权级别
  10. HTML 中清除浮动