我写了SAS代码,我需要根据参数值传递值.SAS代码运行并获得所需的输出
%MACRO FTIC(Student_Entry=, Admission_Year=,YEAR_TRACK=, TERM=, College );
...
...
...
%MEND FTIC;
%FTIC(Student_Entry= A, Admission_Year=2012 ,YEAR_TRACK=1, TERM=Summer/FALL )
以下是每个参数的值: Student_Entry = A,B,C,D
Admission_year = 2012, 2013, 2014, 2015, 2016
Year_Track = 1, 2,3,4,5
Term= Summer/Fall, Spring
我正在写下4 * 4 * 5 * 2行以上的行。实现我的结果。
%FTIC(Student_Entry= A, Admission_Year=2012 ,YEAR_TRACK=1, TERM=Summer/FALL )
你能告诉我如何更有效地写这个。
答案 0 :(得分:0)
行。看起来你想要一些方法来自动循环这些参数,并为每个参数组合调用%FTIC宏。
为每个参数的可能值创建列表。
%let stud_list = A B C D;
%let Ad_list = 2012 2013 2014 2015 2016;
%let YrT_list = 1 2 3 4 5;
%let term_list = Summer/Fall Spring;
计算每个列表中的项目。
%let stud_cnt = %sysfunc(countw(&stud_list),%str( ));
%let Ad_cnt = %sysfunc(countw(&Ad_list),%str( ));
%let YrT_cnt = %sysfunc(countw(&YrT_list),%str( ));
%let term_cnt = %sysfunc(countw(&term_list),%str( ));
在虚拟宏中使用%do循环重复调用%FTIC宏。
%macro dummy;
%do i = 1 %to &stud_cnt;
%do ii = 1 %to &ad_cnt;
%do iii = 1 %to &yrt_cnt;
%do iiii = 1 %to &term_cnt;
%FTIC(student_entry = %scan(&stud_list,&i,%str( )),
Admission_year = %scan(&Ad_list,&ii,%str( )),
Year_track = %scan(&YrT_list,&iii,%str( )),
Term = %scan(&term_list,&iiii,%str( ))
);
%end;
%end;
%end;
%end;
%mend dummy;
%dummy;