https://github.com/gloosace/sasGlue
开源sas宏代码库,包括各种功能常用的sas宏、数据结构等,方便sas用户编写功能更强大的sas代码,欢迎使用:)
以下是介绍,github浏览效果更好
· 什么是sasGlue?
sasGlue是一个sas宏代码库,提供各种基础性、通用性的sas宏来辅助用户进行sas编程,是一个sas宏层面的utility库
sasGlue的功能主要包括字符串处理、宏与宏变量管理、各种数据结构、数据集管理、IO控制、日志等
sasGlue的开发者包括:@gloosace @Lenny-cis @andizhu @lavafool
· 建议的阅读顺序
首次使用者建议按如下顺序阅读:本说明 -> 源代码中的Coding Details -> 源代码中您感兴趣的宏与示例
Coding Details中包括了对sasGlue常用编码习惯、内建数据结构(vars、assigns、obj、array等)的具体说明
源代码包括sasGlue.sas与test文件夹中的测试用例两部分,测试用例按宏类型分类
· 如何使用sasGlue?
sasGlue.sas文件包括所有说明与源代码,只要直接按F3编译后即可使用,也可以使用%include调用
所有的宏使用两级分类,具体内容请查看代码文件中的目录,使用文本搜索功能搜索相应的类名,即可跳转到相应章节
每个章节开头为总体性的介绍,每个宏的源代码前为该宏的具体介绍
每个宏都包含对应的测试用例,说明中的 @test_xxxx 表示对应的测试用例文件名,可以在test文件下查找
测试用例同时也是功能示例,对于较复杂的宏可先查看测试用例了解使用方法
· sasGlue对OS与SAS环境有哪些要求?
sasGlue在windows环境开发,如用于其他操作系统请注意重新测试
sasGlue绝大部分功能适应所有sas9.2以上版本,个别非核心功能可能有更高版本要求(如:sha256要求sas9.4)
sasGlue所有代码文件基于UTF-8编码
· 使用Glue的注意事项
请注意不要与您自己编写的宏发生宏名称冲突
请注意不要误操作sasGlue所使用的全局宏变量(以GLUE_开头)
请注意运行环境(如:options设置)可能与您的使用习惯不同
sasGlue中的一些宏会使用sas临时工作区(WORK)与当前文件夹(执行代码所在的文件夹)
在使用sasGlue中的日志功能前,请注意先完成相关SAS Logging Facility的配置,配置方法可参加测试用例
· 宏目录
Format Macros 格式宏
Format Definition
各种format/informat定义,所有format将被保存在WORK中并自动引用
Format Basic
format管理宏(不包括format的使用),如:format的检查、载入、复制、卸载、删除等
Format Ds
使用format进行数据操作的宏,如:对ds进行批量格式转换、改变ds附加的显示format等
FCMP Macros 自定义数据集函数宏
Fcmp Definition
各类数据步函数定义,所有fcmp func将被保存在WORK中并自动引用
Fcmp Macros
fcmp的管理宏,主要包括fcmp lib的导入、注销等
DEV Macros 开发工具宏
Log Macros
日志宏,基于SAS Logging Facility封装的日志
Timer Macros
计时器类宏
Debug Macros
测试宏,如:断言、临时变量的检查等
Options Macros
sas option管理宏,包括option的增加、删除等
Basic 基础宏
Math Macros
各类基本算术处理宏
Time Macros
日期与时间宏;
Random Macros
随机数、随机字符串生成宏;
String Macros 字符串宏
String Format
字符串格式识别,判定字符串是否具有某种格式,例如:数字、引号内、括号内等
String Conversion
字符串转换,对原字符串进行简单的加工修饰,例如:引用、去除空格、加引号等
String Operation
字符串一般操作宏,例如:搜索、拆入、替换等
String Hash
hash相关操作,例如md5,sha256等
String Binary
二进制字符串操作宏,例如:二进制AND、OR、XOR、转换为base32格式等
VARS Macros VARS宏
Vars Conversion
将vars转换为SAS中的不同场景适用的格式,例如:a b c转换为sql中的(a,b,c)
Vars Position
基于位置的操作,例如:var计数、提取指定位置var等
Vars Matching
基于内容的操作,例如:查询某个var是否存在、正则表达式识别等
Vars Set
将vars视为集合的操作,例如:集合add、sub、or等
Vars Batch Operation
重复对vars所有元素进行相同处理,例如:添加前后缀、padding等
Assigns macros
assigns类字符串处理宏,提供基于VARS实现的类似map的数据结构
I/O Macros I/O宏
File IO macros
文件操作宏,例如:包括路径检查、文件夹创建、文件检查、拷贝,xlsx/csv/ds格式相互转换等
Ods Macros
ODS控制与输出宏,提供分级分页的HTML/PDF输出,以及ODS输出参数的管理
MACRO 自定义宏与宏变量
Macro App Macros
自定义宏管理与编写辅助,例如:获取caller名称、参数检查工具等
Macro Variable Macros
宏变量管理宏,例如:宏变量存在性检查、获取指定scope的宏变量值、批量删除全局宏变量等
Plan Macros
macro批处理宏,根据数据集中记录的参数,批量调用宏进行计算,并将结果回写数据集
DATASET 数据集宏
Ds Basic Macros
ds基础操作宏,例如:获取lib名称、检查ds是否相同等、获取观测数量等
Ds Lib Macros
ds lib操作宏,例如:lib的载入、拷贝、注销等
Ds Operation Macros
以ds整体为操作对象的宏,例如:拷贝、移动、删除等
Ds Index Macros
ds索引操作宏,例如:索引创建、删除等
Ds Var Operation Macros
以ds中的变量为操作对象的宏,例如:获取变量名、获取变量类型、变量改名、设置变量长度等
Ds Obs Macros
以ds中多个观测为操作对象的宏,例如:obs去重、key计数等
Ds Cell Macros
以ds中的单元(即一个观测的一个变量值)为操作对象的宏,例如:cell写入与读取
Multi Ds Macros
以多个ds为操作对象的宏,例如:合并/merge、过滤/filter、连接/join等
OBJECT 对象宏
Obj Basic Macros
obj基本操作宏,包括obj的创建、复制、删除、成员增减等
Obj Member Macros
obj成员批量处理宏,对obj所有成员批量进行某一种操作,例如:清空、大写等
Obj Ds Macros
obj与数据集观测间互操作宏,例如:写入、读出
Obj Array Macros
以obj形式为基础实现的数组,例如:数组的创建、pop、push等