关于宏MACRO,我们需要知道的事
2024-09-07 11:08:14
一、先从最宏观的角度来了解宏,这里的宏观角度是指程序的运行流程:
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”就可以永久保存,调用可普通临时宏调用方法一样。
最新文章
- 《开源博客Q群》和《NET上海Q群》入群须知
- 如何做好一个ORM框架
- 准备Activiti的开发环境
- iOS键盘覆盖输入框的处理.doc
- Labeling Balls--poj3687
- 前缀 树 背单词(Remember the Word,LA 3942)
- SDWEBImage和collectionView的组合,以及collectionView的随意间距设置
- mobile meta iphone
- Go语言数组的使用
- PHP对象和接口抽象类注意事项
- Android之greenDao使用
- Docker容器的基本了解和命令
- 转";container of()函数简介";链接地址
- spring cloud:Edgware.RELEASE版本hystrix超时新坑
- asp.net Identity 设置自定义登录
- ERP项目实施记录04
- kubernetes的CI/CD
- Spring源码阅读(六)
- PHP升级7.2之后需要注意的事情
- winform菜单栏、工具栏
热门文章
- Http协议 Content-Type
- 2.Markdown学习
- 电脑开机后多了OneKey Ghost启动选项怎么解决
- hihoCoder 1387 A Research on ";The Hundred Family Surnames";
- hge引擎使用技巧
- .net core 常见设计模式-IChangeToken
- sqli_labs学习笔记(一)Less-21~Less-37
- Shell字符串比较相等、不相等方法小结【转】
- sas9.2 windows7系统 10年11月后 建立永久数据集时,提示:“用户没有与逻辑库相应的授权级别
- HTML 中清除浮动