mirror of
https://github.com/sasjs/core.git
synced 2026-01-15 12:30:06 +00:00
chore: updating all.sas
This commit is contained in:
54
all.sas
54
all.sas
@@ -43,6 +43,60 @@ options noquotelenmax;
|
|||||||
%mend mf_abort;
|
%mend mf_abort;
|
||||||
|
|
||||||
/** @endcond *//**
|
/** @endcond *//**
|
||||||
|
@file
|
||||||
|
@brief de-duplicates a macro string
|
||||||
|
@details Removes all duplicates from a string of words. A delimeter can be
|
||||||
|
chosen. Is inspired heavily by this excellent [macro](
|
||||||
|
https://github.com/scottbass/SAS/blob/master/Macro/dedup_mstring.sas) from
|
||||||
|
[Scott Base](https://www.linkedin.com/in/scottbass). Case sensitive.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
%let str=One two one two and through and through;
|
||||||
|
%put %mf_dedup(&str);
|
||||||
|
%put %mf_dedup(&str,outdlm=%str(,));
|
||||||
|
|
||||||
|
Which returns:
|
||||||
|
|
||||||
|
> One two one and through
|
||||||
|
> One,two,one,and,through
|
||||||
|
|
||||||
|
@param [in] str String to be deduplicated
|
||||||
|
@param [in] indlm= ( ) Delimeter of the input string
|
||||||
|
@param [out] outdlm= ( ) Delimiter of the output string
|
||||||
|
|
||||||
|
<h4> Related Macros </h4>
|
||||||
|
@li mf_trimstr.sas
|
||||||
|
@li mf_wordsinstr1butnotstr2.sas
|
||||||
|
|
||||||
|
@version 9.2
|
||||||
|
@author Allan Bowe
|
||||||
|
**/
|
||||||
|
|
||||||
|
%macro mf_dedup(str
|
||||||
|
,indlm=%str( )
|
||||||
|
,outdlm=%str( )
|
||||||
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
|
%local num word i pos out;
|
||||||
|
|
||||||
|
%* loop over each token, searching the target for that token ;
|
||||||
|
%let num=%sysfunc(countc(%superq(str),%str(&indlm)));
|
||||||
|
%do i=1 %to %eval(&num+1);
|
||||||
|
%let word=%scan(%superq(str),&i,%str(&indlm));
|
||||||
|
%let pos=%sysfunc(indexw(&out,&word,%str(&outdlm)));
|
||||||
|
%if (&pos eq 0) %then %do;
|
||||||
|
%if (&i gt 1) %then %let out=&out%str(&outdlm);
|
||||||
|
%let out=&out&word;
|
||||||
|
%end;
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%unquote(&out)
|
||||||
|
|
||||||
|
%mend mf_dedup;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
@file mf_existds.sas
|
@file mf_existds.sas
|
||||||
@brief Checks whether a dataset OR a view exists.
|
@brief Checks whether a dataset OR a view exists.
|
||||||
@details Can be used in open code, eg as follows:
|
@details Can be used in open code, eg as follows:
|
||||||
|
|||||||
Reference in New Issue
Block a user