-
Notifications
You must be signed in to change notification settings - Fork 22
/
num_tokens.sas
29 lines (26 loc) · 1.01 KB
/
num_tokens.sas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*%num_tokens
Purpose: Count the number of “tokens” (variables) in a list.
Required arguments:
words – the variable list
Optional arguments:
delim – the character(s) separating each variable in the &words list [default: space]
Example:
%put %num_tokens(a b c d e);
%put %num_tokens(a-b-c-d-e, delim=-);
Credit:
source code from Robert J. Morris, Text Utility Macros for Manipulating Lists of Variable Names
(SUGI 30, 2005) www2.sas.com/proceedings/sugi30/029-30.pdf
authored by Gabriel Cano;
*/
%macro num_tokens(words, delim=%str( ));
%local counter;
%* Loop through the words list, incrementing a counter for each word found. ;
%let counter = 1;
%do %while (%length(%scan(&words, &counter, &delim)) > 0);
%let counter = %eval(&counter + 1);
%end;
%* Our loop above pushes the counter past the number of words by 1. ;
%let counter = %eval(&counter - 1);
%* Output the count of the number of words. ;
&counter
%mend num_tokens;