楼主: yz7891
5889 6

[原创博文] 宏程序的存储与调用的问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
18 个
通用积分
0
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
615 点
帖子
100
精华
0
在线时间
61 小时
注册时间
2010-3-30
最后登录
2019-6-3

楼主
yz7891 发表于 2010-5-19 15:15:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如我有好几个宏.sas文件,我想把他们弄在一起,我从网上查到可以用宏存储和调用,我试了一下,貌似存储成功了,但是调用一直不行
  1. libname test 'c:\';
  2. options MSTORED SASMSTORE=test ;
  3. %macro myfiles / store des='test';
  4.   filename file1 'D:\1.sas';
  5. filename file2 'D:\2.sas';
  6. filename file3 'D:\3.sas';
  7. filename file4 'D:\4.sas';
  8. %mend;
复制代码

这样写对不对?
调用的时候我用什么方法可以调用到他们,比如我有个语句 :
%ROC (data=score_dev, response=dumdef1,var=score);
就是要在上面的几个宏的基础上才能运行成功的, 我该怎么调用呢?
二维码

扫码加我 拉你入群

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

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

关键词:宏程序 filename response options libname store 程序 网上

回帖推荐

yatming 发表于7楼  查看完整内容

小试牛刀 result: SAS 系统 目录的内容 A.SASMACR # 名称 类型 创建日期 修改日期 说明 ...

本帖被以下文库推荐

沙发
edumetric 发表于 2010-5-19 15:41:02
用%include试试,例如:

%include 'D:\1.sas';
%include 'D:\2.sas';
%include 'D:\3.sas';
%include 'D:\4.sas';

藤椅
yz7891 发表于 2010-5-19 15:44:09
include我用过了额,可以的,但是现在就是想要把他们都存储在一个里面,然后再调用,不知道这个应该怎么写。。。

板凳
yatming 发表于 2010-5-19 16:00:38
楼主那几个D:\*.sas如果里面都是定义宏的话,定义的时候也需要store的,不是外面再包层macro且把最外面的那层macro store了就完事了,其实store只是外面的marco的编译,根本不会去运行里面的filename,更不用说filename中的macro了。store其实就是把编译文件存到硬盘,你用proc catalog看store的macro就只能看到最外层的macro,因此你还是先把该store的都重新定义下,然后用proc catalog去看你要的有没有,有了就ok了。

报纸
yz7891 发表于 2010-5-19 16:00:52
有人能告诉下应该怎么做么?

地板
yatming 发表于 2010-5-19 16:02:49
楼上的楼上

7
yatming 发表于 2010-5-20 00:40:57
小试牛刀
  1. %let dsn=a;
  2. %let path='.';
  3. libname &dsn &path;

  4. data _null_;
  5.         file 'a.sas';
  6.         put '%macro a;';
  7.         put '%mend;';
  8. run;

  9. data _null_;
  10.         file 'b.sas';
  11.         put '%macro b;';
  12.         put '%mend;';
  13. run;

  14. data _null_;
  15.         file 'c.sas';
  16.         put '%macro c;';
  17.         put '%mend;';
  18. run;

  19. %macro ms(filename,newname);
  20. data _NULL_;
  21.         infile "&filename" missover pad LRECL=32767;
  22.         input @01 string $1000.;
  23.         file "&newname";
  24.         if length(string)>=6
  25.         and upcase(substr(string,1,6))='%MACRO' then
  26.         str=strip(substr(string,1,length(string)-1))||' /store source;';
  27.         else str=string;

  28.         if _N_=1 then do;
  29.                 put "options mstored sasmstore=&dsn.;";
  30.         end;
  31.         
  32.         put str;
  33. run;
  34. %mend;

  35. %ms(a.sas,aa.sas)
  36. %ms(b.sas,bb.sas)
  37. %ms(c.sas,cc.sas)

  38. %include 'aa.sas';
  39. %include 'bb.sas';
  40. %include 'cc.sas';

  41. proc catalog cat=&dsn..sasmacr;
  42.         contents;
  43. quit;
复制代码
result:
                                                                               SAS 系统                                    
                                                                         目录的内容 A.SASMACR

                                               #    名称    类型                创建日期               修改日期    说明
                                               ------------------------------------------------------------------------
                                               1    A       MACRO     20MAY2004:00:36:54     20MAY2004:00:36:54
                                               2    B       MACRO     20MAY2004:00:36:54     20MAY2004:00:36:54
                                               3    C       MACRO     20MAY2004:00:36:54     20MAY2004:00:36:54


D版时间不对,不要在意。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-19 02:47