QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2130|回复: 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 d7 l6 L6 {# n: x$ g& @5 n
    在此非常感谢 某某论坛的资源共享。1 [% K) }7 p3 [8 h/ K
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题" T- j+ t# L7 C4 K" e
    例如可以在运行proc export前ChkFile下
      Y4 E9 n  h% d3 r: s- @) m1 m4 t9 e# n% Q+ y8 l
    %macro ChkFile(OutFilePath);
    ) w- a- E+ X# n2 m8 |! t1 A/**********************************************************************/
    1 H2 \/ v3 Y! S/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    - J7 ~# l( S# z4 A1 U/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
    ! `3 h( ^+ U9 g+ W/* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */& l3 P, @9 p- e
    /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */  e# y7 J( b* Y
    /* 一定要写全文件名和其扩展名。                                       */
    8 S' u' {9 v7 M4 R( {& J3 m/*                                                                    */+ ~) l- o* b7 w1 U
    /*                                      Created on 2011.9.29          */
    * j: q! A: ?& J3 }/ F/*                                      Modified on 2011.9.29         */. k2 N: {* b; C% g- ^& q
    /**********************************************************************/
    2 }* J6 Z5 o5 {2 `! @
    1 w" o8 |7 Z( e4 v# P# T/* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */! t5 q1 D5 `, x8 S/ u! ~
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
    " z: O* k; J% R. b. f; C- {3 ?6 }' {        /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */& b, s; w( d4 f+ p0 S
            %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));' f1 ~) i: F) [! H. L
            %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));$ h  r. r) Z5 S) n0 r

    ; b' C3 f3 g! z- b5 }! ~        options noxwait;4 x3 L; d9 m+ @$ D% ~2 |( N" ^
    8 {% \+ b: \' K6 d
            %local rc1 fileref1;" @: q( X: W; j5 r( N3 P/ C! i
            %local rc2 fileref2;
    : Q; Y( u. G) f8 c# N        %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
    " O/ a' t! |) e% o  h        %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));6 J' q, Q: y" B2 A0 u/ N6 x! h4 ^

    / W8 W( c. M- }, L        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    ( r* r, \7 b9 s$ N                %put NOTE: The directory "&Dir" exists.;  q9 D1 |% N+ I; K5 [
                    %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    # @1 w. |/ B# l2 [) k+ `2 X                        %SYSEXEC del &OutFilePath;
    3 X9 j: |7 i: N9 l) G% ]                        %put NOTE: The file "&File" also exists, and has been deleted.;
    * ^8 @& l6 e1 b/ l, k5 ?                        %end;
    % f4 Q* [/ W4 H                %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
    7 K; t9 f, R1 }9 M                %end;
    - v6 I* p+ V; \4 e! f& _/ j9 q        %else %do;                /* 文件夹不存在的情形 */
    0 i( ?2 _( t$ ?                %SYSEXEC md &Dir;0 |1 ]9 m! U2 z  U& e
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    - N7 d/ }% p( b                %end; * u; A# E" c/ x1 v$ ~8 {2 h
    ( ^6 m6 x6 q8 u6 R/ W. `, w
            %let rc1=%SYSFUNC(FILENAME(fileref1));' v7 `  c( p6 v6 f' V* ~' A
            %let rc2=%SYSFUNC(FILENAME(fileref2));7 f* \7 l! V  S" P
    %end;$ v5 W0 F' {4 a) k! I( e9 b

    " O7 }. q, F: L) H3 l/* 情形2:当输入参数OutFilePath不包含文件名时 */* O1 H! Z' D2 ~5 k
    %else %do;. S8 q/ Q+ j; o" F" j: K
            options noxwait;
    4 L! X, A3 x" m, L$ [
    . ?9 a" r$ d6 U        %local rc fileref;3 J  P7 Z3 @( z$ j% q4 I# M. W
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));; Z" J$ p3 A' n3 }: l9 g% {
            %if %SYSFUNC(FEXIST(&fileref))  %then
    6 I, [9 O; M" a' I* W; i                %put NOTE: The directory "&OutFilePath" exists.;
    6 l, R. ^5 u6 R, C# A3 y        %else %do;
    ! b5 e) U- y' u+ A5 Q                %SYSEXEC md &OutFilePath;
    2 p5 M; M- C! S4 @0 E                %put %SYSFUNC(SYSMSG()) The directory has been created.;
    , I# P1 I, H/ z                %end;
    * F2 ~9 l7 F+ N        %let rc=%SYSFUNC(FILENAME(fileref));3 [1 k+ Y; r/ Y1 h. J9 L( Y" G, L
    %end;7 ?# I5 j* ^0 L, n) [
    # \% r6 q/ a" K4 r/ b) s
    %mend;& M1 ?5 d* H7 l2 E0 v; t1 A: I

    2 j0 e) {# p# x& N% g, s' ?$ y! n9 U4 V5 F. f
    %macro Demo();8 Y" G! ]& W: y2 d, I: q
    ! e7 ?- h$ L+ Y* e, y
    %ChkFile(d:\temp\data.xls);
    / x. l% o% S! @( i, c7 K, [# Z0 C9 |* a0 H
    %mend;
    # ?) J% F# a  o1 j3 X
    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-8-1 14:20 , Processed in 0.443178 second(s), 52 queries .

    回顶部