最近項目沒有那么緊張了,所以準備了解一些讓日常工作更為便捷的一些函數或是macro.博采眾家之長撤逢,在此僅做記錄。有任何引用我都會在末尾附上原網址粮坞。尊重版權人人有責蚊荣。
*COMPBL
去除字符串中多余的空格,也就是將連續(xù)的多個空格轉化為1個空格莫杈。
如:
data test;
string='ab? cxy? z??????? pq?? '
;
data a;
set test;
x=compbl(string);
run;
輸出為:ab cxy z pq互例,多個空格變成一個空格。
與compress的區(qū)別:
compress(string)輸出為abcxyzpq筝闹,去掉所有的空格媳叨,當然還能去掉指定的字符;
而compbl是將多個空格變成一個关顷,對于單個空格沒有影響糊秆。
*DEQUOTE
去除字符串中的配對引號,且該字符串是以該引號開始的议双,并且去掉與之配對的后引號之后的全部內容痘番。
啰嗦了,舉個例子:y=dequote(x);
"我是'我'的"我""??? 我是'我'的
"你"是你的'你'????? 你
他是他的"他"??????? 他是他的"他"
她們還是她們??????? 她們還是她們
'它是'它'的它'??????? 它是
Source from:SAS之COMPBL平痰、DEQUOTE函數 - Sunny Qiang - 博客園 (cnblogs.com)
宏%PUT
此宏語句將文本或宏變量信息寫入SAS日志汞舱。 在下面的例子中,變量“today”的值被寫入程序日志宗雇。
data _null_;
CALL SYMPUT ('today',
TRIM(PUT("&sysdate"d,worddate22.)));
run;
%put &today;
宏%RETURN
當某個條件的計算結果為真時昂芜,執(zhí)行該宏將導致當前執(zhí)行的宏正常終止。 在下面的示例中赔蒲,當變量“val”的值變?yōu)?0時泌神,宏終止其它連接良漱。
%macro check_condition(val);
? %if &val = 10 %then %return;
? ? data p;
? ? ? x=34.2;
? ? run;?
%mend check_condition;?
%check_condition(11)? ;
宏%END
此宏定義包含一個%DO%WHILE循環(huán),根據需要以%END語句結束腻扇。 在下面的示例中债热,名為test的宏采用用戶輸入,并使用此輸入值運行DO循環(huán)幼苛。 DO循環(huán)的結束通過%end語句實現窒篱,而宏的結束通過%mend語句實現。
%macro test(finish);
? %let i=1;
? %do %while (&i <&finish);
? ? ? %put the value of i is &i;
? ? ? %let i=%eval(&i+1);
? %end;
%mend test;
%test(5)
Source from:SAS宏_w3cschool