如何使用%scan来拆分包含点的字符串?

时间:2015-11-12 07:07:45

标签: sas sas-macro

我有一个SAS宏字符串定义为:

%let datasets =
lib.d1
lib.d2
lib.d3
;

字符串是一个宏变量。每个元素都是具有库名称的数据集。元素由换行符分隔。现在我想拆分元素并逐个迭代它们。我想使用%scan进行此操作,但我不知道如何设置%scan,因此它可以使用换行符的分隔符而不是默认分隔符列表中的点字符。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果您不想使用默认分隔符,则需要告诉%SCAN()要使用的分隔符。在这种情况下,您想要使用空格。请注意,不会有任何"换行符"在你的宏变量中,如果你这样创建它。

 %put %scan(&datasets,1,%str( ));

答案 1 :(得分:0)

虽然它们在代码中以换行符分隔,但它们仍被视为空格。

%LET DATASETS = 
lib.d1
lib.d2
lib.d3
;

%MACRO SPLIT(STRING) ;
  %DO I = 1 %TO %SYSFUNC(countw(&STRING,%STR( ))) ;
    %PUT %SYSFUNC(scan(&STRING,&I,%STR( ))) ;
  %END ;
%MEND ;

%SPLIT(&DATASETS) ;