QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2116|回复: 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 关于宏的资源 希望对大家有用, G/ v1 L& J( `5 X7 \1 j8 ^; m
    在此非常感谢 某某论坛的资源共享。, b0 M' d. {: h/ U% ~6 u" I
    这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
    - G7 |# n9 N! y例如可以在运行proc export前ChkFile下/ O: @) m8 w$ ?" w  w/ \

    $ k' y5 d- q" |/ G/ Y%macro ChkFile(OutFilePath);
    - }4 @$ U) ~3 _  U/**********************************************************************/
    % \! V5 x# N) \, ^& l4 ^/* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
    $ @4 Z) c' S2 l/* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */, h/ i( \: M5 ?7 V) M
    /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
    9 b2 d; E7 o4 L/* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
    6 U' i* O9 b3 y* n/* 一定要写全文件名和其扩展名。                                       */! l0 J: S! N+ B8 g1 }9 ]1 ]
    /*                                                                    */( |% X- Y7 T4 F, X: H0 V, s+ Y
    /*                                      Created on 2011.9.29          */
    * A' L9 V/ d- n' S  p, }7 C/*                                      Modified on 2011.9.29         */
    . |5 g# K# V+ `' E1 t' ^/**********************************************************************/
    ! N8 C2 G. H. I+ H( W/ s. q( a1 q8 [' H$ r/ ]( A$ ~' b" b5 p# E
    /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */! I& x) {! C; g8 r' S) s
    %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do; 9 U1 C8 T, O6 s6 w& h, d, S
            /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
    # v& x4 s# x6 W! c        %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
    1 e- g1 f7 D% |$ l: l        %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));# F& [$ y* k9 G
    , d! H3 |5 y/ s1 z7 o; _; G
            options noxwait;3 ], @( {: t+ w1 E

    7 X5 R6 m; m9 K. t        %local rc1 fileref1;
    ; x2 i7 F! a( n1 r+ _        %local rc2 fileref2;% Q) w/ @8 f; g  ~5 I& y. r: z
            %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));& i( u( R7 q" V% x, x% E2 s4 {
            %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));
    0 A1 ~& Q  R& f% e% t
    7 F! S$ s% Q  h        %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
    0 {4 F) F9 k6 H  d0 P; G. L                %put NOTE: The directory "&Dir" exists.;
    , m2 `, `; m4 S# D                %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
    5 w, K% g8 {0 D8 P, Q                        %SYSEXEC del &OutFilePath;
    % i5 t- ?, [3 i& O: l                        %put NOTE: The file "&File" also exists, and has been deleted.;
    & v) A$ \" _" z6 w8 G; _' v                        %end;$ D9 P* U( ?! ?, _3 I( g! `
                    %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */* U) M* q- B6 T( \' f$ o4 J
                    %end;; F- w3 n1 I) b# t3 ^* O
            %else %do;                /* 文件夹不存在的情形 */9 _4 j. [0 k( V' x" m/ a
                    %SYSEXEC md &Dir;& b- g: Z1 x. q
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    0 G9 o! f# [9 n  a- F# X3 A                %end;
    - U" w3 _( ^4 m4 e$ o4 K6 U
    / D6 k/ Q0 Z( b5 s4 I2 ~        %let rc1=%SYSFUNC(FILENAME(fileref1));# {( E$ m4 @! U4 J
            %let rc2=%SYSFUNC(FILENAME(fileref2));2 f+ N; M/ l( T7 ~, d
    %end;
    & L5 R9 s/ F" p! {4 O* a
    $ {8 x6 K7 V, c/* 情形2:当输入参数OutFilePath不包含文件名时 */. }) D2 {+ L3 H6 Z" ^
    %else %do;
    4 A% _& z9 W  U6 G- D        options noxwait;
    4 e/ @5 d# Y9 R' @' O; t  I1 g/ W  g1 ^/ X! N
            %local rc fileref;/ u; a- W1 K6 F" N2 R: B
            %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));+ T# h" j! M, S5 Q1 m; S% I
            %if %SYSFUNC(FEXIST(&fileref))  %then# h7 d3 G% p# r& u5 F6 g( k
                    %put NOTE: The directory "&OutFilePath" exists.;, G% ~! O5 M' o& e! A2 M) k9 m* Q2 Q
            %else %do; " h3 G3 ?! E' l9 f& o( T
                    %SYSEXEC md &OutFilePath;) A  U* B4 t5 H7 z  g+ M+ V1 X7 C
                    %put %SYSFUNC(SYSMSG()) The directory has been created.;
    2 ^  W2 c' }9 {! K' x. T                %end;
    2 Z% a8 r- A# P9 c        %let rc=%SYSFUNC(FILENAME(fileref));# L1 {" Q( E0 P( L
    %end;
    0 ~3 R* w$ `- B5 ~) i; m! G2 H- g0 a2 c$ x' j9 V2 w
    %mend;
    9 Y. y& G. X  g2 R" j/ k6 ?' `
      _8 H" N( E7 u" H5 J. B1 C1 L; @$ T; U4 o
    %macro Demo();, ?6 |4 J- ^- h7 W7 H2 O

    ! h; V, x# F& l7 c* F* `, [# s%ChkFile(d:\temp\data.xls);
    : P' q$ h: c4 i# \9 @0 N0 d
    % i8 f# a1 |1 D: z6 I%mend;$ d/ O0 c1 L( g# g4 P
    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-10 03:23 , Processed in 0.605484 second(s), 52 queries .

    回顶部