QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2149|回复: 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 关于宏的资源 希望对大家有用7 c' I$ \3 G6 b; r: p) O
    在此非常感谢 某某论坛的资源共享。
    ! ~6 F* S& Q4 j. ]7 r1 O这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    0 L9 {, ~( Y( i, x& l* P例如可以在运行proc export前ChkFile下2 f" I" S5 \9 r8 a+ u

    7 G- l& q: h/ O' a8 Q- N- `8 V6 s%macro ChkFile(OutFilePath);
    8 C& ~+ O' H* v; E/**********************************************************************/7 Z) `( B4 e. p3 `0 D  h
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    ( H! E. G- H$ l) j' A5 O, p. |/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */9 f! r2 ^7 o: P" V( l$ t* K
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */2 w& z0 I/ C/ C, U6 z3 q
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    ( ]! U* H4 W* `3 Y/* 一定要写全文件名和其扩展名。                                       */
    ! |; ~- E. \% W+ E, w% ^6 z( |. a/*                                                                    */
    . w, T/ U+ P, N2 ^+ y1 @/*                                      Created on 2011.9.29          */- w( |4 L. |" @1 t: @
    /*                                      Modified on 2011.9.29         */& f" K0 H* w& s6 K
    /**********************************************************************/
    / L0 l+ }3 M9 n4 v+ ~3 p% L2 u) A( B* \, U2 r
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */$ w8 p: F! L0 K6 z  `
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    6 z6 I$ U6 \9 Q% q+ Z$ }        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */1 G) ]) A4 @& ]- i0 ^6 b
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));& Z5 r8 A5 P1 z# w+ |/ a' W
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));
    3 x( Z: b: e- q  G$ J% k0 v$ g/ i) f& ~9 U/ C7 N5 Y* p
            options noxwait;
    - [4 r5 ?3 P# d5 {. Y7 X4 h- e2 x  G2 T2 M9 C: T% j
            %local rc1 fileref1;
    7 f; b: v9 y& k6 f        %local rc2 fileref2;8 f  C- `- {1 V/ i" |
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));( b! V4 [4 u8 T% a
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));, B5 z  f/ c, U; T( o. j. T

    4 t( _# C) N' S; v' Z        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;! m' M" L7 C' w; h0 }! S: o( n1 W( F
                    %put NOTE: The directory "&Dir" exists.;: x/ Q; _* t- u5 v( z
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */2 M4 V- d3 o9 J6 y4 [
                            %SYSEXEC del &OutFilePath;) U$ A( \* ]7 y" t4 z$ a
                            %put NOTE: The file "&File" also exists, and has been deleted.;" u& d7 a# B% A- o9 ^
                            %end;) s. e' }. N3 a. s! W; v
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */- H6 X% M0 C# s5 u
                    %end;, W, Z0 Z& D! A& B( V4 N
            %else %do;                /* 文件夹不存在的情形 */
    : C& o  L; E: d  C                %SYSEXEC md &Dir;$ X& ]8 A1 u/ s) r: A
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    3 f" a$ W. @2 q3 C1 m# K% M* t+ r& ?                %end; , `% H  C  {! T: m/ w! M
    : |' }! I7 G, b0 K. q
            %let rc1=%SYSFUNC(FILENAME(fileref1));* Z7 S! O7 w9 y6 e' l. _/ ]
            %let rc2=%SYSFUNC(FILENAME(fileref2));
    ; @/ F0 U' [5 q, O9 Z0 c7 |9 e7 H" h%end;/ E  U0 b9 L/ `9 m) b# ?7 ^

    + i( k1 i8 l. ~& F7 [! t/* 情形2:当输入参数OutFilePath不包含文件名时 */( c* C9 Z5 @. i. c* i/ ?" M
    %else %do;4 r# P4 P$ C" Y9 U* x: J
            options noxwait;
    7 S5 ?# t2 c! D8 s* {
    " _, \4 j1 t- V2 e1 b7 W+ y4 F! O+ E        %local rc fileref;
    8 T& o/ r8 S( {! m        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    $ ~+ N. M/ n5 n3 P& L        %if %SYSFUNC(FEXIST(&fileref))  %then$ i$ V3 T- J# G3 i0 ~
                    %put NOTE: The directory "&OutFilePath" exists.;
    + m8 x  ^) `1 B5 F        %else %do; * P* S3 g& E" S8 a
                    %SYSEXEC md &OutFilePath;+ D9 l" `: _( B: s( k
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    : ~2 X7 Y7 p0 a- G                %end;   O, f" f  X3 R2 d7 b! B
            %let rc=%SYSFUNC(FILENAME(fileref));; f" j6 d" `, Y- a: Z5 G
    %end;
    & M5 T/ s/ g, V3 `4 D8 i3 Z) w( Z9 r- Y& U1 F' u. c" x5 S1 j8 t. F0 Y1 @: [
    %mend;
    ; Q# `$ o( j) i2 R8 J9 W7 z) ]$ [6 y/ Q! a, l* h, a. ]

    ; A8 v" o4 N+ E/ X%macro Demo();
    - f- z* r' E: l4 ]& F: B% u  z9 F( I2 u/ \, i
    %ChkFile(d:\temp\data.xls);
    * R- Y# \! U  x7 S/ w5 [! U. q2 V4 J7 D' H
    %mend;/ n" ]5 V, I  y
    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-9-13 04:44 , Processed in 0.374094 second(s), 51 queries .

    回顶部