QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2079|回复: 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 关于宏的资源 希望对大家有用
    + G/ |& O5 ]" b! W1 X 在此非常感谢 某某论坛的资源共享。
    4 R6 ?3 s7 G* d( {* ^1 }这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    & W( Q, E5 a  Y" i" l0 s例如可以在运行proc export前ChkFile下
    8 n3 o3 a; A* q; l8 a+ K
    % [1 {# s5 w) m5 u7 H  p%macro ChkFile(OutFilePath);9 o  ^; I3 R- B3 p
    /**********************************************************************/' O/ c! b2 K3 z* r4 E2 Q- U3 g
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    , [1 B4 O( o4 f& i- `/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    * V! ^6 F/ B( b2 l9 s/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    # B3 x1 X7 m; m/ Z0 V0 y- e$ ]0 B/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    3 Q7 Q# Q" T* ~: `* ~# l  \/ f& n# }/* 一定要写全文件名和其扩展名。                                       */& z2 Q; t4 |) V3 \
    /*                                                                    */
    # Z2 g- D' `4 t, u" [/*                                      Created on 2011.9.29          */1 e. }4 e) |! O
    /*                                      Modified on 2011.9.29         */
    ; N& U7 y7 s5 k0 e, ~/**********************************************************************/8 U# }) j  ^; B; J1 Y2 ?

    6 }0 W, w" \1 _/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    3 i- o, m. U6 y0 G" D%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 5 i, Y: I5 m$ M' Y7 m
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    0 \) l- y9 @+ Q3 o. D3 N        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));% a; Q7 O7 b( O1 ^+ S( o4 u
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    / c) R  A7 p9 `& s
    # D# g3 x* A5 E8 ^/ m2 @/ |        options noxwait;& v  V% S! {! ]" D# Y1 T$ p

    8 A9 \) W& ^6 K2 f/ j        %local rc1 fileref1;
    - X/ g' T6 [6 H5 |! D        %local rc2 fileref2;
    $ s. L: D9 y' U' M& G, {" h' n        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
      A7 k: _0 U( H. Q; }        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));% d! Z7 r: A+ U0 e) E- s
    / X7 o' u5 I6 h0 [3 y( C0 y
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    * [  ]+ T7 y- C) l' q0 i6 m                %put NOTE: The directory "&Dir" exists.;
    4 f" T0 @. c2 g9 U* U7 X% i; g6 C                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */1 F+ \' d/ i% V- n
                            %SYSEXEC del &OutFilePath;  U& N. Y( G: U5 y9 Z+ z
                            %put NOTE: The file "&File" also exists, and has been deleted.;
    0 }0 ?: I1 o  D4 k                        %end;
    % z! e! k$ o5 [' m( h5 b                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */  {' D5 v5 y3 _& t) A5 x
                    %end;
    7 \& K5 l7 F# i1 |        %else %do;                /* 文件夹不存在的情形 */2 g" T6 l, ~; J/ L/ Z" }
                    %SYSEXEC md &Dir;
    0 s" w6 m$ d" b2 ?: ?5 W                %put %SYSFUNC(SYSMSG()) The directory has been created.;" e/ V5 E, J$ G) S' y. f5 j
                    %end;
    ; b, m) J5 p0 P0 F, E' N, W& h  F% k( M  z
            %let rc1=%SYSFUNC(FILENAME(fileref1));
    3 k6 i8 [, I% [0 q7 u8 ?        %let rc2=%SYSFUNC(FILENAME(fileref2));
    . L! T3 p: z3 Y1 p8 G6 {%end;3 R6 n  `/ ]% j% U+ o, I
    ' m+ r& x  _0 o8 H3 n* _) t- |- B8 ~
    /* 情形2:当输入参数OutFilePath不包含文件名时 */" b# ?" H# h' U; l3 u5 A6 ?
    %else %do;
    5 a) Z' @0 ~# C1 i& [* a, D        options noxwait;
    / n+ T$ o+ G' n
    / Y! R1 ?! b1 q8 u2 K# b        %local rc fileref;
    . j, `9 _; n7 m+ v; V6 T2 B        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));% j" W, ]' M: v, h
            %if %SYSFUNC(FEXIST(&fileref))  %then: `" n: g# z+ H( g
                    %put NOTE: The directory "&OutFilePath" exists.;9 I* k8 O% C4 ?/ D! F$ g; u
            %else %do;
    8 b; I- G9 F& t$ h# N' F                %SYSEXEC md &OutFilePath;
    " o1 S* x1 E- W- G, H8 B8 S                %put %SYSFUNC(SYSMSG()) The directory has been created.;
      m: w# y2 x. [# |. Y9 R7 w7 X( v                %end; . Z$ M5 p* h/ }1 E
            %let rc=%SYSFUNC(FILENAME(fileref));' t8 f8 D) J3 D
    %end;
    ' X! S, V- F, z# d3 ~) p1 f7 T% t9 ~: d1 b' I& |
    %mend;) @. M. u+ x; Y/ Y) i. K
    / a9 T3 N: N, U% f8 V* b
    1 W+ [( _' z, Z2 p3 r+ r
    %macro Demo();8 {8 t5 G. x( ?- A& J# |

    5 ?/ D0 r: J* u! }) W0 z7 |%ChkFile(d:\temp\data.xls);
    3 q% J. P2 b0 U0 c1 z$ A  l2 T" P) ], D( k' S1 w- \
    %mend;; f% E" ~: H9 O; M. H2 Y
    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-4-10 10:41 , Processed in 0.424395 second(s), 52 queries .

    回顶部