QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2128|回复: 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 关于宏的资源 希望对大家有用* I3 C. y4 o$ p' K% a0 u+ W/ e
    在此非常感谢 某某论坛的资源共享。$ H, _' [: z$ F1 Q0 }& [9 R$ m
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    1 h1 x6 f7 n" D例如可以在运行proc export前ChkFile下. I/ P, M$ Y5 m+ j

    8 m. }  k3 c9 H2 m8 W  U%macro ChkFile(OutFilePath);: w, ]2 A: O( U( o/ l
    /**********************************************************************/' g) P6 B, H! F
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */" p' [' S9 M' S2 R7 T- I4 h
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */: m8 P9 m3 ^1 J& O1 t9 J- f* j" j, M2 X
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */% `2 T1 m* ]! p
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    ! S( g  b- H8 V: M- |/* 一定要写全文件名和其扩展名。                                       */
    . N& y7 y( b8 ^$ V' {  b$ S  O/*                                                                    */
    % c( a" P3 @1 l3 T8 _/ P8 }/*                                      Created on 2011.9.29          */, ~* I6 r2 ], W+ L: Y4 I( q  _
    /*                                      Modified on 2011.9.29         */
    0 C. E- \4 y8 J6 B/**********************************************************************/
    7 d8 r  n* |1 B0 T  w# g
    5 x' L2 T& G. T$ Q7 Z$ p% d. ?/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */. \- m1 c# o) i% l7 d
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    % ?3 Q. ^" C5 {' m        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    : p: _- J& o1 R/ J- m3 ~% _7 A        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));8 r3 {+ X# O& U. |
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));7 ^* J5 d( o% e7 C
    : e5 Z; T/ C3 p6 z7 ^9 [& G( t+ V
            options noxwait;' I3 R. G: d6 g+ d7 c

    ( h+ C1 k( L9 H5 a        %local rc1 fileref1;% c9 H! F6 U+ D5 D5 T7 M
            %local rc2 fileref2;3 R7 N; ]1 y( d: h6 k
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    * r, @8 @% t1 W$ }        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));/ P8 r5 y9 s' q/ `
    / ~. p* [8 p0 ?/ u
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    2 F! |5 ?2 l. D; B5 F" W                %put NOTE: The directory "&Dir" exists.;
    3 C2 E) J) c( c7 a5 @                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 *// A  @2 A5 k' ?( ^
                            %SYSEXEC del &OutFilePath;7 k9 _0 I. ~9 g, q! q  U
                            %put NOTE: The file "&File" also exists, and has been deleted.;; |$ M. c+ |* C/ W. h+ x0 P" ^, L
                            %end;
    : ?; g) s/ Y. D! L* S                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    ( r3 b( X* r( I( d" \$ `9 N                %end;8 ]8 P- w" l( C+ W" D  Y, x! E3 |5 f
            %else %do;                /* 文件夹不存在的情形 */
    4 D% W! U0 r6 t# Z/ b0 x* X) C! b. S; D                %SYSEXEC md &Dir;
    : o! ~5 ]# c- _! H! x2 r3 ]2 w                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    ( H5 z1 a: c8 N. C                %end; % t! G$ t' s1 ]$ L$ Q

    4 o$ D" W9 _4 ^# }        %let rc1=%SYSFUNC(FILENAME(fileref1));% ~5 U8 I2 U( |( F* M
            %let rc2=%SYSFUNC(FILENAME(fileref2));
    ' J) K8 d: _0 ^0 m1 `4 U6 m%end;6 g; m4 e( K& }0 R$ E

    / S2 W5 d9 w, ~' x. P1 U: V/* 情形2:当输入参数OutFilePath不包含文件名时 */
    / K% k& ^) u% N7 Y- T! ]%else %do;- Y6 }8 d" {: R/ l& C- e
            options noxwait;
    ! |3 T+ e4 w: \
    - \) X$ r2 h# t        %local rc fileref;/ Z1 p/ f/ a9 F# l/ e7 J/ h
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    # }1 p+ y. E' l7 I0 j        %if %SYSFUNC(FEXIST(&fileref))  %then) M7 I8 q, D% s. l
                    %put NOTE: The directory "&OutFilePath" exists.;) F$ U( F/ P9 h- k* Y
            %else %do;
    5 v3 b  H% V; v/ P                %SYSEXEC md &OutFilePath;
    + w5 U5 C2 ]3 J$ C& Y2 s. u                %put %SYSFUNC(SYSMSG()) The directory has been created.;) M6 @0 t" M. j6 w( c, M
                    %end;
    - y3 W5 s9 v/ [1 h        %let rc=%SYSFUNC(FILENAME(fileref));6 D, M9 b$ a/ ^
    %end;0 a: }. S. |1 ^( E9 |2 D- U# e

    / ~+ ~/ D: U# ^0 b& y) W1 K! c%mend;2 t* k1 \+ _3 g4 J2 U( |4 H

    ! }+ T5 a; Y/ |  s, e
    ) p$ C4 O/ _. \' L%macro Demo();
    ' H! P5 i, |, @" u4 A+ \, I( w
    ) O/ r0 B# Q2 V  q4 B+ k. T%ChkFile(d:\temp\data.xls);
    2 q$ P" D/ b" N# ?: ^- t: m% M2 d3 A" T
    %mend;) g$ }: L& |- I6 m" c9 v
    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-8-1 00:13 , Processed in 0.434192 second(s), 52 queries .

    回顶部