QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2082|回复: 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 关于宏的资源 希望对大家有用
    8 \% r+ f- h6 T- u2 N6 n5 o 在此非常感谢 某某论坛的资源共享。% d  I6 {# \5 i0 s+ E; ^  N
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    2 h( s, v% y/ |; S例如可以在运行proc export前ChkFile下* d  K" b, ]% G* [$ {) Q
    7 U5 p- ], L3 C( r, L7 v
    %macro ChkFile(OutFilePath);
    . |% y0 I, T* {" R. T/**********************************************************************/
    0 h/ \+ a0 \9 T+ H3 x( |/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */8 e2 N6 t+ A; L) c% O) s2 F
    /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    : ^! A- a! o$ E1 g+ L7 @/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    4 _3 |! X$ R- G( E7 P/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */( Q2 _/ `$ W& D
    /* 一定要写全文件名和其扩展名。                                       */7 c' g8 P# J& t
    /*                                                                    *// T* X! U4 Q4 J$ ?& {# [
    /*                                      Created on 2011.9.29          */
    0 {! V. Y0 t/ ^% L( N3 \* V/*                                      Modified on 2011.9.29         */
    8 {9 V( H5 u2 L& c/**********************************************************************/6 F! U4 {  A* v
    " U% I' n2 g7 n$ I
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */: }5 |2 F& P0 X& k5 ^* S5 K( q. s& P
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    : h# v4 @. ]  x1 b        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */1 R+ k% b9 n3 r4 j3 V+ ]
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    2 d6 k) J5 j( i        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));3 C7 h- t7 W1 M7 W4 {& j) a

    * W8 y7 A  E  \# u3 b' f& ~        options noxwait;
    : p* ~, e9 L% {7 P( q$ ~0 m/ ?
    & {  |$ ~) R+ c* ?; [        %local rc1 fileref1;# N+ d# J" g( S( c7 ^+ q1 T6 L5 F4 g
            %local rc2 fileref2;. D0 u$ u* H1 R& B+ n
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    + |2 `1 s1 t) o- o        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));& U# I& Z! t' u2 a" A9 x6 F

    ; y0 E' g/ I  s& [! I        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
      E- n/ h$ [% a; Z                %put NOTE: The directory "&Dir" exists.;' k' V3 W4 p7 I7 X. E$ f! r
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */5 e. ~0 j3 m2 @) I
                            %SYSEXEC del &OutFilePath;# N4 q' F) ]' E, @
                            %put NOTE: The file "&File" also exists, and has been deleted.;+ s4 f. J4 h7 X7 d! v2 s- [! ~+ p. |
                            %end;$ ~: X; V: k" s3 f. Y8 O
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    3 L4 G1 Y  a) T                %end;/ q: e+ p( i; |2 M; i# l* |
            %else %do;                /* 文件夹不存在的情形 */4 I6 ?) N- a( t$ H, G
                    %SYSEXEC md &Dir;
    ; J, k( N! Z2 C- _                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    ' w; b$ Q! _  K" ?                %end;
    7 v. \9 A9 ^  s% n) d; \! @8 F% t  R6 [
            %let rc1=%SYSFUNC(FILENAME(fileref1));; O9 l; V1 z4 |2 L' u6 K
            %let rc2=%SYSFUNC(FILENAME(fileref2));! `" B, K% K; P* G: a: I) E
    %end;' t* a% i( p: t& U  ]

    # I3 _" h! ~4 ~# ^5 ]  g/* 情形2:当输入参数OutFilePath不包含文件名时 */" }% B/ ?* q2 M2 M
    %else %do;+ |2 F8 I& A  a( j# U! `
            options noxwait;
    9 r" l# W/ W% D. o  N: E! B) |
            %local rc fileref;  n' W7 f8 \4 m% h  H
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));, W/ R4 K: C' v0 y' ~) t4 y
            %if %SYSFUNC(FEXIST(&fileref))  %then
    0 ~: Y% C* @  j0 c3 Q7 O6 \' Z$ F                %put NOTE: The directory "&OutFilePath" exists.;
    ' c. z! C+ F$ Y" w6 V+ w        %else %do;
    1 H5 P# A8 y  c# @! y1 }8 [- r                %SYSEXEC md &OutFilePath;
    ) [( K9 ^% P4 n1 f- \) T% A  n                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    " H# p$ [7 z0 r( [6 g' P                %end;
    # K& m5 j* d( p; m9 F. a0 H, _        %let rc=%SYSFUNC(FILENAME(fileref));: A2 _! X% y: d. y
    %end;
    ) x" H7 R8 h7 _3 Q- F- Z, L* f; T1 {: {+ \* Y4 F( g+ O" X
    %mend;
    1 L0 J4 {) K) ^. `- R, p) l
    0 c# W, ~4 T3 y* L0 p
    0 j: Y. i! ^+ ~6 p7 ?7 j%macro Demo();
    " S4 ]2 Q! O* W+ ^  @' ?
    0 R& Z! I) A/ E9 A; D9 V%ChkFile(d:\temp\data.xls);
    1 c( `) d; D* ~# \: G9 b5 d+ h! o. E' p
    %mend;, g$ Y5 i7 ^' s# T$ x7 V* 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-4-13 02:16 , Processed in 0.448824 second(s), 52 queries .

    回顶部