`
心动音符
  • 浏览: 336994 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

sas macro宏编译原理

阅读更多
我们提交的SAS程序都先到input stack的地方,然后SAS就将这些程序转换成单个的token,这些token分为四类:

  Literal:主要是注释用的字符串

  Number:数字,时间,日期,十六进制数字

  Name:变量名

  Special:符号,例如& % + - 等

SAS有四类处理这些token的编译器:

  Data step compiler:处理数据步(或过程步?)

  SCL compiler:处理Sas Component Language

  Macro compiler:处理宏

  Command compiler:处理命令(具体不清楚,可能类似X命令吧,直接调用Windows Dos命令)




图里面还有一个word scanner没介绍到,就是把input stack里的程序,逐行读取每一行的token,然后根据规则把这些token放到相应的编译器compiler里。



介绍完了图里的内容,然后开始看看SAS如何编译没有宏的数据步程序:

Word scanner读取Input Stack里的第一行程序,这里可以读到4个Name(data sales drop lastyr)和4个Special((=);)。Word scanner读到的第一个非空token是Data,SAS就知道这个一个数据步的起点,然后将这些token放到Data step compiler里。Word Scanner继续读取token,直到读到Run,SAS就知道这是这个数据步的终点。然后在data set compiler里对刚才读到的程序进行编译。

这里提一下,进入编译器的程序,SAS都会自动转换为大写,这也是为什么SAS对变量名不进行大小写区分的原因。



接下来介绍SAS宏编译:

首先介绍一下Symbol table,这是放宏变量的一个表,在sashelp.vmacro这张表里。当有新的宏变量时,就会记录在这张表中。

       当word scanner扫到%或&开头,且后面为非空字符时,word scanner就将扫到的input stack里的程序放到Macro compiler里。




如图所示,第一行 %let file=in1;这里,SAS宏编译器就将把file放入symbol table里,其宏变量为file,值为in1。只要宏编译器在处理宏,那么data step compiler将不会进行编译。当宏编译完成后,word scanner继续读取下一行的token。当读取以&开头且后面为非空字符(token)时,宏编译器就检查这个token是否在symbol table中,然后用symbol table里的值代替这个token。最后读到这个数据步的终点,进行编译。

  • 大小: 14.9 KB
  • 大小: 13.7 KB
分享到:
评论

相关推荐

    软件SAS宏编程

    当SAS系统编译程序文本时,两个定界符触发宏处理器。例如,&name的形式被称为宏变量引用,%name则指的是宏。文本替换由宏处理器在程序文本被编译和执行之前完成。宏语言元素可以触发文本替换,但它们只能用于文本...

    SAS Macro Language

    ### SAS Macro Language 知识点概述 #### 一、SAS Macro Language 介绍 - **定义**:SAS Macro Language 是一种嵌入式程序设计语言,用于自动化和扩展 SAS 软件的功能。 - **作用**:通过宏语言,用户可以创建可...

    Carpenter's Complete Guide to the SAS Macro Language

    《Carpenter's Complete Guide to the SAS Macro Language》是Art Carpenter在2016年出版的第三版指南,专门针对SAS宏语言提供全面的教程和参考。这本书由SAS Institute Inc.出版,包含了硬拷贝、EPUB、MOBI和PDF等...

    SAS.Publishing.SAS.Macro.Programming.Made.Easy.2nd.Edition.Mar.2007

    #### 二、SAS Macro 原理与应用 1. **基础概念**: - **宏定义**:宏是SAS程序中的一种特殊结构,可以用来创建可重用的代码段。 - **宏调用**:通过宏调用可以在SAS程序中执行宏定义中的代码。 - **宏变量**:...

    SAS_Macro_Programming_Made_Easy

    本书《SAS_Macro_Programming_Made_Easy》是关于SAS宏编程的入门指南,通过实例教学帮助读者理解SAS宏的使用方法和编程技巧。SAS宏(Macro)是SAS系统中用于提高编程效率和代码复用性的强大工具。通过宏,可以将重复...

    SAS Macro Make it easy

    SAS宏设施是SAS系统中的一个功能,它允许程序员使用宏变量(Macro Variables)、宏程序(Macro Programs)和宏语言(Macro Language)来编写可重用的代码,这些代码可以自动执行复杂的SAS程序任务。SAS宏设施的主要...

    macro-SVD.zip_SAS macro SVD_SVD_SVD SAS macro_SVD SAS_sas s

    SAS作为一种强大的统计分析软件,提供了实现SVD的宏(Macro),使得用户能够方便地在SAS环境中进行奇异值分解。在本资料“macro-SVD.zip”中,包含了一个名为“macro SVD.docx”的文档,它很可能是详细介绍了如何在...

    SAS.9.2.Macro.Language.Reference.rar_SAS Macro Language _macro l

    这份名为"SAS.9.2.Macro.Language.Reference"的压缩包文件,显然是SAS 9.2宏语言的官方参考指南,可以帮助用户深入理解和掌握这一重要工具。 首先,我们要了解什么是SAS宏。宏是预处理指令,它们在SAS程序执行之前...

    learning some SAS macro

    - 宏定义以`%macro`语句开始,以`%mend`语句结束。 - 调用宏时传入相应的参数。 - **宏参数** - 宏可以接受位置参数和关键字参数。 - 位置参数根据位置顺序传递值。 - 关键字参数指定具体的参数名。 综上所述...

    SAS宏编程教程(英文)

    - **宏编译与自动调用**:宏的编译和自动调用机制可以进一步提升程序的性能。Michele在书中讨论了这两种机制的优缺点,并给出了实用的示例。 #### 实践应用 SAS宏编程在实际项目中有着广泛的应用,如数据清洗、...

    SAS/MACRO

    SAS/MACRO是SAS系统中的一个强大工具,它允许用户通过自定义宏语言来创建可重用的代码块,提高编程效率和代码的可维护性。MACRO语言不仅用于简单的数据处理,还能实现复杂的统计分析流程的自动化,使得在大数据环境...

    SYNTEC新代系统MACRO宏程序手册.pdf

    手册强调了MACRO宏程序的扩展,比如如何使用新增的MACROXML资料应用、设置MACRO警报和提示、自定义警报触发语法以及自定义提示方式等。这些内容都是在详细描述如何增强数控系统的功能性和用户的交互体验。 6. 操作...

    sas宏语言基础

    - 局部宏变量仅在其定义的宏体内有效,如`%macro test; %let localvar=12345; %put localvar=&&localvar; %mend test;` - 全局宏变量在整个SAS会话中都有效,如`%let globalvar=2005;` ##### 3. 宏变量的使用 宏...

    sas 宏编程详解---SAS.9.1.Macro.Language.Reference.Apr.2004

    SAS 9.1 宏语言参考手册(SAS.9.1.Macro.Language.Reference.Apr.2004)是一本详细介绍SAS宏编程技术的专业书籍。SAS作为一种广泛应用于数据分析领域的软件,其宏编程功能为用户提供了强大的定制化能力。本书旨在...

    SAS_base_macro

    Macro语言是SAS的基础部分,对于深入理解和运用SAS系统至关重要。 "base_macro_6997.pdf" 这个文件很可能包含了一份关于SAS Base Macro的详细教程或参考指南。以下是对SAS Base Macro的一些关键知识点的详细说明: ...

    SAS COURSE NOTES 吐血收集(含:programming1-3、statistic1-2,SQL、macro共8个课程)

    接着是"statistic1-2",这部分课程深入介绍了统计学原理及其在SAS中的应用。课程涵盖了一元和多元统计分析,如t检验、ANOVA、卡方检验、回归分析、逻辑回归等。学习者将学会如何使用SAS的PROC GLM、PROC LOGISTIC等...

    sas_sas_SAS宏程序开发_

    在SAS编程环境中,宏程序(Macro)是一种强大的工具,用于实现代码的重用和自动化。SAS宏程序开发能够显著提高工作效率,特别是在处理大量数据和复杂分析时。本资料包着重介绍了如何利用SAS宏语言来编写宏程序,以及...

    SAS® 9.1 Macro Language.pdf

    ##### 2.1 SAS程序与宏处理概述(Introduction to SAS Programs and Macro Processing) 这一章深入探讨了SAS程序与宏处理之间的关系,包括SAS如何处理没有宏活动的简单程序,以及当引入宏功能后,SAS的处理流程会...

Global site tag (gtag.js) - Google Analytics