QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2083|回复: 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 关于宏的资源 希望对大家有用1 B1 L! P. M) Q! X! A: x
    在此非常感谢 某某论坛的资源共享。* K' A; ?5 {* F& s( f
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题% U0 E/ R$ ~1 l+ D
    例如可以在运行proc export前ChkFile下
    ' B! g- B( C; Z. n8 T+ I5 x! w. ]6 E9 N" p2 j
    %macro ChkFile(OutFilePath);% i$ b: y; o/ }3 f1 G( d
    /**********************************************************************/
    ; t; {2 E/ G- \1 F0 a6 v; M/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 *// e5 f- v& j0 B0 T/ O
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */2 ]# W' [6 ]( @8 _& ?$ C
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    4 p$ j! Z, v2 x- Q/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */" K0 I& C6 q- u3 j1 L/ e4 j0 }3 R
    /* 一定要写全文件名和其扩展名。                                       */
    4 T6 F! i; A# N8 X/*                                                                    */8 |. M# b0 G5 R3 k/ f
    /*                                      Created on 2011.9.29          */" G0 M! A6 z5 z  q( y3 R
    /*                                      Modified on 2011.9.29         */
    ( r0 S0 ?5 {! c6 S' N% d9 X" Z/**********************************************************************/
    7 a2 }( K8 G  e1 i1 I: Y; e6 G8 K& h+ @" T: N3 ~6 \2 Y
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 *// W7 z- g) s3 m4 e( G" Q6 ~/ T
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
      z7 o$ O2 W. z        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */. _6 [* ?) H% C, u$ R
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    " q7 k) n/ K9 z& o4 z5 q        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));0 u* a& y  a7 D" Z. L# g

    # B: t  _4 \9 B( |' x/ [/ X, l        options noxwait;
    ) u# S* Y7 j& ^2 m# R7 N; j) `- l' C' d. s. o# p5 A# z
            %local rc1 fileref1;
    % p/ ^3 Q' q. r' o# }/ ]        %local rc2 fileref2;) [: [, ?- O: o) T* N* e
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));9 @& p; p2 k( x' m
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    3 t5 t+ D7 J9 n6 Q4 T7 g2 [; _' Z
    * M% K( A2 J/ \* ?5 d        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    9 k6 e. n& }# y                %put NOTE: The directory "&Dir" exists.;
    ! _" k0 S! y8 @, J' c1 z                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    " w( A& S9 o9 ]; u0 P% F7 U3 t1 S0 i, L                        %SYSEXEC del &OutFilePath;
    0 m8 f6 N, b0 j/ O                        %put NOTE: The file "&File" also exists, and has been deleted.;
      C7 i& Z5 G" {, k                        %end;
    ' U* O) l, e2 |5 D1 ~                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */' v5 |% M5 t( r" I6 c% U
                    %end;
    # h; l- u. f, F4 o2 N+ j" I        %else %do;                /* 文件夹不存在的情形 */* J" E' v5 T1 e6 t7 q5 y
                    %SYSEXEC md &Dir;: i) h8 \) V% L. S! T  k5 Y! r: o2 Z
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    3 Y( D5 M) }0 L3 K                %end; ! S8 f& T3 |# y7 N4 y- `& W& Q. b

    ! d& M3 i# @: {! @9 J, f# G5 M/ i        %let rc1=%SYSFUNC(FILENAME(fileref1));4 M, G* L2 q; l" _* t% |. v  c
            %let rc2=%SYSFUNC(FILENAME(fileref2));
      u3 X; I* W! |: Q%end;  r) D. Y5 U% I1 D# o9 p! s
    - a  a. _% e. D" s7 o
    /* 情形2:当输入参数OutFilePath不包含文件名时 */4 x  v" s8 L0 b- U, R" q; X
    %else %do;6 Y% U/ {# L) f( ]( M
            options noxwait;
    / v2 E3 M4 w$ c  J3 Y* h$ J1 |# J7 u( o) M( K
            %local rc fileref;2 j% I# l8 F% \2 z7 `$ ?
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    2 H) r# r: p) j8 P+ g* {  W        %if %SYSFUNC(FEXIST(&fileref))  %then
    6 v( P/ ]0 K& |$ N: Z$ W                %put NOTE: The directory "&OutFilePath" exists.;
    ; O5 Z, ?3 f* l" |        %else %do; 1 z" w1 F" h: O
                    %SYSEXEC md &OutFilePath;
    + I6 G+ D- Y+ ^+ T7 b                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    - s" \( n* b$ F- O                %end;
    " q/ j6 J0 _. N3 ~5 h2 `5 E  e0 f( t        %let rc=%SYSFUNC(FILENAME(fileref));6 m) P2 E! ~% _8 N
    %end;
    7 F+ y8 ]# ^+ R( d. m
    / o3 Y7 C5 T( ?( I%mend;
    / |, [- [6 Z6 w' O% D( l& g+ s" e* L4 M" L* b& w+ i3 \
    * ]5 n4 c3 |# _" P) U$ ~* i5 o
    %macro Demo();
    $ [6 T7 L6 A! N4 n+ w) k6 n$ E
    ; B$ g& E& B* R, o. J%ChkFile(d:\temp\data.xls);
    ' N" ]  ~5 E0 }) ?; t3 u4 w0 Z" m+ k! F& o
    %mend;4 ?; N3 h4 u7 `9 M$ O$ f. D1 g+ ], x+ S" l
    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-13 04:07 , Processed in 0.428655 second(s), 52 queries .

    回顶部