QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2101|回复: 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 关于宏的资源 希望对大家有用
    ; y0 r3 R* S2 E) R% ^2 \( d 在此非常感谢 某某论坛的资源共享。  U4 O2 E( @( X& U
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    # n8 }4 k5 z/ r, Z& l0 O" Z6 \例如可以在运行proc export前ChkFile下
    " t/ P  ?1 h1 x: J& o. H3 P3 J/ Q0 u! k# V9 z* @
    %macro ChkFile(OutFilePath);
    & Z# H1 A; j/ t  S6 O+ ?: u( ]8 [/**********************************************************************/
    2 h7 w( L0 Y! L+ B- M/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */& h2 \+ b1 n1 r5 Y! g
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    " O. O+ V  f7 l: }9 _7 d% z: t/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    . N+ T% o& U5 g, O# J# p8 m5 `/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    " j8 W5 m# n: g7 z/* 一定要写全文件名和其扩展名。                                       */! `* D$ z* [# |) T7 [$ K% ?9 Z
    /*                                                                    */9 {/ x+ Y1 }' s1 M/ H( S! n* \
    /*                                      Created on 2011.9.29          */
    . m: @; D* V8 ~- r3 E/*                                      Modified on 2011.9.29         */8 Z; p+ ]7 @* I+ ^
    /**********************************************************************/
    ; a# D2 s7 j" [9 V0 i7 s/ b$ `  B+ J( R$ f$ B9 [
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */3 F. i: }; S3 }" ?% y
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; . e1 F/ }0 s* `9 M- c0 C# D% Y
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */: }+ u; V' H# ^1 a! U
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    8 E" a+ t: _* m1 v2 K8 L3 J+ ^        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    3 I( [2 z) X' A7 x& B: h) h9 Y9 N& [! |
            options noxwait;7 k5 y0 }. U" o& K- Q' N3 A

      p6 _' @. G9 t2 y8 H        %local rc1 fileref1;2 X/ r" C4 F3 a: D* J* o
            %local rc2 fileref2;. g0 v4 P0 Q: d, W/ A# ^% ~$ R- _0 z7 K2 X
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    ! D( ?- T" k" b# y: N+ e        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));3 l; S; d: V# \

    6 N: L3 r. J# _5 {1 W        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;9 Z( e( T, i8 R; R* ?& f7 E
                    %put NOTE: The directory "&Dir" exists.;6 y& g8 r) I& [' n% L1 k& G
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */+ C9 j5 e+ j* q! N2 {. J
                            %SYSEXEC del &OutFilePath;
    5 {  b( A/ B& m2 s# R5 Y( m                        %put NOTE: The file "&File" also exists, and has been deleted.;
    9 r2 I7 E. b% l0 [                        %end;
      }! C1 T/ J$ X                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */! [" s# n3 ]$ F7 g/ ~6 |/ \; }
                    %end;( M2 r/ y+ O. y- S  z, o7 N
            %else %do;                /* 文件夹不存在的情形 */
    & W) S: h. i6 I" e                %SYSEXEC md &Dir;" m$ \# T( \+ B* L
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    ! y0 m/ ?0 t, e( k                %end; 6 S( v2 n& F& O! }/ f; F
    * k; C# F  N2 N2 g0 j& v
            %let rc1=%SYSFUNC(FILENAME(fileref1));' ]7 J9 X, ]% r- w. K
            %let rc2=%SYSFUNC(FILENAME(fileref2));. ], W) P+ C  ?* L( K
    %end;
    8 D) g6 Q4 [- r8 x8 `1 P% \, r; v6 G7 U: }! J
    /* 情形2:当输入参数OutFilePath不包含文件名时 */
    % x$ f* |6 G# C, `%else %do;
    5 E. S# \. F6 x% R/ B: n- r) I) Q        options noxwait;8 c9 U1 q2 b' L. E( `- v: R% r2 `

    9 o9 ]7 f: P) F, b; O% E" G: }/ N/ O2 O        %local rc fileref;
    7 B% }- m: i/ e, }- |5 H% N        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));2 ?2 `4 d, c( e
            %if %SYSFUNC(FEXIST(&fileref))  %then7 t" p+ ]4 k1 e4 w
                    %put NOTE: The directory "&OutFilePath" exists.;1 z* s" n- E" K4 b1 W# O$ e# m
            %else %do;
    ( ^: h+ }. J" b' W# h8 e( p  m                %SYSEXEC md &OutFilePath;
    7 h. T. O# c& V4 D- x5 N* A' z" V4 D  Q                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    " m7 \; T# ]$ c4 E1 @* w                %end;
    % A. X. R4 w% e1 y. U5 I5 M2 i0 O        %let rc=%SYSFUNC(FILENAME(fileref));, Z  w& _* k3 I! s1 N7 N/ i+ Y
    %end;( l- R* a8 Q6 a

    8 U+ T4 W" }6 T5 K# o0 U- X* [%mend;. Z  f" X8 V  |+ k. {7 M' I3 K

    + v6 o# D- L. W& y# B3 d
    ' d9 u! s! e" J' J) W* r; |%macro Demo();
    , I3 l. G2 k4 k4 C1 K6 {- x/ P6 c8 u4 v2 b  a' y
    %ChkFile(d:\temp\data.xls);2 k& S: n+ ?( p1 m2 r8 d. [" U* o

    # _8 p1 ]5 i) W1 J7 v0 c, K%mend;
    7 e6 M, o0 }9 w. 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-5-25 19:18 , Processed in 0.408643 second(s), 52 queries .

    回顶部