QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2081|回复: 0
打印 上一主题 下一主题

转载 分享 SAS基础宏之1:ChkFile 包括代码实现

[复制链接]
字体大小: 正常 放大

3503

主题

538

听众

5990

积分

  • TA的每日心情
    开心
    2017-2-7 15:12
  • 签到天数: 691 天

    [LV.9]以坛为家II

    社区QQ达人 元老勋章 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组2013年国赛赛前培训

    群组2014年地区赛数学建模

    群组数学中国第二期SAS培训

    群组物联网工程师考试

    群组2013年美赛优秀论文解

    跳转到指定楼层
    1#
    发表于 2013-7-23 15:24 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
      在网上看到了一些比较不错的sas 关于宏的资源 希望对大家有用
    8 R4 N: v3 P9 q 在此非常感谢 某某论坛的资源共享。; d9 K3 d4 n# z  M3 s( v9 x
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    6 v+ B; p* O2 A4 U) {7 r5 g7 d/ a0 M! |例如可以在运行proc export前ChkFile下
    ) ?: u. N* g" {5 Z: T, Q7 Z
    ! C. Q4 f2 B- \%macro ChkFile(OutFilePath);
    % e5 r6 [5 B* K7 }/**********************************************************************/& P! M( a& C1 w# V
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */. p; P8 p" b6 `" j5 C
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    & ^) ]2 w: X* N/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    1 j  t0 f- K5 y  x/ K/ S- z4 j/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    9 K3 [* U3 w5 n. j/* 一定要写全文件名和其扩展名。                                       */8 ^! n0 y1 m; T+ i) k4 h
    /*                                                                    */% Y0 V/ {9 Q6 o; k+ d
    /*                                      Created on 2011.9.29          */9 c  S6 f! `' o$ E4 C
    /*                                      Modified on 2011.9.29         */
    8 Y2 ~9 A# q" |% x  T/**********************************************************************/' X1 ?( O3 z4 p5 n/ Z  M& }$ f

    * C' I# F& ~/ D/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    ) R5 |9 U6 ]! Q+ f%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    ( r8 g4 Z1 X; }7 `8 m. S        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    3 E) u& N8 I6 k. d! D5 k        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));8 v% t& Y2 c5 y- r) P2 x5 J
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    $ Q; e. g! R' t% A5 s0 W$ v4 F6 M
    5 k) `3 a' L" T        options noxwait;
    # H4 |7 f, {0 ?4 |  v4 U7 K. K2 a4 G* \% L3 D, e3 k  w2 H- d7 Q
            %local rc1 fileref1;6 A, m  Z/ M# K0 d% ~1 G
            %local rc2 fileref2;
    6 B1 R; y- ?, D- M$ M( X$ Y: j        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));7 ?) b6 h  f* ]* O
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    & m2 Y3 w% b: x( E( e4 {3 s- g  D: m0 o# Z; V4 w. q  C- m6 h
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;, a) z; {2 Y+ F$ i
                    %put NOTE: The directory "&Dir" exists.;
    ; S9 U9 m* }) e7 a                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    + J6 }2 B( n. T                        %SYSEXEC del &OutFilePath;" f# Q) N+ E( ~0 W
                            %put NOTE: The file "&File" also exists, and has been deleted.;+ u. D) b7 U; n# s
                            %end;
    # `( L7 F) Z4 q  b/ o) H# i                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */8 X1 Z" B; C7 ]1 J$ h, m( W* B
                    %end;
    " I. n1 c) K! c+ D; C6 V5 `% ?        %else %do;                /* 文件夹不存在的情形 */
    / L% i1 ]4 `! E5 B4 @3 a! t9 L                %SYSEXEC md &Dir;5 V. \4 z1 R% \* A
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    / W. w; w7 f* r( o                %end; 9 C; n5 ?+ ]0 y$ b7 ^% j$ D
    9 v& Y' [' j3 I
            %let rc1=%SYSFUNC(FILENAME(fileref1));
    - J* l, ^; L7 r2 n: u        %let rc2=%SYSFUNC(FILENAME(fileref2));
    7 c8 t6 e/ x# ?5 L$ `- A' V& H; }%end;2 P' X8 k) u' C

    6 z6 p- R6 _- N9 O/* 情形2:当输入参数OutFilePath不包含文件名时 */
      P/ N$ V  ~/ U% O6 E4 ?%else %do;' ?  }! [6 n5 V0 L# S. F7 ]
            options noxwait;
    6 k4 j% H9 q  c
    + b+ c4 d& x' c1 X        %local rc fileref;
    % u1 W* q! c# L# Z8 @+ n* n' k/ |        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    ) \1 ~! _$ L" B1 J: u7 c9 q1 \        %if %SYSFUNC(FEXIST(&fileref))  %then
    $ t. e( ]- y# v( H' D                %put NOTE: The directory "&OutFilePath" exists.;5 b3 L# z' }7 U4 {" r2 G" D& R
            %else %do;
    + s8 e9 m9 G9 C9 k* q$ {                %SYSEXEC md &OutFilePath;  P& p* `7 x$ v, f5 z6 r
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    ) r# `+ a" @2 `. T' q                %end; 1 `& y% q/ S" ?+ `& k& P& ]
            %let rc=%SYSFUNC(FILENAME(fileref));
    ) T/ ~: F4 _; Q3 i6 \%end;
    6 h: i6 P1 b5 m- x- h5 F
    " H- {8 Y/ l7 ^/ L5 q2 c& F%mend;
    " g' H+ r9 `; w0 C* K! r; f4 q6 P0 n' F4 ?

    2 q; W' [  V% U6 P%macro Demo();! d7 l# {, E* L4 p
    8 o; D! _2 F: G% w2 I
    %ChkFile(d:\temp\data.xls);5 w3 d& e' {& }* H. Q' P2 H, p. I. `
    & ^, _$ O- f! x; Q
    %mend;* x! G1 H: u1 [6 q4 X4 C
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-12 07:15 , Processed in 0.425796 second(s), 51 queries .

    回顶部