QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2100|回复: 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 关于宏的资源 希望对大家有用: O0 E' {' Y( N7 l% b* f" ]5 V
    在此非常感谢 某某论坛的资源共享。# O/ P  F5 L% R2 H) @, y  N- a4 b
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    $ r; ?# ]+ ?1 a' c8 ^" M$ x例如可以在运行proc export前ChkFile下
    2 \# K1 N7 C, K  L6 m, ~7 b, B& @9 Z( o$ r4 Z) L1 ?
    %macro ChkFile(OutFilePath);' f% Y) J, A; z& w+ {/ g
    /**********************************************************************/  V) K9 w$ W, ~; W) f0 K1 K
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */) Y1 y$ [2 R" e! ]
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    % ?$ q8 v; i0 c/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    1 N% d$ B1 C4 A/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    - y# J2 e& `6 o% J# m/* 一定要写全文件名和其扩展名。                                       */8 ^" ?1 W/ Z5 x/ E" t+ _- k
    /*                                                                    */
    5 H# s6 p2 y& \, S$ z" R/*                                      Created on 2011.9.29          */
    / g, H4 \. u0 A/*                                      Modified on 2011.9.29         */
    , Q4 n; i4 i1 s" L+ Y* x/**********************************************************************/
    - L0 @  E% S4 B' k% {8 t/ R0 v4 s# X. z! I
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    7 J/ v7 H# _6 K%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    * \7 s/ n& }. g) B! p! r6 @        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    2 D  ?8 r! x6 @4 o        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));, ]' M. i8 G( h6 `
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
      S! s* Z, L" @: L( a, I) W& V3 |9 t1 M" e) H
            options noxwait;
    : g' q3 X+ L2 I/ Y! I8 i. C& X( S% _3 b
            %local rc1 fileref1;5 R) ~% q, x+ V/ w
            %local rc2 fileref2;
    ! w1 i9 G) c+ T, `        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    $ b5 ^0 k( }/ o5 L$ L$ n* t        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    % E8 m# N; B, `3 r- V  R+ `: i" a* n+ C9 @7 P9 [1 P
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    5 [& Q) p  l7 h* e8 Z                %put NOTE: The directory "&Dir" exists.;
    ! a! o. l( D4 M) Q                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */2 t1 O" i9 [9 m7 K# w7 r2 k! |0 T. b
                            %SYSEXEC del &OutFilePath;1 f; x+ [6 T8 W3 T0 V8 X5 O
                            %put NOTE: The file "&File" also exists, and has been deleted.;: u9 M3 I+ P, O: S4 O2 E  O
                            %end;' v; B) w9 Z$ i3 {, k0 t9 o2 w  }" ]( \5 l
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */: j' @" {5 w- N: b8 x" b* B  A3 V- T; b
                    %end;+ V5 \( A, u$ [4 R5 x5 B( z/ J
            %else %do;                /* 文件夹不存在的情形 *// w! i6 ]; ]; {" \
                    %SYSEXEC md &Dir;
    ( d1 k5 z; r5 A. _, M2 `$ u                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    / c4 `- b3 m5 h4 X" n                %end;
    9 I" i( {. O, t. y+ e4 W1 z9 b9 x0 ~' K& @1 R( c5 o- {
            %let rc1=%SYSFUNC(FILENAME(fileref1));) p0 Y  i7 `: K9 E" q; q  p
            %let rc2=%SYSFUNC(FILENAME(fileref2));
    , k5 j9 m' ~) E+ A7 u2 x! x& ^%end;
    3 W. I6 F  f* {: h* w( C, R" b& W: y5 q4 Z4 @$ z
    /* 情形2:当输入参数OutFilePath不包含文件名时 */2 l0 e) l0 L* }5 B3 `
    %else %do;
    % c& V7 W# u6 o/ f        options noxwait;
      \* K- ]4 l& o. n4 ~
    - R0 D* ^9 g+ N        %local rc fileref;
    . K6 ?8 D+ T5 Q" X6 F8 B8 d) W        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));+ |* Z3 I# g6 r) e, f
            %if %SYSFUNC(FEXIST(&fileref))  %then
    / Y. _" a4 |1 f                %put NOTE: The directory "&OutFilePath" exists.;- k0 x1 ]4 w; U& E( F! l
            %else %do; 8 ?! u# L4 {9 ?$ w6 ~
                    %SYSEXEC md &OutFilePath;
    5 d$ u) k1 W* e/ I- T                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    : d; F! z, [' D                %end; " g# g% T& M( E- I
            %let rc=%SYSFUNC(FILENAME(fileref));
    7 A  _3 o8 }7 ]( c* c, _1 j%end;9 r2 p/ x: x2 m7 c3 @
    % L% W- x2 W& X: t+ y" N
    %mend;8 V6 \8 U" _* o/ x  }
    6 r$ m& b$ y) p0 c  z2 F! u: {

    * e/ X# N+ f  z" w- y4 K%macro Demo();: u  b9 \9 [3 V3 W$ U! m. p& J

    + J6 L. O# U! u%ChkFile(d:\temp\data.xls);4 w5 B5 k/ J5 `& |

    . s% J  D1 d$ ]. I5 Q0 F%mend;
    ; c$ ?- @, l( J
    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 17:50 , Processed in 0.349435 second(s), 52 queries .

    回顶部