java中的宏变量_在call symput语句中使用动态宏变量

我不久前发布了一个关于修剪宏变量的问题,我用它从Yahoo Finance下载一个CSV,其中包含每个传递到站点的变量信息 . 建议我实现这一目标的代码如下:

data _null_;

a = "&testvar.";

call symputx('svar',trim(input(a,$8.)));

run;

这很有效,但是我需要重新设计代码,以便我声明多个宏变量并同时提交多个宏变量 .

要同时声明多个宏,我使用了以下代码行:

%let svar&e. = &svar.;

%put stock_ticker = &&svar&e.;

变数&e . 是一个迭代变量,每次都会增加一个 . 这声明了与名为&svar的宏看起来相同的宏 . 每次将它们放入日志中时,新的动态宏现在都会抛出以下原始警告消息:

WARNING: The quoted string currently being processed has become more than 262 characters long. You

may have unbalanced quotation marks.

在我开始使用我原来问题中建议的symputx选项之前,我得到了 .

下面列出了此特定嵌套宏的完整代码:

%macro symbol_var;

/*here the start row and end row created in the macro above are passed to this nested macro and then passed through the*/

/*source dataset. at the end of the loop each ticker macro variable is defined in turn for use in the following nested*/

/*macro, symbol by metric.*/

%do e = &beg_point. %to &end_point. %by 1;

%put stock row in dataset nasdaq ticker = &e.;

%global svar&e;

proc sql noprint;

select symbol

into :testvar

from nasdaq_ticker

where monotonic() = &e.;

quit;

/*convert value to string here*/

data _null_;

a = "&testvar.";

call symputx('svar',trim(input(a,$8.)));

run;

%let svar&e. = &svar.;

%put stock_ticker = &&svar&e.;

%end;

%mend;

%symbol_var;

任何人都有任何建议如何声明宏&& svar&e . 直接进入调用synputx步骤?它当前抛出一个错误,表示正在创建的宏变量不能包含任何特殊字符 . 我已经尝试使用&QUOTE,%NRQUOTE和%NRBQUOTE但是我在无效的上下文中使用了该函数,或者我没有完全正确的语法 .

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值