QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2108|回复: 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 关于宏的资源 希望对大家有用
    & h4 S& _) p& E6 z* S+ l2 s 在此非常感谢 某某论坛的资源共享。
    ( R. r5 C2 o0 W, O5 I$ O这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题' ~# s# H' _; E
    例如可以在运行proc export前ChkFile下
    2 p7 ?/ y& ^0 D3 w1 V6 y, J
    1 U0 ~" l; x* g' t2 K* e$ ^%macro ChkFile(OutFilePath);
    ) D; @. Q* T! B, y0 }/**********************************************************************/
    " u8 ?$ N" K( U+ }/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */5 G& o  c* j* d' `3 \$ }" ?, b
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    $ r4 S* {3 f9 c8 f& a0 l/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    8 u! N4 H. P4 Z5 |0 d. U- _/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */8 W$ a% P7 r. a- O
    /* 一定要写全文件名和其扩展名。                                       */3 ^9 v1 z6 I( r4 {9 B) J! ~( A
    /*                                                                    */
    $ j+ C+ r# Q* K/*                                      Created on 2011.9.29          */& g) T) R+ Q7 n0 h( Y, ~
    /*                                      Modified on 2011.9.29         */
    , C8 o/ h- h) @7 V6 Q, H/**********************************************************************/9 N4 R# S8 \& q" F* f# ^/ F
    * h# S/ ^8 T% }/ C  Z1 b
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    5 Z& r* H1 ~. ]* w. k9 V# c%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 1 Q8 H  u0 n1 u
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    * p( n* `( O. T- ^0 l        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));( K# q8 W5 C- k$ \8 J
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));; o$ I$ ~. g( Z7 ]0 w& E' K9 J

    - m( t9 v4 f$ C+ s8 x$ @) R        options noxwait;5 m( j; j( ~$ B/ v) U8 v* l* v

    1 L1 ^, N, f6 [" l3 Q% f! K( \        %local rc1 fileref1;3 s2 e' L$ @" h, V
            %local rc2 fileref2;
    % x/ F# p( B* {, T7 Y        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    7 q' K) p" l# I. a( t" r7 k( r9 ?9 u, B        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));' K* d5 `7 m9 V+ x2 W

    ) @8 G$ X$ x8 O0 ^        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;: h9 B2 W  y2 M: V7 |" j
                    %put NOTE: The directory "&Dir" exists.;
    . ]+ }# A( ~  A& P* w! N  g                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */! j% T% E6 j" D9 Z4 h: q0 R
                            %SYSEXEC del &OutFilePath;' L$ v  ?: d7 `3 g* [
                            %put NOTE: The file "&File" also exists, and has been deleted.;
    . U4 [& u  _/ w7 b' |$ E                        %end;  Q3 s9 b5 _* K5 N- u2 U. N6 @% I
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */7 I, k$ O( t+ x5 r9 m! j
                    %end;
    ( V5 G$ I8 k0 Y/ |! J8 F        %else %do;                /* 文件夹不存在的情形 */3 ]  y  M- H4 s
                    %SYSEXEC md &Dir;: A' b- v2 S6 [' t: N/ F/ o
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;) p% v9 @. K; f6 d
                    %end;
    : x& @4 Y' c% B  ^/ [/ }
    8 m& z! \( d" s. s! q: w        %let rc1=%SYSFUNC(FILENAME(fileref1));* U/ t# a# @# {  N
            %let rc2=%SYSFUNC(FILENAME(fileref2));
    : `0 p+ e: w8 x, n; V%end;
    8 b2 e7 G3 y* f3 [( _, }1 k4 k3 _- `' [0 B4 `
    /* 情形2:当输入参数OutFilePath不包含文件名时 */
    1 B# v9 E( [) K7 N%else %do;
      [; v9 X/ L2 Q9 A! {5 j        options noxwait;& ^7 b3 U' \  g1 f2 u" w* N
    + |2 a( j) m- p5 _3 g
            %local rc fileref;, ]. ?9 l4 R  R8 V% u0 g# T: \/ ]
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    ! r/ r: a2 i  U5 j6 F        %if %SYSFUNC(FEXIST(&fileref))  %then
    + |, z/ Z/ ~) g6 A; t; v                %put NOTE: The directory "&OutFilePath" exists.;$ k- f7 E$ D- j$ K9 W
            %else %do; 6 G2 L2 g+ ], ]
                    %SYSEXEC md &OutFilePath;/ A* f: I9 z9 {  J9 a
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;" Y" i9 b6 Q* A$ |
                    %end; 2 P$ M# ?2 `% E+ w. m
            %let rc=%SYSFUNC(FILENAME(fileref));
    # ^& w0 [, K$ j# T%end;/ _' t' C9 ^9 t
    ( ~" D( C5 l) u" R: Q
    %mend;# D: n9 H( h% F7 v( q6 x

    3 h. L( O5 j9 f$ k
      }& |3 y3 Q2 s& R- d%macro Demo();' _0 M2 A  J, Q- P* T

    + o8 [: o% E& p%ChkFile(d:\temp\data.xls);
    1 R6 e- t1 n# }. s$ Y5 Y) L3 m5 U) c9 q7 S( j% A# X
    %mend;2 Z, r4 i) ^' C; M; u
    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-6-15 00:37 , Processed in 0.409241 second(s), 52 queries .

    回顶部