7 }! n. ?- ?& V%if &CDS_DataSetNum EQ 0 %then %let &FlagDataSetExists=0;: a% Z9 ^5 ~% f2 T$ W+ _# m
%else %if &CDS_DataSetNum EQ 1 %then %let &FlagDataSetExists=1;6 W: i6 P: u7 Z0 t! S: m
%else %do;8 o( d4 m1 @- j9 o/ u8 |$ b
%put ERROR: There could be more than one DataSets with the same name appointed in different libraries, please reassign a LibName first.;0 m3 o: t& H& t. y# b' k
%goto exit;1 E6 }* m# Q7 Y3 r
%end; ( r4 _! W3 C* f" h%end;9 S% z: ^/ b% l5 h/ [
%end;4 a8 F) Q( F. b& |; z! ^9 Z% ]
/* 情形二:设定多个数据集,此时若省略逻辑库名,则默认为WORK逻辑库 */* r, t5 P9 |' e8 g4 L4 k" h4 Y
%else %do; Z" O/ h) k, J3 m4 c( e t+ f%SeparateString(InputString=&DataSet,OutputString=CDS_DateSet);& }5 U0 q( R) c& a% ^0 Z: S
9 \) e7 g$ g+ A3 V
%do CDS_i=1 %to &CDS_DateSet_Num;5 i \% ?+ P& {
/* 检查DataSet的合法性 */: o( o$ o( z' c( `! `! c/ ]
%if %SYSFUNC(FIND(&&CDS_DateSet_Var&CDS_i,.)) NE 0 %then %do;" |+ v+ p3 p2 @7 ]5 L7 u
%let CDS_LibName_&CDS_i.=%UPCASE(%SCAN(&&CDS_DateSet_Var&CDS_i,1,.));# x+ T% @8 j: h3 ^; ~- p
%let CDS_DataSet_&CDS_i=%UPCASE(%SCAN(&&CDS_DateSet_Var&CDS_i,2,.)); " P7 K9 ]0 ?7 l1 d& w%end; . M3 w5 s- t" ~' \& y( Y8 J%else %do; ! o& B9 C4 n* r%let CDS_LibName_&CDS_i.=WORK; 6 r: `( h# e* f5 C# Y%let CDS_DataSet_&CDS_i.=%UPCASE(&&CDS_DateSet_Var&CDS_i); * A, P' Y" w& f+ n% a%end;* K/ U" R+ h% O+ P8 \8 S6 i0 a1 w
( L0 n7 \; t: F5 ], |- r; ^
%let CDS_FlagDataSetExists_&CDS_i.=%SYSFUNC(EXIST(&&CDS_LibName_&CDS_i...&&CDS_DataSet_&CDS_i.));& G; \1 [7 ^* N, f; r5 d* q8 n
%end;& u/ L( z* ] M3 A4 ?
' W. u1 Q% B4 _: P
%let &FlagDataSetExists=&&CDS_FlagDataSetExists_1; 6 s" H8 M) g. d+ Z w4 q9 ~, N 4 V7 D3 N8 w) v" b0 A6 T%do CDS_j=2 %to &CDS_DateSet_Num; ! H7 @6 ~5 \- j* Y( ?( |%let &FlagDataSetExists=&&&FlagDataSetExists.&&CDS_FlagDataSetExists_&CDS_j; " a# F2 ^( h5 e( T3 G%end; ; Z, M) e( i* W5 j%end; " C f4 [" V" b6 V. N3 m9 p0 Z$ z, V! f2 j. G, O6 e
/* 如果想要输出结果,请取消下面的注释 */ 1 z9 k/ ~) c% G5 E! l0 A1 n/*%put &&&FlagDataSetExists;*/ 6 `' ?. A9 P1 W' U0 U7 w1 H2 z$ g. t# P Z5 M
/* 删除不必要的表格 */. U8 N( S0 Y6 X3 ^# _& `' _
proc datasets lib=work nolist; ' H$ V1 H# K) x4 U, U* V1 u, ~delete CDS_temp; , q1 S4 A- [* n4 |quit;! |/ ], \$ H! u& Q. \7 x# `
6 j# Y) M" L9 S$ b6 s# f- Y* L5 l b4 j9 M' V1 G% r, v8 f
%exit: ) w. D6 V2 Q4 Z: q, \+ q5 e: }4 {0 l' A4 L%mend; * t( y& T4 S$ }4 E- O: a: }5 }6 L& z. t) v
" A t1 e1 ?7 h2 r/ ]%macro Demo(); 2 ^4 U- }+ b. F b {# r 9 ]: P) d- ?# @1 {: X `%let DataSet=Gfl_fundcodelist_mgrname Gfl_managersoffund; /* 数据集名称,可设为多个,用空格分隔 */ 7 B: w( w' i4 ]5 @+ g. H%let FlagDataSetExists=FlagDataSetExists1; /* 宏变量的名称,注意不能与参数名称相同*/ ' a" R) {2 i/ r+ k/ T%ChkDataSet(&DataSet,&FlagDataSetExists);' @9 ? `6 p7 Y6 I' d% C' \! H v
- k5 j- V: c4 n1 \; k" ~+ S [
%put &FlagDataSetExists1;$ Z: O. c' l' D' ~7 ?/ A' U