关于宏MACRO,我们需要知道的事
一、先从最宏观的角度来了解宏,这里的宏观角度是指程序的运行流程:
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”就可以永久保存,调用可普通临时宏调用方法一样。
关于宏MACRO,我们需要知道的事的更多相关文章
- C# 范型约束 new() 你必须要知道的事
C# 范型约束 new() 你必须要知道的事 注意:本文不会讲范型如何使用,关于范型的概念和范型约束的使用请移步谷歌. 本文要讲的是关于范型约束无参构造函数 new 的一些底层细节和注意事项.写这篇文 ...
- 十件你需要知道的事,关于openstack-trove(翻译)
开源数据库即服务OpenStack Trove应该知道的10件事情 作者:Ken Rugg,Tesora首席执行官 Ken Rugg是Tesora的创始人,CEO和董事会成员. Ken的大部分职业都是 ...
- 关于Unicode,字符集,字符编码,每个程序员都应该知道的事
关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...
- 学习IOS需要知道的事
什么是iOS iOS是一款由苹果公司开发的操作系统(OS是Operating System的简称),就像平时在电脑上用的Windows XP.Windows 7,都是操作系统 那什么是操作系统呢?操作 ...
- 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- 漫谈ElasticSearch关于ES性能调优几件必须知道的事
lasticSearch是现在技术前沿的大数据引擎,常见的组合有ES+Logstash+Kibana作为一套成熟的日志系统,其中Logstash是ETL工具,Kibana是数据分析展示平台.ES让人惊 ...
- Weex学习与实践(一):Weex,你需要知道的事
Weex学习与实践(一):Weex,你需要知道的事 http://coderyi.com/posts/weex1/ 1.命令行工具:weex-toolkit https://github.com/w ...
- 苹果强制使用HTTPS传输了怎么办?——关于HTTPS,APP开发者必须知道的事
WeTest 导读 2017年1月1日起,苹果公司将强制使用HTTPS协议传输.本文通过对HTTPS基础原理和通信过程内容的讲解,介绍APP开发者在这个背景下的应对办法. 几周前,我们在<htt ...
随机推荐
- java面试|精选基础(1)
以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...
- Docker windows nanoserver/mysql镜像root用户密码错误
由于需要在Windows server上的Docker中部署mysql服务,为了方便起见所以在Docker hub找到了nanoserver/mysql (https://hub.docker.com ...
- 创建dynamics CRM client-side (八) - 获取attribute的值 和 设置disable
大家可以用下面的方式来获取attribute的值 formContext.getAttribute("address1_shippingmethodcode").getText() ...
- CSS-10-内边距
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- mysql5.7的基本使用
mysql的基本使用:最简单的增删改查 (建议用类似记事本的东西写代码,错了容易改) 以下就是这篇文章的代码 一,增和查 CREATE DATABASE one; 新建了一个名为one的数据库 S ...
- 爬虫之 App 爬取
- 移动端数据的爬取- 抓包工具: - fiddler - 青花瓷 - miteproxy - 环境的搭建 1.对fiddler进行配置:tools->options->connectio ...
- CSS-- 实用CSS样式
自用实用CSS样式 1.清除DIV浮动 <span style="font-family:KaiTi_GB2312;">clear: both;</span> ...
- hadoop-2.10.0安装hive-2.3.6
公司建立数仓,hive是必不可少的,hive是建立在hadoop基础上的数据库,前面已经搭建起了hadoop高可用,要学习hive,先从搭建开始,下面梳理一下hive搭建过程 1.下载hive安装包 ...
- vuex之Mutation(三)
说明 既然我们可以取出数据,就可以修改数据,而修改数据并不是像修改data的数据一样,直接 this.xxx = xxx,这样有一个问题,在实际开发中,state的数据一般会多个组件共享,如果可以使用 ...
- 【干货】零基础30分钟让你拥有一个完整属于自己的短视频APP系统
目录 一.附言: 1 二.购买域名和购买服务器: 2 三.搭建服务器环境: 5 四.配置APP前端部分: 8 1.工具以及文件准备: 9 2.配置后端接口地址 11 3.配置APP启动图和启动图标 ...