我在宏函数中有这个简单的PROC HTTP程序。
我希望& trainname和& date不被解析。但必须解决&数据和& treinnumer。
我尝试过使用%nrstr和%str宏功能,但没有任何效果。
%macro treinnummers(treinnummer,datum);
filename uit "/home/myfolder/sasuser.v94/test.html";
proc http url="http://www.belgianrail.be/jpm/sncb-nmbs-routeplanner/trainsearch.exe/nox?ld=abcde%nrstr(&trainname)=&treinnummer.%nrstr(&date)=&datum."out=uit;
run;
%mend;
答案 0 :(得分:2)
有很多方法!我发现可靠的一种方法是使用数据步骤创建您的URL,然后通过%superq()
调用,如下所示:
%macro treinnummers(treinnummer,datum);
filename uit "/home/myfolder/sasuser.v94/test.html";
data _null_;
format html $2048.;
html=cats("http://www.belgianrail.be"
,"/jpm/sncb-nmbs-routeplanner/trainsearch.exe/nox?"
,'ld=abcde'
,'&trainname=',"&treinnummer"
,'&date=',"&datum");
call symputx('html',html,'l');
run;
proc http url="%superq(html)" out=uit; run;
%mend;
注意'技巧'以上是将宏变量放在单引号中以防止解决。有关详细说明,请参阅here。
答案 1 :(得分:0)
我找到了解决问题的方法:
data _NULL_;
format html $2048.;
html=cats("http://www.belgianrail.be"
,"/jpm/sncb-nmbs-routeplanner/trainsearch.exe/nox?"
,'ld=abcde'
,'&trainname=',"&treinnummer"
,'&date=',"&datum");
call symputx('html',html,'G');
run;
proc http url=%NRSTR("&html.") out=uit; run;