QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2127|回复: 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 关于宏的资源 希望对大家有用: P: V& ]1 r' G0 U5 j8 s. p- o$ _
    在此非常感谢 某某论坛的资源共享。
    & D+ d2 @( J+ Y3 F0 _6 g6 i这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题; a  E( P8 m( K& Z% U( W0 [
    例如可以在运行proc export前ChkFile下! q. e4 Y6 r3 _4 c2 I8 }4 D
    5 a* C. W4 x& B2 \- h. N  K7 W( H
    %macro ChkFile(OutFilePath);  v: D6 @  g. y, `7 S5 j* j
    /**********************************************************************/! S0 _) s; {! m! A) e- S( f
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */. k" }( U8 U' `* o' ]
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    5 h; u- `3 D0 C" g& Y7 `/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */8 C( H0 n" z5 S8 W
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    0 \1 b; T2 W5 b; e7 Q# y! Q/* 一定要写全文件名和其扩展名。                                       */
    ' f$ K* V9 Y3 \* g+ m/*                                                                    */
    9 \9 T* X7 \$ O1 C4 i' x% b6 Y/*                                      Created on 2011.9.29          */$ i+ h: ^; U9 e: ]# j
    /*                                      Modified on 2011.9.29         */
    ; Z$ B. c- f3 f/**********************************************************************/
      d; n7 X2 A8 G  r4 s1 v- J  ^# H) O- \9 s" k. ]
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */4 e& i; n# V6 H+ F6 u& E
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; ' i4 ~! @& \" h6 v, g9 i# e$ e% r
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */7 ~3 h2 z2 p8 u" ?9 |& U7 @
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));& j) d8 D* e. q3 M9 z
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    9 U6 c/ D) J; ]' `* h6 J2 W: G, N
    9 O! p9 W0 m% D- T2 c' L) r: s        options noxwait;
    . K8 F* i3 W1 t9 a1 I# h+ C0 ^: v
    " W: _% ]9 r$ K% j        %local rc1 fileref1;
    6 f$ L) ?% d: Z        %local rc2 fileref2;
    8 _7 Z) E0 M9 z% i) [0 Z        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));& {/ W$ M1 d% q9 ^- ]
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));2 S) O: |, V+ ]( w

    ) U7 P% X% E4 x        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    9 H8 _6 l9 ?2 R- L                %put NOTE: The directory "&Dir" exists.;
      |; B/ b1 _% Y; H                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */* X( k: ]% k. F& w
                            %SYSEXEC del &OutFilePath;
    , Q) I2 K1 i& G5 I; U' _/ V                        %put NOTE: The file "&File" also exists, and has been deleted.;
    5 L: X5 H2 |4 f                        %end;
    * s' G' X1 Y/ j8 Y) P- V                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    3 X+ q% O# c* o" _9 |7 ?* `                %end;4 X& U1 g: L2 P3 a( k
            %else %do;                /* 文件夹不存在的情形 */# |" T/ C% I  R
                    %SYSEXEC md &Dir;# z& S, t/ c( G& @
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;' B3 ~' }0 ~* M! A. O7 [4 F
                    %end;
    . P3 E9 j! V# l$ _- X, Y
    4 g9 x9 ^# q! K$ D* g        %let rc1=%SYSFUNC(FILENAME(fileref1));
    0 h4 Y: C* |$ X" Y7 X6 R/ t        %let rc2=%SYSFUNC(FILENAME(fileref2));# }% C5 h* j) [: [4 |) g
    %end;& R! v, U: Q. b* ^- d- [

    ! k3 C/ p; I+ x! a$ |1 k/* 情形2:当输入参数OutFilePath不包含文件名时 */
    / c* |  D/ b6 B%else %do;+ B4 |6 W0 J' Y) w9 ~9 y
            options noxwait;
    % U& w. e5 o/ Z+ L( w# T7 B9 b3 Y: |
            %local rc fileref;6 p! h) y; ^. G6 V4 U3 [
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));6 |) }( F: L, X
            %if %SYSFUNC(FEXIST(&fileref))  %then
      a" h- {( n8 _                %put NOTE: The directory "&OutFilePath" exists.;- l% P3 n: X2 ~4 Z! M
            %else %do;
    & R, K4 @6 N/ S# ^9 d* y/ a6 x5 F                %SYSEXEC md &OutFilePath;- `. q/ ]& I' N" `
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
      V8 S/ Q& ~0 F, m5 D/ |: t                %end; ' d3 r* K' y4 k3 C" n
            %let rc=%SYSFUNC(FILENAME(fileref));2 a; X( V& g4 T$ m/ N* t
    %end;# _) X! m" D; Y9 O2 u  W
    ! j: F8 Q- s* o) ]  ^. y
    %mend;: H/ h4 Z% Y+ f0 X  X8 t1 O! Y" z) g

    5 C0 `, @# c/ ]5 C8 Y+ {( o' O: F
    %macro Demo();
    4 u/ _% a3 O" ^4 E0 Y. ~; V, o
    , u6 Y$ W' [+ b- ^6 A) X%ChkFile(d:\temp\data.xls);! x+ T3 J" h# D: h

    - P6 r( ^4 E0 P%mend;
    % K1 {) N% \, S6 z
    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-7-31 12:23 , Processed in 0.338822 second(s), 52 queries .

    回顶部