一直希望sas可以有个调试器,可以暂停程序,查看宏变量赋值情况,数据集运行情况,于是自制了一个简陋的debugger,用于暂停程序,查看宏变量赋值情况(work.macro),欢迎大神拍砖,欢迎改善(觉得好用,拿走,记得给好评,呵呵)
- %macro Sys_Debug(debuginfo=SAS Debuging);
- /*options nonotes nomlogic nomprint nosymbolgen nosource nosource2;*/
- /*宏变量信息保存在work.macro*/
- proc sql noprint;
- create table macro as select *from DICTIONARY.macros
- where scope not contains ("AUTOMATIC");
- quit;
- data _null_;
- window start
- #9 @26 "WELCOME TO THE SAS SYSTEM" color=black
- #12 @26 "&debuginfo"
- #15 @26 "Press ENTER to continue";
- display start;
- stop;
- run;
- %mend;
复制代码给个例子吧,这个debug主要用于调试宏程序
- %macro step1;
- %let a=1;
- data a;
- do i=1 to 3;
- output;
- end;
- run;
- /*查看work.macro,检查宏变量j的信息,数据集a的信息,打开了数据集一定要关闭了才能按enter继续运行程序*/
- %do j=1 %to 3;
- data a;
- do i=1 to &j;
- output;
- end;
- run;
- %sys_debug;
- %end;
- %mend;
- %macro step2;
- %let b=1;
- %mend;
- %macro main;
- %step1;
- %step2;
- %mend;
- %main;
复制代码