QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2086|回复: 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 关于宏的资源 希望对大家有用, [9 |! x0 \# C/ _" y
    在此非常感谢 某某论坛的资源共享。) \5 n8 u& l6 t1 _8 X, i" Y+ w
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    # O" [) \! p: {% y/ l' b/ R: }例如可以在运行proc export前ChkFile下
    " g" X7 H( ^1 C# X/ }
    ! D  \, f) p; J0 I1 h4 W%macro ChkFile(OutFilePath);
    8 ~. l+ A# W" s, v" o- S" U% _. c/**********************************************************************/1 N0 a* }7 i' V0 f' {7 S0 Q! B
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */! t7 ], J- O4 }- u6 Z  o
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    ! Z/ M2 G' O2 `/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    ! A! b7 e/ @% e# O) {; L/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */; P( O! y3 Y# I0 e( e) V8 [. _
    /* 一定要写全文件名和其扩展名。                                       */
    " ]/ v4 x1 Z0 o, g/*                                                                    */
    % ^  m! u* j0 h, i2 c" M4 C2 e, |+ S/*                                      Created on 2011.9.29          */) K' u! a7 G( o  q
    /*                                      Modified on 2011.9.29         */; A  I* t% s, n3 ^
    /**********************************************************************/; p5 G3 M" P" S' _
    - j0 R; {% G5 Q, d( t1 h; R
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */. j0 g5 R. k$ E; j* u2 O2 F
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 1 K8 I6 w& ?. u$ E; Z
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */$ O8 y1 @/ T- u& |5 P1 W0 Z
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));) |% ~5 u7 H5 f
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));! a# R6 g) o  q  M8 s1 k, D! a
    7 t9 s7 h' u3 q! I
            options noxwait;' M  N! H4 I6 |/ C0 @" x
    $ F: o; E& E3 {7 n" P
            %local rc1 fileref1;: L3 @" f' T  ]
            %local rc2 fileref2;
    0 N" L; k. [, e4 D' N1 ~$ Z9 E; B        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    . @4 B  H: h) G- i) M5 `! C        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    . n( y9 K# I8 w8 G0 C+ t6 Q
    8 R$ y* l4 H# f        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;1 z% w2 c8 M2 V5 R/ R. h* l/ [# |
                    %put NOTE: The directory "&Dir" exists.;" G2 J! d( |1 T# H5 R
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */6 s: `( @& F1 l4 x% Z2 [9 k8 Q0 P, X
                            %SYSEXEC del &OutFilePath;' H  k& v/ T4 k9 d8 ?
                            %put NOTE: The file "&File" also exists, and has been deleted.;
    ' Z5 u& B* ]" u                        %end;
    # K! y8 e! F4 l5 P1 H5 R                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */& o5 I! X! i0 `$ @, _
                    %end;
    ' @9 S3 v9 J9 ]: l        %else %do;                /* 文件夹不存在的情形 */( r& t) }. {8 e6 e
                    %SYSEXEC md &Dir;; W, W0 p* c/ ]3 \$ u: ~9 x9 X
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    , V& K. H. G  k: ~9 }                %end;
    4 P7 b: s+ Z# v8 V
    " }6 ~3 c$ a  E# {3 y* o; o- G) w) X8 D: L        %let rc1=%SYSFUNC(FILENAME(fileref1));5 B' Q. R7 |8 S. q* @" B
            %let rc2=%SYSFUNC(FILENAME(fileref2));
    # Z0 v7 I  t/ `# l%end;
    $ v+ g+ b) h- }- T5 K3 o( Y+ y) s1 J( o7 t0 m% ?8 \
    /* 情形2:当输入参数OutFilePath不包含文件名时 *// U- f- y2 d# f9 y8 X
    %else %do;
      l, s6 C; c: d4 `, l        options noxwait;
    / r) Y. O+ q3 f" U0 i% ^! t) O2 S; H0 r" C
            %local rc fileref;0 D" n( U6 B) v2 K( j
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    8 Z+ i6 p1 f* O        %if %SYSFUNC(FEXIST(&fileref))  %then
    ' v" z% u4 A. k                %put NOTE: The directory "&OutFilePath" exists.;  c1 Y+ W* o# {/ r" V6 [
            %else %do; ( h1 T: R- h6 m9 h! W
                    %SYSEXEC md &OutFilePath;
    % }2 z( V4 O! @  E- u+ L                %put %SYSFUNC(SYSMSG()) The directory has been created.;$ Q4 T! A4 j3 m- B- v# Q; a: F
                    %end;
    * E! H% s+ I6 Z8 _0 a2 J: {, }        %let rc=%SYSFUNC(FILENAME(fileref));
    # b0 u6 _" a1 {3 C6 K" E' k3 Q%end;
    ; ~% i5 t# |* u+ a2 v! v: ^. G/ D+ n5 b8 d% S, }% w7 ~% O: m
    %mend;
    . s1 l& x  G9 ]
    $ B9 c; Z" N6 m
    8 G# x4 B2 ^$ X& W* s, W- s$ n%macro Demo();
    . [/ A1 o' a" Q$ c% F% l/ m+ j
    8 v2 D9 X# ^% R! L%ChkFile(d:\temp\data.xls);
    1 [8 ^& _; ?: E. L# M" N9 U0 W6 W" m7 f5 N+ _' r
    %mend;
    / f: D5 }' _0 b" d. c5 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-16 16:30 , Processed in 0.390659 second(s), 52 queries .

    回顶部