데이터 단계에서 매크로 호출을 사용하고 싶습니다. 아래 매크로와 데이터 단계에서 호출하지만 이것은 작동하지 않습니다. 너희들은 일하게하는 방법을 제안 해 줄 수 있니?SAS 데이터 세트에서 SAS 매크로를 사용하는 방법
%macro xscan(string, delimiter, word_number);
%let len1=%length(&string); /*Computing the length of the string*/
%let len=%eval(&len1+1);
%let sub=%scan(&string,&word_number,"&delimiter");
%if &word_number ge 0 %then %do;
%let pos=%index(&string,&sub); /* Locate the position while reading left to right*/
%end;
%if &word_number lt 0 %then %do;
data _null_;
pos=find("&string","&sub",-&len);
call symput("pos",pos);
run;
%end;
%let strg=%substr(&string,&pos); /* Extract the substring*/
%put the string is &strg;
%mend;
data work.in_data;
length in_string $50;
in_string = “a bb ccc dddd bb eeeee”;
output;
in_string = “aa b cc aa dee”;
output;
run;
data work.out_data;
set work.in_data;
length sub_str $50;
start_word_num = -(_n_ +1);
sub_str = %xscan(in_string,’ ‘, start_word_num);
run;
proc print; run;
질문 ** 특정 문제를 설명하고 유효한 포함 그것을 재현하는 코드. 지침은 [SSCCE.org] (http://sscce.org/)를 참조하십시오. ** **해야 할 일을 설명하면 도움이 될 것입니다. – JDB
참으로. 단순히 코드를 버리고 작동하지 않는다고 말하는 것만으로 충분하지 않습니다. 이것은 충분히 일반화 된 문제로 제기 될 필요가있다. – Joe
데이터 스토어 (datastep)에서 사용할 함수를 만들기 위해 매크로를 사용하지 말고'PROC FCMP'를 살펴보고 싶다면. 또한, 당신이 질문 한 다른 질문에 대한 대답과 의견을 다시 읽으십시오. 당신이 말한 것을 완전히 이해하지 못했기 때문입니다. –