QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2087|回复: 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 关于宏的资源 希望对大家有用
    & ]) F# p& Y) S- ^ 在此非常感谢 某某论坛的资源共享。
    ' A. F5 r: h. m7 U* j. e这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    5 C) T% p# s) n) r7 ^2 |% I, y例如可以在运行proc export前ChkFile下; v: e( o# s$ e7 W; E6 A
    1 J  y( X1 j7 I# z4 J
    %macro ChkFile(OutFilePath);5 k* ]; L5 d" t5 _8 L2 j7 F
    /**********************************************************************/+ a& n+ d$ G* C; F2 f/ P
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */7 ^* Y& t$ F; `5 A( Y$ A
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */( L$ U# k2 v5 N/ T' Y1 f* c7 A3 N1 y
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
      D  D" q/ E1 E% v9 W. W1 D4 S/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    ! S2 f: }' {: C  a8 j; s/* 一定要写全文件名和其扩展名。                                       */
    0 ~; U( ?# b% X/*                                                                    */" Y1 b% h6 K& C/ Z. |( z5 W
    /*                                      Created on 2011.9.29          */
    % a- \6 n6 ]& O/*                                      Modified on 2011.9.29         */2 ?& a, k( ~" z  b! r8 q6 q1 M$ D
    /**********************************************************************/! J$ _, S2 O  _0 l

    1 z' j3 ]. n3 a. X$ p! ]/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    . ]* M* s" \% S) l. f" `0 f%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 8 W; A7 A) ^; I: [' X, b1 b+ R
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    8 K4 y7 v1 O; D& h+ J% Q        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));5 P9 y$ `& i% ]
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));7 J! i" N9 y" L2 |8 q! ?( Y$ p

    & i( r5 ?5 d2 U; `        options noxwait;" N8 I2 m1 U- k$ U

    - x- e0 r( m6 N( L        %local rc1 fileref1;4 t# j6 P; y/ C7 [
            %local rc2 fileref2;
    ; b; n/ g, j4 Z' l& ]/ o3 m        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));/ D( B% b0 O2 W% ?  N8 B
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    $ O% J, R% Q! d3 s! i2 h( Q+ ]7 K. x$ i
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    ! q, O) a0 w0 F4 Y( w$ [                %put NOTE: The directory "&Dir" exists.;
    & t/ Z" E# {5 {$ r. a1 Z4 A4 C                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    ; v  ^' Q' O/ y; r% B                        %SYSEXEC del &OutFilePath;
    6 f6 z! o3 N! N  g1 h3 o                        %put NOTE: The file "&File" also exists, and has been deleted.;
    ; h1 D! L8 [/ Z                        %end;" n4 j: D) f$ J# c5 @% o5 g$ S3 e0 J
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    8 T, }9 _5 T7 l/ A. P& o& f! i                %end;7 }9 h2 ^+ q* ~  L6 |8 [
            %else %do;                /* 文件夹不存在的情形 */
    ; Q! M2 b" x- D, s$ N                %SYSEXEC md &Dir;" p! P/ [' S* {
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;# `- b, V# p: \& H4 }6 q
                    %end;
    . I3 u+ G6 \5 k+ G& g, O0 v; J1 j$ [7 Z3 c
            %let rc1=%SYSFUNC(FILENAME(fileref1));, H( w3 @3 J' R: W( {
            %let rc2=%SYSFUNC(FILENAME(fileref2));4 }+ g7 `; x8 x6 y3 I, N
    %end;
    ( c$ f+ e8 }9 t; ~3 Y/ e8 ^" \
    $ m8 F* A7 R, d; j( Q/* 情形2:当输入参数OutFilePath不包含文件名时 */7 ?$ v1 F& w3 q/ @
    %else %do;* N+ O. @3 B- @. s
            options noxwait;0 G: \' `0 S4 z6 I: G; \3 U. N: T8 N
    + Y* N) l- G! L, }  V
            %local rc fileref;
    + ^% W( n2 j( a, S        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));1 u+ e9 D! t, J: t
            %if %SYSFUNC(FEXIST(&fileref))  %then
    1 N1 `; X& H4 ^( H                %put NOTE: The directory "&OutFilePath" exists.;1 T" [! j. M4 p9 Q5 f/ A9 S: C
            %else %do;
    ( t0 ?6 E+ Z7 f) V                %SYSEXEC md &OutFilePath;& E! L1 b* n' L& u; ~- {! H
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;% i8 x: n, ~' I) u
                    %end;
    8 ^# H) }# f: g1 f' x8 w        %let rc=%SYSFUNC(FILENAME(fileref));* K) u2 n9 C+ _3 x
    %end;$ V! I: J1 m0 Z) X0 x  f
      D( c" `5 r! h) X  e( v5 Q4 d
    %mend;
    9 W$ s& L' g! q) f0 a2 u: M5 G1 z5 _2 M/ i0 G6 f
    + ]9 [% J) Y  [1 ?
    %macro Demo();
    3 j: f: s9 A& q3 G/ s6 }
    # \% t  g6 o0 x5 p# u" b0 k%ChkFile(d:\temp\data.xls);9 o* c' L  p7 [! r: J' Z

    5 N/ J. ]4 N  ?%mend;
    9 r8 v* }# d7 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-4-21 05:13 , Processed in 0.521347 second(s), 52 queries .

    回顶部