楼主: stata18
7412 5

在sas 宏中使用%inc调用程序遇到的一个问题 [推广有奖]

  • 3关注
  • 6粉丝

教授

70%

还不是VIP/贵宾

-

TA的文库  其他...

MyLib

威望
1
论坛币
4225 个
通用积分
102.4402
学术水平
15 点
热心指数
31 点
信用等级
16 点
经验
157348 点
帖子
728
精华
0
在线时间
1917 小时
注册时间
2010-8-13
最后登录
2024-4-20

100论坛币
遇到一个问题,在SAS宏中使用%inc调用一段文本文件,内容如下:

   %if   &s5a.>   %then %do;
                            data &dsn.;set &dsn.;
                            ……
                            run;
                        %end;

上面这段内容使用a.txt保存。

在宏中使用
%inc "&path.\a.txt";
调用,运行中会出现
                 ERROR: %END 语句在开型代码中无效。
                ERROR: %IF 语句在开型代码中无效。
这种提示。
如果把文本文件的内容直接拷贝到宏中,则可以正常运行。请问,哪位高手知道这个是什么原因?该如何修改?谢谢



最佳答案

孤单的我们 查看完整内容

我理解的是%inc语句的作用并非把external file置入macro中,而是单独执行的,具体顺序我还不清楚。 修改的话,可以把外部a.txt的开放语句用宏括起来 然后在你sas macro中%inc语句后插入一行%test
关键词:Inc Error 是什么原因 文本文件 SAS宏 文本文件 程序
沙发
孤单的我们 发表于 2016-12-11 21:38:30 |只看作者 |坛友微信交流群
我理解的是%inc语句的作用并非把external file置入macro中,而是单独执行的,具体顺序我还不清楚。

修改的话,可以把外部a.txt的开放语句用宏括起来
  1. %macro test;
  2. %if   &s5a.>   %then %do;
  3.       data &dsn.;set &dsn.;
  4.                ……
  5.        run;
  6. %end;
  7. %mend test;
复制代码

然后在你sas macro中%inc语句后插入一行%test

使用道具

藤椅
mingfeng07 学生认证  发表于 2016-12-12 10:35:31 |只看作者 |坛友微信交流群
%if %then这种宏语句,如果不包含在宏里面,是没有办法运行的

使用道具

板凳
stata18 发表于 2016-12-12 10:48:34 |只看作者 |坛友微信交流群
mingfeng07 发表于 2016-12-12 10:35
%if %then这种宏语句,如果不包含在宏里面,是没有办法运行的
包含在宏里面。
区别是:如果放在文本文件里再在宏里调用文本文件则显示有问题,如果把文本文件内容直接粘贴在宏里面,则显示正常。

使用道具

报纸
孤单的我们 发表于 2016-12-12 10:59:04 |只看作者 |坛友微信交流群
The %INCLUDE statement executes statements immediately. The INCLUDE command brings the included lines into the Program Editor window but does not execute them. You must issue the SUBMIT command to execute those lines.

使用道具

地板
stata18 发表于 2016-12-12 14:06:09 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-12-11 21:38
我理解的是%inc语句的作用并非把external file置入macro中,而是单独执行的,具体顺序我还不清楚。

修改 ...
貌似很有道理的样子。有空时我再测试一下。先谢谢您的热心。

使用道具

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

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

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

GMT+8, 2024-5-6 13:29