在proc http SAS中解析&符号

时间:2016-10-18 15:50:27

标签: sas

我在宏函数中有这个简单的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;

2 个答案:

答案 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;