假设我已经定义了宏功能,并且出于某种原因(例如错误),我删除了代码。我仍然有宏。
如何检索用于定义代码的代码?
要定义宏,我刚执行:
%macro(param1,param2);
my code
%mend;
答案 0 :(得分:2)
如果您使用指定的source
选项定义了宏,并且在库中可以使用以下选项检索它:
%copy MACRO_NAME / source;
官方SAS答案,请参阅以下原始链接:
无法从存储的已编译宏中检索原始源代码。您必须始终将原始代码保存在另一个文件中,以便以后修改。
从SAS® 9.1
开始,SOURCE
语句有一个新的%MACRO
选项。与现有STORE
选项一起使用时,SOURCE
选项组合并存储已编译宏的源。
编译后的宏代码成为永久SAS
数据库中SAS
目录中的条目。已编译的宏和源代码一起存储在同一SASMACR
目录中。 SOURCE
选项要求设置STORE
选项和SAS
选项MSTORED
。您可以使用SAS
选项SASMSTORE=
来标识永久SAS
数据库。只有在SAS
选项MSTORED
生效时,您才能存储宏或调用存储的已编译宏。
注意:SOURCE
选项保存的源代码以%MACRO
关键字开头,以%MEND
语句后面的分号结尾。既然您已经有了使用SOURCE
选项存储源代码的方法,那么您还需要一种方法来检索此信息。答案是新的%COPY
语句,它从SAS
宏库中复制指定的项目。
例如:
libname test 'c:\';
options mstored sasmstore=test;
%macro test(arg) / store source des="test of the source option";
%put arg = &arg;
data one;
x=1;
run;
%mend test;
%copy test / source;
答案 1 :(得分:1)
如果你没有SOURCE
选项并且你的宏是相对基本的,你可以尝试使用MPRINT和SYMBOLGEN来获取代码的日志,但如果你有条件逻辑,那么很难重新创建代码肯定。
options mprint symbolgen;
%my_macro(param1, param2);