QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2118|回复: 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 关于宏的资源 希望对大家有用
    0 ~: z. d! T: a4 t( Q: H7 {' u 在此非常感谢 某某论坛的资源共享。
    5 j8 @& t4 K6 m, q3 ]# f这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    - A2 F5 U2 U6 E8 ~5 q例如可以在运行proc export前ChkFile下, F) {( p. K! l, W) [: Q

    0 [) ^: |. n& {& k* {%macro ChkFile(OutFilePath);
    6 y3 W1 G  {8 e" u7 K& \/**********************************************************************/* R! x8 l4 |. w* a, l
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */7 t  ~+ _  y: G+ t. I* F, X
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */0 b* [* ]/ |4 W: a6 i
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */9 S& [: z& `- {  |9 j9 b. W
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */( N& _# F: o- }& K6 R% Z
    /* 一定要写全文件名和其扩展名。                                       */; n. G% r) K% H) g# r$ \& e6 P" ^8 \. }
    /*                                                                    */6 U* F6 X& l% G7 ]1 p
    /*                                      Created on 2011.9.29          */9 M, M# Z- P' Y- s
    /*                                      Modified on 2011.9.29         */, R7 k0 h& S% v! o( ~
    /**********************************************************************/1 p/ j. \! T3 {6 I

    1 K, O# \  o; Y* m/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    9 F- |, f2 P2 C8 R4 O8 a( F%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    0 X  R2 N3 \2 c& N4 v3 r% @        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */2 B- ], S, Q  q, D
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));0 u, R* i8 S0 [% E
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    . V) M" [7 d3 Y- R3 b1 ~9 n* P5 e& e# T
            options noxwait;
    ( T: K- X/ c% ~+ @) m4 E" {7 s* `3 \. j" }+ S
            %local rc1 fileref1;: V* r* n- s2 ~
            %local rc2 fileref2;
    " X" g1 J. j7 i, G1 O        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));9 w. p) u1 X$ B
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));. r% U, L* x( y

    7 {/ ^; g5 h" r+ V2 h3 M0 u        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;8 j* ]2 @" G2 |  W
                    %put NOTE: The directory "&Dir" exists.;, c! ]+ V/ i  ?# o) h: x* x
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */" ^* g! l0 N6 a1 C# [6 Y5 k2 t6 W
                            %SYSEXEC del &OutFilePath;. v' w. C$ g0 ^& i
                            %put NOTE: The file "&File" also exists, and has been deleted.;
    5 [5 |" I9 c! k0 A+ H: Y3 A                        %end;  |$ c0 b8 Y) s2 Q6 L9 j9 t9 Y) `0 K0 n/ ~
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */- M. z( c2 a( b* Z6 q$ ~1 h
                    %end;
    + k0 c! \. [* m# G  c5 c' W        %else %do;                /* 文件夹不存在的情形 */
    8 x/ I; k  g; C                %SYSEXEC md &Dir;: i) Q8 G3 d+ s7 s2 g
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;( ]7 j9 c( G9 M) q- j; w; p
                    %end; ; J% X1 L/ x1 D2 @) |

    : U2 p: J5 O6 {* F/ X9 {        %let rc1=%SYSFUNC(FILENAME(fileref1));
    6 q! g( _( p2 O, c        %let rc2=%SYSFUNC(FILENAME(fileref2));$ |! t" F+ Z4 A$ p; @+ P: x
    %end;
    & H; C9 `6 r0 _8 w  U$ A3 a2 J- }
    /* 情形2:当输入参数OutFilePath不包含文件名时 */2 H' f. _1 C' l( N* a( Y
    %else %do;6 q7 g; g- ?5 v1 W5 D( \" L0 Y
            options noxwait;' S3 {" K4 ~' Y7 ^

    1 q6 R) V* I% `: v        %local rc fileref;; H' T) J" L+ v
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    : k: F) Q& l! r' W. n1 Q  u$ p/ L3 [        %if %SYSFUNC(FEXIST(&fileref))  %then
    ; t% J& j, G6 n' D- O6 T                %put NOTE: The directory "&OutFilePath" exists.;
    $ b( c8 a3 d0 P" x8 s2 x        %else %do; + R5 g7 i2 k& D6 A% N6 u9 u
                    %SYSEXEC md &OutFilePath;- a" F+ J( L% i; ?
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    , O5 [7 T& d; y* e" a                %end; , `5 w, K$ [1 \1 O  o
            %let rc=%SYSFUNC(FILENAME(fileref));7 K  D2 M1 l; o( \
    %end;
    / C9 e6 V- h& ?) G5 w6 Y. Y, K+ M9 Q: B) b, Z, S
    %mend;
    ' f& v/ I' d5 l: i9 K* f: W0 C
    8 t* I6 L; I# s: E- Q- d) y* {; d0 X$ f8 v
    %macro Demo();9 q: n2 ?5 \2 r/ @3 {; d

    " m3 P, m3 E) b$ ]9 k7 R7 s% {%ChkFile(d:\temp\data.xls);
    " z8 Z, c, S$ s' T* ~( |/ ?
    ; Z# d: z2 x, K$ t" q  Z+ L* W%mend;
    / e& ?  ?7 N0 I8 K! 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-7-10 08:56 , Processed in 0.346259 second(s), 52 queries .

    回顶部