楼主: melody21
8991 13

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

11
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

12
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

13
420948492 发表于 2014-8-14 12:15:44
pobel 发表于 2014-8-13 13:19
后半句不完全对。
%symdel newvar/nowarn;
%macro location;
多谢,受益匪浅

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 19:35