QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2106|回复: 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 关于宏的资源 希望对大家有用
    2 r$ a: x9 ]6 [% Y# T 在此非常感谢 某某论坛的资源共享。
    9 J! t3 L( |; m; a这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    ; _8 A8 I$ H3 {' N3 o例如可以在运行proc export前ChkFile下$ n4 F) C. Q% k1 J$ v  ]! K
    2 @$ a$ L' \6 X( F9 ~( j
    %macro ChkFile(OutFilePath);. j$ C; u- u4 I. g. i2 U
    /**********************************************************************/
    . R9 w- {1 h8 s  J* f/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    ; q: U& W4 U1 p0 e/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */$ {5 T5 k$ [7 F* G, h) @
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */" O  P- ^" v8 ?1 R$ J  J* `
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */% m7 Q. Z( n% `; `; O- J
    /* 一定要写全文件名和其扩展名。                                       */
    9 u/ e$ _8 H7 D$ b3 i3 G/*                                                                    */! K* k. X7 f" P! ?$ Q  t& S
    /*                                      Created on 2011.9.29          */
    " F6 o- f  p. f9 y7 Y( x, x' m/*                                      Modified on 2011.9.29         */
    ) J( F# M4 I2 X/**********************************************************************/" K" }: P, T- q

    ; e/ S6 I+ q; E/ B; H2 d: Q/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    " V5 M6 u/ d! U; g* G. I%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    " x2 D9 p: R7 O4 h5 n, _" b        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    ! W2 a$ }! b) \6 m& m6 u! {        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));7 m- U; S! V) P0 w7 j0 ~! B
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    1 O: }8 Y* ~3 \4 b$ O5 w. G. G3 @9 g1 e& M+ e- z3 @& ~
            options noxwait;
    ; x. T" S9 h' q5 \% H1 X& R5 T- [$ O0 c" Y3 L, C& ]
            %local rc1 fileref1;# Z* c& T6 L0 U* p' q, P) d
            %local rc2 fileref2;
    - G$ _8 |, _, A6 o5 I        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    ; A  l$ z( X8 t7 C! M& m0 |. D        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    7 L& ^6 f' e& a7 s5 I5 \& q
    . I  _% L. k2 g' H1 r7 T        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    , J% M$ t/ G' ?. Z0 d* Z: i                %put NOTE: The directory "&Dir" exists.;
    % |  X% a: _9 C" L+ h; S& d. Z                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    8 L8 k. u4 y& `8 L: T                        %SYSEXEC del &OutFilePath;
    ' W& ]! H+ c0 i                        %put NOTE: The file "&File" also exists, and has been deleted.;# Y8 B# |4 @  q
                            %end;" `; V) u4 J8 }0 B3 w' I% p9 u
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */7 O- d- Q5 Q( l+ `& M
                    %end;/ C# U; `4 v/ N- w, R0 A
            %else %do;                /* 文件夹不存在的情形 */
    7 m  g& _! q$ P. W" [5 ?) _                %SYSEXEC md &Dir;& a0 k6 ?6 T+ W/ j8 R& M
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    6 V; W4 h; u3 `; B/ g7 `                %end;
    0 O. `! e' x/ K" }2 J' W( V! j. J+ O& v2 o" y/ M$ E, P
            %let rc1=%SYSFUNC(FILENAME(fileref1));
    0 c1 P3 J$ a- l4 m# @        %let rc2=%SYSFUNC(FILENAME(fileref2));
    , O3 g) R( l7 w/ z$ E) w%end;
    5 ~) y8 E! @/ |1 Q" X" Q8 O5 ~
    3 U% x( X, L1 T$ l3 v( p8 ~/* 情形2:当输入参数OutFilePath不包含文件名时 */- ~$ A! x2 A' E$ }9 O
    %else %do;& E2 ^8 }, U0 R" @9 ]( K
            options noxwait;3 e# u2 [. N  G% j0 f* ^/ j

    & i6 i( z" v. ~1 G, I8 T        %local rc fileref;, T* n+ F* H5 d
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));6 y1 Z6 E$ o7 t. E/ N
            %if %SYSFUNC(FEXIST(&fileref))  %then1 {* f5 ]7 s/ }- ]3 [8 {: u8 ^: z6 r
                    %put NOTE: The directory "&OutFilePath" exists.;
    " b8 @5 x" T+ ^5 d$ C4 K# b" m) ]        %else %do; 5 {, _5 I! p: S$ C
                    %SYSEXEC md &OutFilePath;
    1 E0 `8 ^9 _5 y0 ^3 o                %put %SYSFUNC(SYSMSG()) The directory has been created.;- w! w( U9 [( `3 c! {3 c
                    %end; / g3 u3 `. Z7 |. L$ T1 P! c& Z
            %let rc=%SYSFUNC(FILENAME(fileref));
    2 R& x6 i/ S# u: e%end;
    % I# N) i7 ]3 ]; N
    7 [1 b5 W9 B* j1 U; F%mend;6 o5 d& b$ [6 v  U7 k
    , x6 K0 R! q! H6 @, O6 I& D
    ; {& s4 ~" Y5 b$ q; u0 e" Y
    %macro Demo();9 t% Z: E! O* S& @! G2 U

    ( z0 {8 _1 k7 ^9 v6 }% {%ChkFile(d:\temp\data.xls);+ `7 D8 ^5 o7 N' `! ^4 `

    1 ]" B) P' I. ~( N%mend;
    . {1 Z% `5 y9 i" f" h9 J
    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-6-14 15:12 , Processed in 0.360439 second(s), 52 queries .

    回顶部