• 登录
Skip to content

一起大数据-技术文章心得

一起大数据网由数据爱好者发起并维护,专注数据分析、挖掘、大数据相关领域的技术分享、交流。不定期组织爱好者聚会,期待通过跨行业的交流和碰撞,更好的推进各领域数据的价值落地。

Menu
  • 首页
  • 大数据案例
  • 数据&电子书
  • 视频
    • Excel视频
    • VBA视频
    • Mysql视频
    • 统计学视频
    • SPSS视频
    • R视频
    • SAS视频
    • Python视频
    • 数据挖掘视频
    • 龙星计划-数据挖掘
    • 大数据视频
    • Machine Learning with Python
  • 理论
    • 统计学
    • 数据分析
    • 机器学习
    • 大数据
  • 软件
    • Excel
    • Modeler
    • Python
    • R
    • SAS
    • SPSS
    • SQL
    • PostgreSQL
    • KNIME
  • 技术教程
    • SQL教程
    • SPSS简明教程
    • SAS教程
    • The Little SAS Book
    • SAS EG教程
    • R语言教程
    • Python3教程
    • IT 技术速查手册
    • Data Mining With Python and R
    • SAS Enterprise Miner
  • 问答社区
  • 我要提问
Menu
SAS中宏的加密和调用

SAS中宏的加密和调用

Posted on 2017年9月6日

某些时候我们可能需要隐藏SAS的源代码,这时我们可以把需要隐藏的代码放到宏里,并对宏进行加密。具体方法根据网上的一些文章介绍,进行如下测试:

第一步:生成加密的宏

/*加密宏*/
LIBNAME test ‘c:\test’;

OPTIONS MSTORED SASMSTORE=test;

%macro foobar1(arg) /store des=”This macro if for test”
/*source*/;
%put arg = &arg;

%mend;

%macro foobar2(arg) /store des=”This macro if for test”
/*source*/;
%put arg = &arg;

%mend;

日志如下:

生成的两个宏保存在c:\test目录下的sasmacr.sas7bcat文件中,经测试,可以修改或者增加宏。

第二步:调用已经加密的宏
LIBNAME test ‘c:\test’;

OPTIONS MSTORED SASMSTORE=test;
/*如果生成宏的时候有source选项,可以用以下命令打印出宏的源代码*/

/*%copy foobar1/source;*/
%foobar1(“this is test1”);
%foobar2(“this is test2”);

日志如下:

加密的宏运行没有问题。这里需要注意,如果需要在加密的宏中保存源代码,可以加上source选项,但是这个选项也使得加密没有意义了,因为可以使用%copy直接把源代码打印出来。

%copy foobar1/source;

示例中我没有使用source选项,所以%copy命令无法正常使用。

以上就完成了加密和调用的测试,但是这还没有完,这样的加密一样是没用的,因为宏选项中MPRINT可以让宏运行前先打印宏的代码,请看下面的测试结果。

代码:
LIBNAME test ‘c:\test’;
OPTIONS MSTORED SASMSTORE=test;

%macro foobar1 /store des=”This macro if for print”
/*source*/;
proc print data=sashelp.class;
where sex=”F”;
run;
%mend;

以上代码修改了之前定义的宏foobar1 。

调用代码如下,加入了OPTIONS MPRINT;语句。

LIBNAME test ‘c:\test’;

OPTIONS MSTORED SASMSTORE=test;
OPTIONS MPRINT;

%foobar1;

结果如下:

 

可见,加密同样无效,这时我们需要在宏内设定选项覆盖全局选项MPRINT(每个宏都需要设置),具体修改如下:

LIBNAME test ‘c:\test’;
OPTIONS MSTORED SASMSTORE=test;

%macro foobar1 /store des=”This macro if for print”
/*source*/;

options nomprint nosource;
proc print data=sashelp.class;
where sex=”F”;
run;
%mend;

这样宏的加密就完成了,当然如果您发现还有其他能访问宏源代码的方式,欢迎指正。

 

本文为一起大数据首发,转载请注明:“一起大数据 ”及 本文链接,谢谢支持。

发表评论 取消回复

要发表评论,您必须先登录。

推荐访问


数据分析交流:数据分析交流
Excel学习: Excel学习交流
Python交流:一起学习Python(数据分
SQL交流:一起学习SQL(数据分析
微博:一起大数据

最新提问

  • SQL Chat
  • sql server 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了”阻止保存要求重新创建表的更改”选项。
  • 偏相关分析
  • 复相关系数
  • 【R语言】熵权法确定权重
  • 如何破解Excel VBA密码
  • 解决 vba 报错:要在64位系统上使用,请检查并更新Declare 语句
  • 基于 HuggingFace Transformer 的统一综合自然语言处理库
  • sqlserver分区表索引
  • Navicat连接数据库后不显示库、表、数据

文章标签

ARIMA CBC Excel GBDT KNN Modeler Mysql pandas PostgreSQL python python数据可视化 R SAS sklearn SPSS SQL SVM Tableau TensorFlow VBA 主成分分析 关联规则 决策树 协同过滤 可视化 因子分析 大数据 大数据分析 推荐系统 数据分析 数据可视化 数据挖掘 数据透视表 文本挖掘 时间序列 机器学习 深度学习 神经网络 结构方程 统计学 联合分析 聚类 聚类分析 逻辑回归 随机森林
©2023 一起大数据-技术文章心得 | Design: Newspaperly WordPress Theme