QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2117|回复: 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 关于宏的资源 希望对大家有用
    / V3 m) q  U# y3 t) ? 在此非常感谢 某某论坛的资源共享。
    + v) [8 _: u, O8 }这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    ) _' W0 i" e7 A( H2 M例如可以在运行proc export前ChkFile下  ?$ h; _; b, h: A/ T
    % K/ j- O$ @* t2 m+ T" C' d
    %macro ChkFile(OutFilePath);/ B6 h/ G4 U2 y* e& K
    /**********************************************************************/" v0 X6 V4 e( j/ t  t- G% @
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    : r, n. j8 H8 I" c' G# W& ]; g: d/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    ( H8 u8 Y) s4 Z- B/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    1 G" q3 G+ M! ?5 y( T$ U! E* _- G, Y/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */' s  N- T* ]2 `
    /* 一定要写全文件名和其扩展名。                                       */
    & w5 V; m# a0 N; F/*                                                                    */
      N1 W" x' D1 p% X  Y* A/*                                      Created on 2011.9.29          */7 p& @# t0 m2 g3 d" I
    /*                                      Modified on 2011.9.29         */
    ; ^0 Z, I- O* K1 k/**********************************************************************/2 Z# e7 h! M$ i- ~
    , [5 k* I2 F6 c5 b
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */8 N4 |% g. q! v1 I& C
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    $ A* Z. u; t  Q. S        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */# F; j! k- Z5 Z5 z9 }4 p& T
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));4 E0 D( }2 N# V
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    * \9 T9 l5 F% S: L! u* f* m; U0 I/ h' B0 p, z; y2 }
            options noxwait;
    4 L4 q. @* A$ H' H$ l3 B; k
    # n0 ~! n7 @' }1 e) X  P. a3 r$ t        %local rc1 fileref1;9 C' u, c/ x3 h5 C8 p  D7 {5 Q
            %local rc2 fileref2;
    # E6 Z8 J; S0 J8 }, M& X        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    9 Y8 L9 P; ~2 d7 c- z" l        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));, M) N. V; E: L1 \" `! s9 H

    1 X# `" T/ A( ^: z( T3 O        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
      C1 N& c/ w5 g; y* O; v2 ~1 u                %put NOTE: The directory "&Dir" exists.;
    # O- D" y! o' ]4 Z- {9 o                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */" j* e! }" s# }' {7 q' K/ S
                            %SYSEXEC del &OutFilePath;
    0 X+ `5 b; |& `                        %put NOTE: The file "&File" also exists, and has been deleted.;) ~* G. D6 A/ B4 w% A3 {1 @' B. E
                            %end;' P( f$ ]% h, R2 g6 ^3 @
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */* k+ t9 l2 X6 u5 N, ?
                    %end;
    " E! I3 ]& k0 t5 j        %else %do;                /* 文件夹不存在的情形 */, q0 |- G9 C$ X0 z
                    %SYSEXEC md &Dir;6 I; C, e6 Y& d' }8 f# w; t
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    7 i; [* W9 k# I! D8 g+ a                %end;
    ' M: M* |/ O. b. F, X4 |( E) C% B
    ) @% b& Y0 s4 b8 o        %let rc1=%SYSFUNC(FILENAME(fileref1));
    ' H, o& d+ s6 I' q        %let rc2=%SYSFUNC(FILENAME(fileref2));* l! |  `( h  [( z' L6 Z. E+ K
    %end;: t( B- Z1 I& u& n( W1 k
    $ P3 ?2 T9 c" d0 \7 J* z
    /* 情形2:当输入参数OutFilePath不包含文件名时 */
      d) h7 J) k/ @8 [, y; ^%else %do;
    7 d) a5 O* {3 M) O& \9 t) ?% t& k, D3 D        options noxwait;
    ) e/ x' \* g; E5 y( ]1 H3 @8 @- {* |- M2 s3 a
            %local rc fileref;
    - }3 C* V3 P/ Y        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));6 r6 |" h% D8 ~$ B3 I! D+ _
            %if %SYSFUNC(FEXIST(&fileref))  %then8 @+ j8 x* O6 J2 `. ~9 f3 p- {
                    %put NOTE: The directory "&OutFilePath" exists.;/ W! m+ w2 T; y1 R0 E* C
            %else %do; " B% ^5 L2 s0 j  Q1 h% x
                    %SYSEXEC md &OutFilePath;
    2 W  f/ k3 S: E& l( X9 F                %put %SYSFUNC(SYSMSG()) The directory has been created.;, w. }( X  V$ Z( b* \$ V
                    %end; ; U: I  w  I! d" B1 D  q
            %let rc=%SYSFUNC(FILENAME(fileref));
    1 ?2 J' h: N7 N( I( |/ i, }& j. X%end;
    6 V' Y# m' _& @5 u4 W1 G$ Y6 S9 p  S, O* a" Z
    %mend;
    " o. x8 H0 I: o4 _" l, j" U3 G* N4 w
    5 E( b1 k5 e" {7 W. m3 j" z8 N; W1 F  q& ~, U7 `
    %macro Demo();5 H3 S/ Y1 M6 N( s- [+ z
    4 M4 P* w  L. u9 F' }7 i6 j3 [  ]
    %ChkFile(d:\temp\data.xls);
    + D" y- ~, s# v; L0 h& g+ F( b! }* \- j5 o% c* I4 G$ W
    %mend;* {' O2 N& _, J8 ?+ {" u+ z. A: n
    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-10 04:44 , Processed in 0.383409 second(s), 52 queries .

    回顶部