Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用

  • 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting);

  • K开头的代表是专门针对DBCS(Double Byte Character Set)语言设计的,即适用于类似中文的双字节存储语言

为什么INDEX函数返回的结果是8呢?

因为像INDEX、FIND等这类搜索函数是通过单字节编码进行查找的,有两个过程:

  1. 首先将所有的字符串转换成编码,每个字节对应一个编码;

  2. 然后按照编码进行搜索;

1个汉字占2个字节,就会对应2个编码。在某些特殊的情况下,就会出现这种情况:某2个汉字共4个编码,第1个汉字的第2个编码与第2个汉字的第1个编码凑成的编码,正好是要搜索的汉字的编码。虽然该汉字没有在查找的文本中出现,但是其编码出现了。然后就会返回搜索到的编码位置:

三个有关Macro的System Option,在日志中输出更加详细的信息:

  • MPRINT:在日志中输出Macro生成的SAS代码;

  • MLOGIC:在日志中输出Macro的执行逻辑;

  • MSYMBOLGEN:在日志中输出Macro Variables的解析结果;

Delete User-Defined Macro

跟Macro Variable一样,如果不想再用某个Macro Program,也可以将其删除掉。语法非常简单:

%SYSMACDELETE macro_name;

SAS学习笔记42 宏程序的更多相关文章

  1. SAS学习笔记37 宏程序中parmbuff选项

    该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...

  2. SAS学习笔记46 宏变量的可使用范围

    全局宏变量 在宏程序内部,除了使用%GLOBAL语句创建.在某些情况下,还可以直接使用DATA步中的CALL SYMPUT创建. 在一个宏程序中,在包含CALL SYMPUT的DATA步程序之前,如果 ...

  3. SAS学习笔记44 宏函数

    类SAS函数的宏函数 该部分函数共5个,其无论是名字.语法.功能都与SAS函数类似,只是在函数名前多了一个“%”.这5个宏函数分别是: %INDEX %LENGTH %SCAN %SUBSTR %UP ...

  4. SAS学习笔记43 宏语句

    流程控制 %GOTO语句与%label语句是结合起来使用的.首先通过%label语句定义一个位置,使用%GOTO语句可直接将程序的执行位置跳到该label标记位置,达到控制程序执行顺序的目的.可实现与 ...

  5. SAS学习笔记41 宏变量存储及间接引用

    Macro Variables存储在“Symbol Table”中.它是由Macro Processor在SAS启动时自动创建并维护的.SAS提供了一张视图来供我们查看Symbol Table中的内容 ...

  6. SAS学习笔记10 宏变量

    一个宏变量存放的值保持不变直到被修改(全局变量) 引用时,变量名前加上"&" 宏变量在引用时放在双引号之间会被解读(单引号不会被解读) 用户定义的宏变量,有三种方式: %l ...

  7. SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...

  8. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  9. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

随机推荐

  1. 数据结构Java版之排序算法(二)

    排序按时间复杂度和空间复杂度可分为 低级排序 和 高级排序 算法两种.下面将对排序算法进行讲解,以及样例的展示. 低级排序:冒泡排序.选择排序.插入排序. 冒泡排序: 核心思想,小的数往前移.假设最小 ...

  2. c++比例-libcurl多线程并发时的core【转载】

    转自: https://www.cnblogs.com/edgeyang/articles/3722035.html 浅析libcurl多线程安全问题 背景:使用多线程libcurl发送请求,在未设置 ...

  3. mysql 触发器语法详解

    1.创建Mysql触发器: 语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW BE ...

  4. insmod内核模块时提示"unknown symbol ..."如何处理?

    答: 是当前内核模块所依赖的模块没有被加载导致的,加载对应的依赖模块即可

  5. jumperserver的简单使用

      用户管理:这里的用户说的是登录跳板机的账号,通过这个账号可以登录跳板机 资产管理: 资产管理/管理用户:有权限对最终的目标服务器进行管理的用户,可以单独创建,也可以直接使用root用户 资产管理/ ...

  6. Error setting null for parameter #10 with JdbcType

    转: Error setting null for parameter #10 with JdbcType OTHER . 2014年02月23日 11:00:33 厚积 阅读数 58535   my ...

  7. ABAP Memory ID

    转自:https://blog.csdn.net/lyq123333321/article/details/52659114 (一)          Difference Between SAP a ...

  8. esxi 配置 交换主机 虚拟机交换机 linux centos 配置双网卡

    最近手里的项目网络环境是 192.168.199.1 直接到防火墙 192.168.1.x 是内网网段 走到 防火墙下的一个三层交换机 现在需要将内网的三台服务器端口映射出去,需要到防火墙去做映射,防 ...

  9. 第四章 INI配置——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2020820 第四章 INI配置——<跟我学Shiro> 博客分类: 跟我学Shir ...

  10. iOS面试经历(个人)

    1.OC的runtime运行机制1> runtime,运行时机制,它是一套C语言库2> 实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里面 ...