QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2126|回复: 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 关于宏的资源 希望对大家有用+ a/ E1 U$ ~! Q2 @
    在此非常感谢 某某论坛的资源共享。
    7 E* M+ G3 F* _4 w8 W这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    7 A* U% T' t$ m: a: Y例如可以在运行proc export前ChkFile下: N: K  W) D% s- H4 T2 u' ~

    6 _4 r# ^8 N9 M4 \%macro ChkFile(OutFilePath);0 p0 f/ Q# f" U9 d% v
    /**********************************************************************/
    0 f4 a% _$ U& [" o, e/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */1 D2 O6 C7 O8 l1 ]: N
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    4 Y4 u  {0 Q! F, H/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */5 p; c! I0 {' w$ G
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */# F! F( @  f' @3 D. |% r) P2 R
    /* 一定要写全文件名和其扩展名。                                       */
    6 C" F) k+ @0 R0 z; b, C/*                                                                    */# P8 r6 V6 i6 S
    /*                                      Created on 2011.9.29          *// ?/ H& y) Z2 }% t1 G! O+ a1 ?, |: Y
    /*                                      Modified on 2011.9.29         */
    ( [1 r4 X. W& m  i* g% G/**********************************************************************/7 i$ [; R" r3 @. x: B* n9 I* W

    $ _9 X' ~; S3 [4 ^/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */  X" k3 f# I! S( Y, t
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; # U0 F: T" ?7 l9 Y5 H9 O% Y
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */# d' C$ u: g5 D5 x; B9 \, t% l
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));% P5 i5 C2 S. p
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));/ f0 a# C4 b/ @
    + F% }& y% K+ u! i# ~( ]) ~
            options noxwait;! M( g3 o6 V7 M# v* o
    . b! m2 `& M  Z
            %local rc1 fileref1;
    , t" D. n5 d" g. @% k        %local rc2 fileref2;  C) J# ?* ~' |; w$ x
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    0 g3 r& Q5 E$ y  p0 i8 |        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    , F7 P! M8 f. J
    2 h! Q, i1 c! z        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
      n6 i. T0 a. [& Y( ~' O- H                %put NOTE: The directory "&Dir" exists.;
    0 F3 ?: ~& F. l                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    0 z' T3 |6 k  c; `+ q                        %SYSEXEC del &OutFilePath;6 C# \  n( e4 ~% @% p$ ^
                            %put NOTE: The file "&File" also exists, and has been deleted.;- n) I, w( L* C7 l# v
                            %end;
    + d+ m8 I8 }/ ~0 ?* ]" U                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */) T8 E' @/ n' T3 j
                    %end;
    % R3 F& N5 q# G6 u' A  G( |" H8 d        %else %do;                /* 文件夹不存在的情形 */
    9 Z9 `6 ]0 S) W                %SYSEXEC md &Dir;+ ?5 V' }; w/ V3 r) y2 u/ y+ B6 x& D
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    3 |" z1 P& N$ F: z6 F                %end;
    & P! a3 ~  i6 _3 @3 _5 m) f' A
    ) g6 l! V( E# _" \  C1 o9 y2 F        %let rc1=%SYSFUNC(FILENAME(fileref1));
      H. ^) L4 ]) W1 f        %let rc2=%SYSFUNC(FILENAME(fileref2));: g6 j4 N3 T( r! J0 e7 ^3 b+ p$ g8 o
    %end;
    & h; j; Q0 x, P' A
    % X$ G$ N9 l: U/* 情形2:当输入参数OutFilePath不包含文件名时 */! a4 D. U" e. C( s
    %else %do;
    # w! P: h" k0 e, H) w# t        options noxwait;
      |+ F" y! w* p% E8 s, E! Z. r8 ?* I5 Y* ?3 M8 _+ }# ?8 R
            %local rc fileref;1 A  \2 h" W. o+ K+ |4 {5 ~
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
    # G" L) C& Y5 g6 t+ b! j' C( O        %if %SYSFUNC(FEXIST(&fileref))  %then6 b7 a7 C1 s/ E% G& c
                    %put NOTE: The directory "&OutFilePath" exists.;
    3 \6 k! K" I5 e" M: [  }        %else %do; 1 }; L9 z4 ~+ t& B# d
                    %SYSEXEC md &OutFilePath;
    1 h% p  ^' w8 I- A, [; y8 o                %put %SYSFUNC(SYSMSG()) The directory has been created.;9 q% Q9 Z! S, A3 K0 Y
                    %end; , T) P/ M5 I, o. r. p2 O
            %let rc=%SYSFUNC(FILENAME(fileref));
    3 m: U8 r  r8 A%end;" j  p9 b$ q; J' d
    % ?0 m9 ~3 k: O0 \
    %mend;
    : ^; m8 v0 {* q" Q+ O3 A) q8 r+ g/ J2 n" ?$ g
    % p: N3 e& x  \% V# r4 J
    %macro Demo();( I& v9 g: V! H2 e7 e
    9 ^$ z! _/ z& v4 G' @+ ?" v
    %ChkFile(d:\temp\data.xls);9 J. j! Z: k: L+ L

    8 O9 s% d9 L" D5 M1 M" {+ R%mend;
    " K( L6 V+ [; V3 @. `
    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-7-31 04:06 , Processed in 0.660564 second(s), 52 queries .

    回顶部