QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2078|回复: 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 关于宏的资源 希望对大家有用! G. H+ Z* Y! X' V
    在此非常感谢 某某论坛的资源共享。6 B- j2 ?9 }* s! ~
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    2 Z- s6 U. W" q7 Z9 A例如可以在运行proc export前ChkFile下* `- [  J, N0 J! ]7 _; `' f0 [
    . q( [& D; h* s
    %macro ChkFile(OutFilePath);
    & E+ H# t5 l1 x1 X0 v& e6 L3 \/**********************************************************************/
    ( k" s# N' P+ e/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    2 C8 |' Q0 i# I' J/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */; V. x: o7 e+ ]/ v$ P% f4 i
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */- i( L) _: B( ^( I' u3 c
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */# n# j9 C4 c$ H/ [. Z4 A2 \$ v* Q! M
    /* 一定要写全文件名和其扩展名。                                       */
    % H' Y3 H. E6 i8 `/*                                                                    *// W4 ^+ T# A7 f
    /*                                      Created on 2011.9.29          */
    1 P$ C0 m! b/ e+ K9 l/*                                      Modified on 2011.9.29         */9 {# F: [. ^2 ^' ~2 F% w
    /**********************************************************************/
    $ R& \3 j; c+ `8 }8 S+ e% Z8 v# Y
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */( f! e/ S# J' E, b
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 4 p& h# F+ G, b& b. Y
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    ' n* W7 y$ X  r        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
      }$ D! i1 q  Y0 k% V* ?. r        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));5 |  }& f+ d& U( l
    ! V/ x8 ]2 n, u2 \* w
            options noxwait;5 C, [1 m" @. ?% \

    8 m6 ]7 {9 ?6 M! G. r& a5 `, W9 `        %local rc1 fileref1;
    0 x" v* g& H) f" @: n& k( m; B9 S* C        %local rc2 fileref2;/ R* s1 p( ^4 T0 w0 I7 h4 T
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));% {. W. K9 q0 @, {9 K* K
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));  I/ d, [- C9 K: q+ @. @+ X3 `3 X9 A$ P
    1 J' W& ^% }8 M; M4 @4 R
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    5 I$ z: x% F2 j) M                %put NOTE: The directory "&Dir" exists.;
    - v; k) c# j* q6 W6 A                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    4 F7 u9 p; c  ]# I                        %SYSEXEC del &OutFilePath;
    0 w7 B' C- Q# I" o. [                        %put NOTE: The file "&File" also exists, and has been deleted.;# r" ]" h1 x% G; v$ g# T
                            %end;
    $ s+ P3 L, [( W2 b6 y9 o" }                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */4 i0 j2 @! T: Z0 _+ Y! Z
                    %end;
    * L) y5 o2 g2 ?5 z, L) {, n% g1 s        %else %do;                /* 文件夹不存在的情形 */0 M8 W: u  k8 v  N! K; g: L
                    %SYSEXEC md &Dir;
    . N, o3 F2 H3 t4 O& V0 O9 k                %put %SYSFUNC(SYSMSG()) The directory has been created.;$ G% B$ p0 H! ^
                    %end;
    7 r( C( |3 \6 h$ O- Z: x
    , u: _+ t* d2 \0 `( m        %let rc1=%SYSFUNC(FILENAME(fileref1));
      u; t7 O& L5 B3 S        %let rc2=%SYSFUNC(FILENAME(fileref2));
    - }. d4 N# [* b+ K! N; ]%end;! s/ N6 V( p' d6 k; `

    2 ^- d3 P3 U- B8 T4 d9 w/* 情形2:当输入参数OutFilePath不包含文件名时 */5 S  E$ J8 `  d4 [" \
    %else %do;
    4 {' N$ f6 N4 O/ o# F  ~% j) n  v: b        options noxwait;
    - b" [$ Z3 c2 F) z* l+ ^
    % a2 |8 `/ K7 Q% O        %local rc fileref;
    0 b8 v1 `: U! C/ K        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    2 I) O# u" T4 V$ T8 a; h4 J        %if %SYSFUNC(FEXIST(&fileref))  %then/ F! U( {9 B8 u. U' C% u; H
                    %put NOTE: The directory "&OutFilePath" exists.;8 m! ~1 Y; L, j9 z/ @  f% x9 o
            %else %do; # ]% P/ |- u, i. q. Q+ C1 v/ I0 W
                    %SYSEXEC md &OutFilePath;
    4 G7 P! F" H1 ^8 ]                %put %SYSFUNC(SYSMSG()) The directory has been created.;. f5 w9 }3 O! z6 e2 @1 f
                    %end;
    . [& h& n# X9 ]/ [- f        %let rc=%SYSFUNC(FILENAME(fileref));0 O  Q3 G3 ~, A. m2 t
    %end;
    9 B; P/ x( t/ n: p1 z
    9 f' N* X# _$ j9 t, d2 t6 B%mend;
    5 k! U$ B( j, y3 Z4 O% V& N) h- T- a& t+ B3 k
    ( M2 Y: P1 X: L8 n0 Q# t
    %macro Demo();# a! \' T( o& |) T* c6 ~

    5 _7 Q1 _3 c7 Z& ?2 k  B$ z1 D%ChkFile(d:\temp\data.xls);
    % W" {+ x5 E5 H7 ^: l; p1 D- _3 E( b4 s) ~
    %mend;; n  w! c, O' Y# X& Q2 q
    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-10 08:56 , Processed in 0.742083 second(s), 52 queries .

    回顶部