SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 4944|回复: 4
打印 上一主题 下一主题

请教%symdel的用法

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-1-15 09:26:13 | 只看该作者

请教%symdel的用法

先看下面这段程序:
%let age=30;
%put &age;

%macro liu(var);
  %symdel &var;
%mend;%liu(age);

%put &age;

目的是这样的,要删除已经存在的宏变量,之所以使用宏是为了批量删除方便;
在此仅以一个宏变量age为例,但是运行后报错:
ERROR: Macro variable name & must start with a letter or underscore.

觉得问题出在%symdel这个语句对宏变量的解析上,试过多种方法包括改写做%symdel "&var";
变量倒是解析了,但同样报错:
ERROR: Macro variable name "AGE" must start with a letter or underscore.

TX们帮忙剖析下吧,在此先谢过了!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-1-15 10:22:16 | 只看该作者

Re: 请教%symdel的用法

删除宏变量的时候,就不要再用&了
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-1-15 15:16:31 | 只看该作者

Re: 请教%symdel的用法

谢谢TX!单独删除一个宏变量时直接写名字就可以了,但是上面的问题是把%symdel放到一个宏程序里时出现的问题。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-1-15 22:47:44 | 只看该作者

Re: 请教%symdel的用法

[code:8yuohn84]%let age=30;
%put &age;
%macro liu(var);
        %if  %symexist(&var) %then%do;
                %put Before 1: macro variable "&var"  exists;
                %symdel &var;
                %if  ^%symexist(&var) %then %put After: macro variable "&var"  deleted;
        %end;
        %else %put Before 2: macro variable "&var"  not exist;
%mend;

%liu(age)
;
%put &age; %*won't be resolved;[/code:8yuohn84]

I cannot replicate exactly the same error message as yours, but I don't see any mistakes from your original code.
On the other hand, I guess, that error could be due to an earlier-than-expected resolved macro varible.
[quote:8yuohn84]ERROR: Macro variable name & must start with a letter or underscore.[/quote:8yuohn84]
I guess that was from %symdel & var; %*unnecessary blank space between;

[quote:8yuohn84]%symdel "&var";
ERROR: Macro variable name "AGE" must start with a letter or underscore.[/quote:8yuohn84]
This is clear here %symdel "&var"--->%symdel "Age" ---> incorrect nomination for a macro variable.

*****JingJu*****
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-1-18 12:59:40 | 只看该作者

Re: 请教%symdel的用法

Thank you! But there is a WARNING: Apparent invocation of macro SYMEXIST not resolved.
I thought the reason may be the version. My system was 8.2.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 08:04 , Processed in 0.146053 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表