如何将潜在的宏变量作为文件名URL字符串的一部分进行掩码

时间:2014-03-01 19:33:37

标签: sas

我已经编写了以下文件名语句作为程序的一部分,以便在迭代步骤中动态下拉股票报价。现在这可以正常工作,除了我在日志中收到的三条警告消息:

1)& s =未解决 2)& f =未解决 3)警告:字符串长度超过252个字符,您可能有不平衡的引用

filename loader url“http://finance.yahoo.com/d/quotes.csv?s=&svar1.+&svar2.+&svar3.+&svar4.+&svar5.+&svar6.+&svar7.+&svar8.+&svar9.+&svar10.+ &安培; svar11 +安培; svar12 +安培; svar13 +安培; svar14 +安培; svar15 +安培; svar16 +安培; svar17 +安培; svar18 +安培; svar19 +安培; svar20 + &安培; svar21 +安培; svar22 +安培; svar23 +安培; svar24 +安培; svar25 +安培; svar26 +安培; svar27 +安培; svar28 +安培; svar29 +安培; svar30 + &安培; svar31 +安培; svar32 +安培; svar33 +安培; svar34 +安培; svar35 +安培; svar36 +安培; svar37 +安培; svar38 +安培; svar39 +安培; svar40 + &安培; svar41 +安培; svar42 +安培; svar43 +安培; svar44 +安培; svar45 +安培; svar46 +安培; svar47 +安培; svar48 +安培; svar49 +安培; svar50 + &安培; svar51 +安培; svar52 +安培; svar53 +安培; svar54 +安培; svar55 +安培; svar56 +安培; svar57 +安培; svar58 +安培; svar59 +安培; svar60 + &安培; svar61 +安培; svar62 +安培; svar63 +安培; svar64 +安培; svar65 +安培; svar66 +安培; svar67 +安培; svar68 +安培; svar69 +安培; svar70 + &安培; svar71 +安培; svar72 +安培; svar73 +安培; svar74 +安培; svar75 +安培; svar76 +安培; svar77 +安培; svar78 +安培; svar79 +安培; svar80 + &安培; svar81 +安培; svar82 +安培; svar83 +安培; svar84 +安培; svar85 +安培; svar86 +安培; svar87 +安培; svar88 +安培; svar89 +安培; svar90 + &安培; svar91 +安培; svar92 +安培; svar93 +安培; svar94 +安培; svar95 +安培; svar96 +安培; svar97 +安培; svar98 +安培; svar99 +安培; svar100 + &安培; svar101 +安培; svar102 +安培; svar103 +安培; svar104 +安培; svar105 +安培; svar106 +安培; svar107 +安培; svar108 +安培; svar109 +安培; svar110 + &安培; svar111 +安培; svar112 +安培; svar113 +安培; svar114 +安培; svar115 +安培; svar116 +安培; svar117 +安培; svar118 +安培; svar119 +安培; svar120 + &安培; svar121 +安培; svar122 +安培; svar123 +安培; svar124 +安培; svar125 +安培; svar126 +安培; svar127 +安培; svar128 +安培; svar129 +安培; svar130 + &安培; svar131 +安培; svar132 +安培; svar133 +安培; svar134 +安培; svar135 +安培; svar136 +安培; svar137 +安培; svar138 +安培; svar139 +安培; svar140 + &安培; svar141 +安培; svar142 +安培; svar143 +安培; svar144 +安培; svar145 +安培; svar146 +安培; svar147 +安培; svar148 +安培; svar149 +安培; svar150 + &安培; svar151 +安培; svar152 +安培; svar153 +安培; svar154 +安培; svar155 +安培; svar156 +安培; svar157 +安培; svar158 +安培; svar159 +安培; svar160 + &安培; svar161 +安培; svar162 +安培; svar163 +安培; svar164 +安培; svar165 +安培; svar166 +安培; svar167 +安培; svar168 +安培; svar169 +安培; svar170 + &安培; svar171 +安培; svar172 +安培; svar173 +安培; svar174 +安培; svar175 +安培; svar176 +安培; svar177 +安培; svar178 +安培; svar179 +安培; svar180 + &安培; svar181 +安培; svar182 +安培; svar183 +安培; svar184 +安培; svar185 +安培; svar186 +安培; svar187 +安培; svar188 +安培; svar189 +安培; svar190 + &安培; svar191 +安培; svar192 +安培; svar193 +安培; svar194 +安培; svar195 +安培; svar196 +安培; svar197 +安培; svar198 +安培; svar199 +&安培; svar200。 &安培; F =&安培;&安培; FVAR&安培;一个“;

首先,如何从处理器屏蔽& s =& f =,但是仍允许它解析& svar宏变量?我尝试过使用%superq和%nrbquote的各种尝试,但没有太多运气。

此外,除了使用日志错误来抑制所有选项之外,还有一种方法可以屏蔽关于字符串长的警告吗?理想情况下,我不想那样做,因为我仍然希望看到因任何原因可能出现的任何新错误。

由于

2 个答案:

答案 0 :(得分:0)

要关闭字符串太长的警告,请使用系统选项NOQUOTELENMAX。

掩盖&您可以看到,尝试%NRSTR(),例如%NRSTR(安培; F)。

答案 1 :(得分:0)

要“屏蔽”&符号以便宏处理器不扫描,只需使用%STR功能。我在您显示的代码中看不到任何对&s变量的引用,但我确实在&f中看到了一个。将最后一个参数更改为:

%str(&)f=&&fvar&a.

另外,为了帮助调试这样的事情,我强烈建议你将整个字符串构建到它自己的宏变量(也许名为url)中。换句话说:

%let url="http://finance.yahoo.com/d/quotes.csv?%str(&)s=//svars// %str(&)f=&&fvar&a.";
%put url=&url; 
filename loader url "&url";

我猜测出现错误的代码中的s=&s=,并且我用//svars//替换了长参数字符串,只是为了在此答案中保存格式。

在开发过程中使用这样的“辅助宏变量”应该会有所帮助。 %put只是在测试期间回显字符串,并且不会成为最终宏的一部分。