楼主: Alice5491
3378 0

[程序分享] 宏程序学习心得 [推广有奖]

  • 1关注
  • 0粉丝

大专生

26%

还不是VIP/贵宾

-

威望
0
论坛币
31 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
126 点
帖子
20
精华
0
在线时间
57 小时
注册时间
2015-1-21
最后登录
2020-6-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
AS宏程序:
如果一段程序被用到很多次,那么可以采用宏程序。
首先宏变量与普通变量不同,可以独立于DATA步,可以出现在任何地方,用%let来定义宏变量,调用宏变量用‘&’。
%PUT用来在LOG窗口显示宏变量;%STR是用来将多个语句赋值于一个宏变量的,语句中的’;’不是%LET语句结束的标志。
%MACRO开始一个宏,%MEND表示宏的结束,调用宏用%加宏的名字。宏在建立以后并不执行,只有在调用宏的时候才执行。
%LET定义
       这是最常用的方法。语法过程为:%let 宏变量名=值;调用宏变量:&宏变量名
       Tips:

       1、以逗号作为宏变量定义的结束。

       2、在定义时候不要加引号,系统会把引号当作宏变量的值之一。

       3、宏变量的作用域分为全局与局部。

           一种在程序(这里一般是指一个宏程序)外定义,则在整个SAS任何地方都可以被调用。

           另外一种则是在程序内部,则作用在该程序出现宏变量后面,在程序外则不可以被调用,否则

           会出错。(如果一个程序内部定义有宏变量变成全局变量,则需要使用%global)

       4、当宏变量一个表达式,使用:%str()

                    %let print=%str(proc print; run;);

       5、如果宏变量是数值计算表达式,则需要根据数值类型使用二个不同的宏变量:

                          %eval_r()   用于计算整数例如:%eval_r(1+2)

                         %sysevalf() 用于计算浮点数或者空值例如: %eval_r(1.0+2.3)

     二、data步中定义 call symput()

         这个方法只允许在data步中,这个一定需要注意

         语法过程:call symput("宏变量名",值);

               在DATA过程中,宏变量可以包括常值、变量值。或者函数赋予宏变量。

         三、 SQL过程中定义

              在使用SQL过程中定义宏变量,语法过程为:

             SELECT 宏值

             INTO :宏变量名

              SEPARATED BY ‘分隔符号’



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:程序学习 学习心得 宏程序 separate symput 程序学习

已有 1 人评分经验 收起 理由
李会超 + 20 观点有启发

总评分: 经验 + 20   查看全部评分

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

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

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

GMT+8, 2024-4-19 13:28