QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2107|回复: 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 关于宏的资源 希望对大家有用
    . G7 }' n9 v' b7 w5 _5 k8 }+ ^ 在此非常感谢 某某论坛的资源共享。; c5 `% v) f8 b4 V% E! ]
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题7 @( C* Y( V% R+ \* ?- N# A
    例如可以在运行proc export前ChkFile下
    % G3 o5 W/ O3 ^) g6 Y: A9 Q9 Z# k% _( U4 ]
    %macro ChkFile(OutFilePath);
    $ [- X4 X$ T: [7 B: o/**********************************************************************/
      V" X, b$ A2 p3 J  ~  J/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    ; L- B: t9 c& }7 Z, i/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    , `/ ^7 I3 J' E( g/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    2 r8 ^1 p8 |" {0 q/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */9 G  o' Z5 `! n, B4 [. Q5 P
    /* 一定要写全文件名和其扩展名。                                       */
    % A9 x  ~" G" {, ~6 p- ?3 H/*                                                                    */: [% N. a: k! ^  q: }3 f/ u
    /*                                      Created on 2011.9.29          */' k; |0 J' F# ?- g! A
    /*                                      Modified on 2011.9.29         */! H" J  _; w& d9 c5 j. d* N
    /**********************************************************************/
    ( f0 E1 @  ~5 s  ], g' L; }0 e# q0 \) w. B! b" G! ~* X
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
      r. I3 u( f  b5 e%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    , A8 t# [; k8 u, _+ [" n        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    % `3 x0 |7 v1 ~5 }3 B3 Q( ^        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    9 z+ V2 Z& L* Q/ }        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    , H6 Y5 N4 Q- F$ b* y( a0 j
    " r5 S& V9 N" Q0 ]        options noxwait;/ l, t1 x$ |6 y+ V4 Z
    4 c7 W$ C9 x; @$ k/ s& x
            %local rc1 fileref1;
    . z* O; s* A4 ~6 u        %local rc2 fileref2;8 p# g4 |- G1 r. e+ W/ {& U' j( p
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    % [2 y' C4 _. E! ]        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));1 u! V  \' e& r2 J

    2 q: F# D& b& k3 [        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    5 ]) T9 k/ s3 P" J$ l                %put NOTE: The directory "&Dir" exists.;
    - b2 L% e% g+ K+ X8 J                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */+ x% Z8 d$ Q/ }' W3 X
                            %SYSEXEC del &OutFilePath;
    * c" }% K2 j! W# M+ s" p" J9 l9 h3 F, H                        %put NOTE: The file "&File" also exists, and has been deleted.;2 r" g& t2 w2 N2 R
                            %end;
    6 N/ _& f  N; U: s! c                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    & e) S% ~- B& H. ?  U3 X/ O                %end;) I2 q5 t: w' L; U
            %else %do;                /* 文件夹不存在的情形 */4 R8 b9 q, a6 o2 V4 w
                    %SYSEXEC md &Dir;
    # o! p, ^# m6 R- c                %put %SYSFUNC(SYSMSG()) The directory has been created.;3 e/ ]; x0 W) K# }1 Y$ t) G
                    %end; / g$ Z4 Y$ Z1 }& L  s3 E
    - p1 m4 l0 ^+ r$ E) G. ?$ {
            %let rc1=%SYSFUNC(FILENAME(fileref1));
    ) b4 L+ b* B1 }# Q! j5 D" x        %let rc2=%SYSFUNC(FILENAME(fileref2));8 ~+ I. k. Z  t+ k- K
    %end;
    ; D/ w" m5 I7 o) h/ I
    3 @/ z6 V- {, G/* 情形2:当输入参数OutFilePath不包含文件名时 */
    % ?+ a+ y& `( b, e# u" j' ~- t%else %do;
    ( ~2 I' \  t4 i9 w( t8 X. o        options noxwait;
    , @$ B, V1 B. U5 M" j- U& }3 h& M  L5 L" }9 o; Y
            %local rc fileref;! A  l) v* o$ h" Y
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));& i* ?* E+ S9 s( \; J
            %if %SYSFUNC(FEXIST(&fileref))  %then
    ! {' t" Z& {$ S$ b* n3 j% y  r                %put NOTE: The directory "&OutFilePath" exists.;+ C4 t" I/ L4 y0 \/ y
            %else %do; / C9 }  `" v( l% @; y7 z7 f: X4 o
                    %SYSEXEC md &OutFilePath;( g/ W: S/ ~- I6 e$ |0 q& k
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    9 w7 e$ h" f2 s2 O& W                %end;
    5 d" B: V# ?/ V+ d" {/ e: z6 v        %let rc=%SYSFUNC(FILENAME(fileref));5 W0 j# \, {' f, }! K) Z+ ?
    %end;' n6 w0 i9 \* N

    : d& A9 a) W5 e" }; f3 b%mend;  f* V) M% ~( v2 a; O

    ' D+ c- l8 v/ }: d) `" L, {; |5 q9 Z
    %macro Demo();
    1 S7 c1 x8 l" g" A2 E( |' b; L
    %ChkFile(d:\temp\data.xls);. A) V( w. b2 X$ ~3 x' d0 x$ u2 p, i( n

    : _6 q' u0 [+ n8 Z' t+ ]%mend;; p8 U" k+ T+ K8 N* i: p
    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 16:48 , Processed in 0.443676 second(s), 54 queries .

    回顶部