楼主: victorwxw
930 3

SAS程序问题,请教高手指点 [推广有奖]

  • 19关注
  • 1粉丝

博士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
21 个
通用积分
29.5885
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
4916 点
帖子
164
精华
0
在线时间
373 小时
注册时间
2007-6-17
最后登录
2024-4-17

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的一段SAS程序如下:
(注:该部分程序改自于人大经济论坛的程序。程序的主要目的是想读入在某个文件夹下的所有xls文件。论坛上高手比较多,请教高人指点下)
filename y "C:\Documents and Settings\ibm\My Documents\My SAS Files\9.2\li0oi3pj1\";
%let dir=%str(C:\Documents and Settings\ibm\My Documents\My SAS Files\9.2\li0oi3pj1\);  
%macro test(filname);
    %let filrf=&filname;
    %let did=%sysfunc(dopen(&filrf));
        
      %let listname=;
      %let memcount=%sysfunc(dnum(&did));  
        %if &memcount gt 0 %then %do i=1 %to &memcount;

          %let listname=%sysfunc(dread(&did,&i));

             %if %sysfunc(scan(&listname,-1,'.')) eq 'xls'
                     %then %do;
             PROC IMPORT OUT= w_&i
              DATAFILE= "&dir.\&listname"
              DBMS=Excel REPLACE;
              GETNAMES=NO;
              MIXED=NO;
              SCANTEXT=YES;
              USEDATE=YES;
              SCANTIME=YES;
              RUN;
           %end;
        %end;
    %else %do;  %let rc=%sysfunc(dclose(&did)); %end;
    %let rc=%sysfunc(dclose(&did));
%mend;
%test(y);


程序的运行结果是:只在日志窗口出现以上程序代码,其他的什么也没有。就连通常情况下错误或CPU工作时间等信息都没有。我不知道问题出在哪里了。所以请教高手指点,不甚感激。先谢谢

二维码

扫码加我 拉你入群

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

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

关键词:sas程序 请教高手 高手指点 documents Document 程序

沙发
heperwong 发表于 2013-11-3 19:28:00 |只看作者 |坛友微信交流群

上述程序有两处错误,一个是路径后面多了一个"\",另外eq 'xls'是不要引号的。
  1. filename y "C:\Documents and Settings\ibm\My Documents\My SAS Files\9.2\li0oi3pj1";
  2. %let dir=%str(C:\Documents and Settings\ibm\My Documents\My SAS Files\9.2\li0oi3pj1);  
  3. %macro test(filname);
  4.      %let filrf=&filname;
  5.      %let did=%sysfunc(dopen(&filrf));
  6.        %let listname=;
  7.        %let memcount=%sysfunc(dnum(&did));
  8.          %if &memcount gt 0 %then %do i=1 %to &memcount;
  9.           %let listname=%sysfunc(dread(&did,&i));
  10.              %if %sysfunc(scan(&listname,-1,'.')) eq xls
  11.                       %then %do;
  12.                                          
  13.              PROC IMPORT OUT= w_&i
  14.                DATAFILE= "&dir.\&listname"
  15.               DBMS=Excel REPLACE;
  16.                GETNAMES=NO;
  17.                MIXED=NO;
  18.                SCANTEXT=YES;
  19.                USEDATE=YES;
  20.                SCANTIME=YES;
  21.                RUN;
  22.             %end;
  23.         %end;
  24.     %else %do;  %let rc=%sysfunc(dclose(&did)); %end;
  25.      %let rc=%sysfunc(dclose(&did));
  26. %mend;
  27. %test(y);
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

使用道具

藤椅
victorwxw 发表于 2013-11-3 20:09:10 |只看作者 |坛友微信交流群
我按您说的改过来了,运行成功了,。非常谢谢您的帮助,谢谢您。我学得不好,以后需多加努力。还请不吝指教。

使用道具

板凳
heperwong 发表于 2013-11-3 20:54:37 |只看作者 |坛友微信交流群
victorwxw 发表于 2013-11-3 20:09
我按您说的改过来了,运行成功了,。非常谢谢您的帮助,谢谢您。我学得不好,以后需多加努力。 ...
不客气。

使用道具

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

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

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

GMT+8, 2024-5-14 06:07