я учусь SAS и писать этот макрос:SAS макросы: Странное поведение котировок
%macro firstMacro(mvLO, OLO);
%local Count;
%local Wordy;
%local Resty;
%let Resty = '';
%let Count = %sysfunc(count(&OLO, %str()));
%let Wordy = %sysfunc(scan(&OLO, 1 ,%str()));
%let Wordy = "&Wordy";
%let Resty = &Wordy;
%put &Resty;
/*strange behavior here*/
%DO I=2 %TO &Count+1;
%let Wordy = %sysfunc(scan(&OLO, &I ,%str()));
%let Wordy = "&Wordy";
%put Wordy is;
%put &Wordy;
%let Resty = %sysfunc(cats(&Resty, %str(,), &Wordy));
%put &Resty;
%END;
%put FINAL OUT;
%put &Resty;
%mend firstMacro;
и назвав его:
%firstMacro(mvLO=WORK, OLO=field_1 field_2 field_3);
и увидеть этот вывод:
FINAL OUT
"field_1""field_2","field_3
поэтому, я спрашиваю SAS: , почему вы едите запятую (,
) между field_1
и field_2
?
Можете ли вы сказать, что вы» re пытается сделать с этим макросом? – sasfrog
да, я пытаюсь сделать это: '" field_1 "," field_2 "," field_3 "'. После этого макроса я могу использовать эту строку для IN-clause в Where in macro. Когда я пытаюсь использовать строку без кавычек 'field_1, field_2, field_3' в макросе в WHERE с IN, я получаю ошибку – gaussblurinc
Эта строка'% DO I = 2% TO & Count + 1; 'является виновником, я думаю. Попробуйте '% DO I = 2% TO% EVAL (& count + 1);' –