请选择 进入手机版 | 继续访问电脑版
楼主: melody21
8414 13

请教:macro 定义下的global variable 问题 [推广有奖]

420948492 发表于 2014-8-13 13:14:29 |显示全部楼层 |坛友微信交流群
pobel 发表于 2014-8-13 12:50
还需要考虑在global symbol table中,call symput要创建的宏变量是否存在。

%let dept2=dept2 in open ...
    那归纳一下就是:?
在宏内部,使用call symput或let 创建宏变量时,会首先检查global table,若此宏变量存在,则去替换原来的定义;若此宏变量不存在,则检查Local table,若local table非空,则存在local 表中,否则存入global table

使用道具

pobel 在职认证  发表于 2014-8-13 13:19:54 |显示全部楼层 |坛友微信交流群
420948492 发表于 2014-8-13 13:14
那归纳一下就是:?
在宏内部,使用call symput或let 创建宏变量时,会首先检查global table,若此宏 ...
后半句不完全对。
%symdel newvar/nowarn;
%macro location;
   %let newvar=haha;
   %put _local_;
%mend;

%location

可以参考一下下面这个帖子的沙发那一层: https://bbs.pinggu.org/thread-2845461-1-1.html

使用道具

420948492 发表于 2014-8-14 12:15:44 |显示全部楼层 |坛友微信交流群
pobel 发表于 2014-8-13 13:19
后半句不完全对。
%symdel newvar/nowarn;
%macro location;
多谢,受益匪浅

使用道具

pobel 发表于 2013-1-14 10:09
Call SYMPUT() 会将创建的宏变量存入到最近的非空的symbol table 中,如果运行到call symput时宏location里 ...
还是不懂为什么一楼程序日志中没有country啊

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-17 00:46