QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1907|回复: 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 关于宏的资源 希望对大家有用& P5 w4 m0 T% X  f5 Q
    在此非常感谢 某某论坛的资源共享。
    ! Q9 U$ [% S. F1 V" w8 z: F这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题! l) C' A9 a$ x! _" G  _3 |
    例如可以在运行proc export前ChkFile下8 f7 C% J7 j* ]0 I- |

    2 c0 f  A, R; i" H%macro ChkFile(OutFilePath);
    ; @2 A& l! k2 A* X& z7 z" b/**********************************************************************/1 T* O& A* S( _# z+ s0 h+ `
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    - L4 r6 n8 U( p  H3 ~/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */& D: n; |; X* q0 r1 g
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    : ]* C! R. j+ C6 W! O/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */* Q" F2 w5 i2 d! r
    /* 一定要写全文件名和其扩展名。                                       */  @( M: @7 L% }$ ^: h7 G4 j6 u
    /*                                                                    */
    ( \- h# u+ k' G) L# N3 m/*                                      Created on 2011.9.29          */' S# {; B/ K; E1 `& s
    /*                                      Modified on 2011.9.29         */( Y0 N+ @4 D1 p2 F/ P8 }
    /**********************************************************************/
    $ b& y+ Y0 P8 n0 |6 x
    . S" Z! B. A8 R2 ~/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    ; e$ ]7 B% O8 S: X%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    8 Q! d3 [: j/ M8 d! p$ S6 \+ j        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */& A! T. _* ?/ r: Q2 S
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    & E8 f1 A" T5 L        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));& C0 L+ I; I# U4 |$ M
    3 f1 t4 R+ e. J
            options noxwait;
    8 u/ `0 {9 x: l2 ]
    3 P, c; E# G' f$ n* B0 s0 _        %local rc1 fileref1;
    9 E8 ]2 T. j: c6 s+ h# @! `        %local rc2 fileref2;% N# {. D  i( \; S
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    " t# I: F: X: J/ K9 a+ ^" u        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));8 |: u! c' n, h# I
    1 r% r$ t2 l6 o  D
            %if %SYSFUNC(FEXIST(&fileref1)) %then %do;  ?* S- Q6 U) G( N' d
                    %put NOTE: The directory "&Dir" exists.;* H" i* Z$ p, M/ U2 ]5 g5 T
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */7 {4 k  H# Y8 O
                            %SYSEXEC del &OutFilePath;
    3 l, h, ?5 ?3 [: {7 d, \! s9 U. ]% O1 ^                        %put NOTE: The file "&File" also exists, and has been deleted.;
    - K& q2 Y7 s. t! ~, g$ n; P4 W                        %end;
    7 T; Z( m( [/ z$ ^4 I% U                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */; f2 w* ^% I+ U
                    %end;
    + I) S: W! b7 V3 O) Q* W        %else %do;                /* 文件夹不存在的情形 */" }0 L, P/ D+ b& b
                    %SYSEXEC md &Dir;! u' ]' a% F( W1 A" a
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    6 ?. p2 Q1 W. ~- l, H) T                %end;
    9 ~2 N& b- {. C+ e% k' I; d- P% g5 z) {0 z
            %let rc1=%SYSFUNC(FILENAME(fileref1));6 v% H$ p: `; I9 X/ @
            %let rc2=%SYSFUNC(FILENAME(fileref2));
    / x; L0 x# R  n% v, w& m* Z%end;
    ) T) @2 C; h" a. A: z$ F
    , ^6 n% y, e* {$ n6 D2 ^/* 情形2:当输入参数OutFilePath不包含文件名时 */
    . ?5 j* [# b: s! A%else %do;5 o: s8 z. h: A& O; g" O
            options noxwait;; L- w0 l) k2 x" |/ W

    0 ?/ N9 w. h1 U        %local rc fileref;
      d4 D& t0 Y7 @  j5 _        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));4 r0 D9 i5 G0 F
            %if %SYSFUNC(FEXIST(&fileref))  %then: V1 S! V6 p" T) y5 z; U' Y
                    %put NOTE: The directory "&OutFilePath" exists.;
    6 I$ P: C' b* f) j8 n! T        %else %do;
    & k2 E  F0 H8 l1 P  J( o  L                %SYSEXEC md &OutFilePath;
    , g% k  Y" Y$ l4 R                %put %SYSFUNC(SYSMSG()) The directory has been created.;& Z- M8 `- a  x9 x3 r% {1 a0 B8 F9 Y
                    %end; 6 {$ n3 {2 ~  f$ ?7 O" R6 R  K
            %let rc=%SYSFUNC(FILENAME(fileref));
    + }' H8 L3 l0 M( d9 W6 b$ t' y8 o%end;
    - H' @, g* P$ r5 y7 ]. O8 @; |8 w  B- `- U$ ^3 O5 x9 _6 x
    %mend;
    8 ?, r; U2 V" J- D' }
    6 [/ U: I& O& ?% U7 b8 d; C' G4 X6 `/ f4 _! l' h, Y' U
    %macro Demo();
    6 t8 O8 R; I5 B3 v8 d! H1 f2 l: Y' F' _  m9 t5 {
    %ChkFile(d:\temp\data.xls);- N  R7 M7 p1 J
    3 c8 U% n+ w$ r- y7 s8 K. R1 B
    %mend;
    ' q# o3 G, S: O. V9 Z" ~
    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, 2025-8-6 06:37 , Processed in 0.423083 second(s), 51 queries .

    回顶部