QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2111|回复: 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 关于宏的资源 希望对大家有用
    & x' J4 |" V+ x; r 在此非常感谢 某某论坛的资源共享。5 R* a, j! [+ a+ Y. \, `' j, [
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题: ~4 `. _6 P' e
    例如可以在运行proc export前ChkFile下. `: I6 x5 t$ c, R9 P" c5 u

    ! [* a# o/ Z* t( J5 B9 @$ a%macro ChkFile(OutFilePath);) O9 B* F/ n+ ^" `- Q" F
    /**********************************************************************/# _/ ^) S6 |" H2 a3 M$ u0 P
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */% o# f' ~6 B' o6 q$ S& M
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    " o8 o$ N0 L- @/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */2 a) p5 T5 |$ x! B
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */. \+ m, F; _; D% I0 o; ~# r
    /* 一定要写全文件名和其扩展名。                                       */
    4 U: b! f! Z- r& G% S, G# F% J/*                                                                    */
    $ U  i' \7 [/ e  J8 s& \/*                                      Created on 2011.9.29          */* m2 q  R/ V  {9 _# ~
    /*                                      Modified on 2011.9.29         */) Y$ e' }# u( g) d' T$ _
    /**********************************************************************/  E( J' P: ?6 ~6 d

    . f  Y& m9 I7 _7 }9 }8 T( ^/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */* P6 M+ p( p# m  L2 F" ^+ ~
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    . z; U. B" v! }        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir *// T( ^8 J$ V' ^$ M2 m: O
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    " Y3 |9 T" ~" i, W  B, f+ m& }: H9 f: [        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));% n% D3 a2 N% V0 ~0 |

    $ `8 v, S% |2 ^. W# X' |        options noxwait;! x$ U  e  G; {- s. r0 `
    $ q4 Q: _3 f7 m  f# _
            %local rc1 fileref1;
    . M8 ^( g% C! p  M9 h        %local rc2 fileref2;/ B; m5 Q, y1 ^$ e, o9 W8 k) b' z7 G
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    5 w) P% a2 b# n$ S0 l4 Q        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));; Y- o3 N) t0 w- ?' a/ o

    $ G0 |( A# L, S        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;2 l4 S7 [6 I, N& J) d) t
                    %put NOTE: The directory "&Dir" exists.;
    3 Z) K* I8 l: C7 f+ _" d  G8 E                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    $ I' z4 {' o5 }9 r9 p) [& W- i                        %SYSEXEC del &OutFilePath;
    ! E2 o$ A& z7 Z- [% r% d' D                        %put NOTE: The file "&File" also exists, and has been deleted.;5 l  ?9 U4 F7 W1 M' {! Y+ H
                            %end;: i. C2 t+ J* r% r0 }& W2 L: J* \
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    + T4 a5 s1 a5 Z6 k0 H1 Q+ w                %end;3 G; b8 o5 A6 @% e  Q
            %else %do;                /* 文件夹不存在的情形 */
    $ k' f3 H2 Y% }' a" }) F% ]                %SYSEXEC md &Dir;1 [8 t  Q( N7 K- U3 _' y
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    ! D, c8 e; O. J# _2 a: z2 _                %end; ( K  W4 m) n/ D1 ^9 X) Y- G
    3 K  V5 |& [, V/ n
            %let rc1=%SYSFUNC(FILENAME(fileref1));: T6 ^+ M8 w6 |5 F6 J& @
            %let rc2=%SYSFUNC(FILENAME(fileref2));8 ~8 K7 F# Z3 f, c+ e7 @1 ^# t
    %end;
    $ x( W' I* W! T" r7 r. r9 l' v$ h  X. ]
    /* 情形2:当输入参数OutFilePath不包含文件名时 */2 X4 @& O, X- h
    %else %do;
    2 @0 P5 \; I) V; w        options noxwait;8 l) E4 ?- G4 p3 X

    . N$ s; H- Y. k! [+ e        %local rc fileref;5 O- U0 Q/ ~4 _( C) X
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));2 n4 O8 b8 A" g' y
            %if %SYSFUNC(FEXIST(&fileref))  %then4 R) \' L) R8 `" x' T5 w
                    %put NOTE: The directory "&OutFilePath" exists.;+ R/ G6 `. S0 y  G9 U7 }8 [
            %else %do;
    9 @# @; N) f9 P1 N                %SYSEXEC md &OutFilePath;+ l2 b% P$ {/ I  ~5 w+ s: j2 v
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;! a" C# K' r* U1 v2 j5 |/ U) h
                    %end; 4 y$ v5 _- F3 H! G# r- o* c
            %let rc=%SYSFUNC(FILENAME(fileref));
    , A1 o; L5 C/ k3 c, [%end;
    1 }3 u0 T" H3 X7 Q' V. [% Y8 ?  K: J0 }5 x) [: l
    %mend;
    2 N: W- v. b7 Q
    8 B+ a' A# }8 d( M; j% B& Z5 q4 V2 Q3 f3 ^- |
    %macro Demo();9 W; w, S& }5 E% X) u0 r/ R( C
    2 n* p! |. C3 M, [1 T
    %ChkFile(d:\temp\data.xls);
    2 R' D2 P* \  Z1 K% A% s7 f1 i; {8 j; M8 q2 i6 x" \
    %mend;
    ' `7 V/ g$ F! I5 J& \! i
    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-16 12:26 , Processed in 0.588869 second(s), 51 queries .

    回顶部