QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2148|回复: 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 关于宏的资源 希望对大家有用
    ( Y: U& _5 n; h! C3 l7 B, K 在此非常感谢 某某论坛的资源共享。& a' Y' _4 g* I/ D- F
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    " u4 h  L, G! l- S& p: {例如可以在运行proc export前ChkFile下
    2 T' k2 Y# y. r$ ~- o
    8 i) i- ?; |3 E2 h5 @5 t* r2 S" S%macro ChkFile(OutFilePath);
    , d% \4 h+ w% N4 m' `9 r  ~$ _/**********************************************************************/0 H$ S, Z1 w' P- X7 l7 n
    /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    5 W9 N( k2 W5 x+ w  e/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */- o/ y* ], N# y5 r! \5 S: }
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */- T+ Q5 Y$ j  K* C0 K+ F
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    5 R3 Y1 h9 \* M1 k& a/* 一定要写全文件名和其扩展名。                                       */; u# _, Y" f& c' w# P
    /*                                                                    */) l1 F  c* [. b0 `
    /*                                      Created on 2011.9.29          */
      Z0 E3 o3 S% ^1 B; U% y/*                                      Modified on 2011.9.29         */
    9 A4 p$ C( n4 o0 p0 f/**********************************************************************/- i: Y# b& B' p. r: S- j+ L- V
    ' [8 q: m$ d6 T5 K
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
    , [+ z. {! F. l+ c%if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 3 S  S$ g5 N! y/ `2 _7 D
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    0 Y2 Y4 \4 N/ h# j$ M, H        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));0 A' d% u7 C* S( @9 r9 N
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));+ d6 m+ g7 b! B% i! H9 m

    2 A' R; H. ?% f! T8 [        options noxwait;4 U0 q( F+ S* V! Z
    " f  v/ y1 `5 I9 @# v* A. S
            %local rc1 fileref1;
    , {! K2 \: N6 F        %local rc2 fileref2;
    5 i& z/ V- N$ f& U0 \2 i8 H* l$ u        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    8 G: q5 ]/ p4 G6 A0 i        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    ) t+ I1 |- ?  i5 d- e1 c  N
    1 f& B# z4 c/ b8 K# C4 ^8 F. i" H- S        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    , R( F: j% D* c$ x3 a9 Y# r                %put NOTE: The directory "&Dir" exists.;8 H+ o) c9 l5 e
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    ( Z* h, l6 m$ ^  s, [& e+ ~- K                        %SYSEXEC del &OutFilePath;
      ~! @; }! \- X0 H+ t% R/ O                        %put NOTE: The file "&File" also exists, and has been deleted.;
    6 a: q2 {  a- U1 `6 n; d! p- _0 @                        %end;
    & E: T3 Z/ E( k& }$ }6 z' U" c3 W                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    - p$ n% _, U6 I                %end;& b. P7 e/ o+ E3 x0 I1 x1 g
            %else %do;                /* 文件夹不存在的情形 */
    " b3 U6 y/ N& k9 O/ f% r                %SYSEXEC md &Dir;
    ( r/ s0 U2 U+ d# u* b; ^. u                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    8 p/ }" g) R0 q! i+ W( J, W6 |4 E                %end;
    $ P( Q3 D+ y* g; R
    . @. B& Q! r) d2 b/ [. \        %let rc1=%SYSFUNC(FILENAME(fileref1));
    . R' Z' h( P. J! {! G9 _4 b, Q        %let rc2=%SYSFUNC(FILENAME(fileref2));" d2 }. I; B9 Y0 d
    %end;* ~# C: x3 O, F9 b+ @, w5 [

    5 f. {3 A. L4 C/* 情形2:当输入参数OutFilePath不包含文件名时 */4 [& A% K" J% W3 _4 @& D: h
    %else %do;
    ; ^# o* |2 V* h! _/ }: h; {7 ~        options noxwait;
    2 E9 t8 H" ^, x* f: I, k& M% ]! C; W
            %local rc fileref;
    ' i2 P& c# k' K6 }. D1 \. X        %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    ' w! {( n- @" P# V% ~) N  K1 b        %if %SYSFUNC(FEXIST(&fileref))  %then
    . }$ N0 Y( O  F* C% `; ~                %put NOTE: The directory "&OutFilePath" exists.;1 r& a  g0 I/ c$ K% O
            %else %do;
    5 i1 d5 l" W( ~+ l                %SYSEXEC md &OutFilePath;+ b) T, u4 }  N( C) Y# W
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;8 h* U( Y6 F3 P+ x
                    %end;
    ) w! l: e, n3 j/ S- K& S' `- N        %let rc=%SYSFUNC(FILENAME(fileref));
    6 W/ y! w, G8 u& ?' h/ k% F% ?%end;) x& b& ~' [# ?2 e
    8 z+ i: X/ H- [) N- P
    %mend;. u) C* K6 L6 K4 f0 a
    8 J" [+ v/ _( T6 b# ^

    : _9 s: l1 _, r& u$ @& _%macro Demo();
    * r3 t# J0 x5 ]! S! j. m. n3 @+ b6 G9 l# ]( x$ }/ C
    %ChkFile(d:\temp\data.xls);+ T/ o+ i* b7 Q5 [8 E+ ^

    6 n: [# {* ]$ O- \%mend;
    : \! `' Y7 s* k* Q/ U9 m* W1 c
    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 03:42 , Processed in 0.447958 second(s), 51 queries .

    回顶部