Просто используйте для этого функцию% SCAN ().Если данные содержат разделитель, то значения должны быть в кавычках.
%let WHERE_P=" ATF" " TRUST";
%let word1 = %scan(&where_p,1,%str( ),q);
Таким образом, ваш цикл должен выглядеть следующим образом:
%IF %LENGTH(&WHERE_P) %THEN %DO I =1 %TO %SYSFUNC(COUNTW(&WHERE_P,%str( ),q));
B_&I=%SCAN(&where_p,&I,%str( ),q);
%end;
...
%ab(WHERE_P=" ATF" " TRUST");`
Или вы можете использовать другой разделитель, который НЕ появляется в данных.Если вы хотите перейти в начальные пробелы без кавычек, вам нужно использовать макрос кавычки.
%IF %LENGTH(&WHERE_P) %THEN %DO I =1 %TO %SYSFUNC(COUNTW(&WHERE_P,|));
B_&I=%sysfunc(quote(%qSCAN(&where_p,&I,|)));
%end;
...
%ab(WHERE_P=%str( ATF| TRUST));