宏错误是如何产生的,如何避免并更正
Macro Bugs - How to Create, Avoid and Destroy Them
<SPAN style="FONT-FAMILY: 宋体; COLOR: #555555" p 好的宏的开发比一般的简单的SAS代码开发要困难得多,以下原因使得更加难以对宏进行测试:
宏所生成的不同版本的SAS代码可能会出现错误
程序的错误可能是编写的代码引起的,也可能是宏生成的代码引起的
SAS将宏代码作为文本进行处理,因为我们更难以通过SAS系统对宏进行测试
对于不同的程序,你想要生成的SAS代码也不尽相同
SAS Macro Debug宏测试的一般原理是:首先要了解SAS宏的运行机理,并且如果出现错误,一定要想到是你的代码有问题。更具体地说:首先要看到哪里报了错,然后定位到这个错误,然后理解并修正这个错误。
除了SAS代码的一般错误外,SAS Macro宏变量在传递参数的过程中,也可能会产生错误。另外,对于SAS Macro宏编程来说,程序员要处理两种语言,SAS语言和宏语言,这两种语言的编译和执行的时间不一样,如果理解得不透彻也容易产生错误。
1 时间问题
SAS宏代码执行时有四个时间:
宏编译时间:%MACRO和%MEND之间的代码被读取
宏执行时间:宏编译后生成SAS代码
SAS编译时间:生成的SAS代码进行编译
SAS执行时间:编译后的SAS代码的执行
2 下面来讲一些时间问题的经典案例:
由于字数过多,有附件。第一次发帖,支持支持~