楼主: playmore
11976 38

[程序分享] SAS基础宏之1:ChkFile   [推广有奖]

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16309 个
通用积分
7.1397
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1331 小时
注册时间
2007-1-11
最后登录
2023-12-15

初级学术勋章 初级热心勋章 中级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
响应Webgu号召,发布我做的一系列基础文件操作、数据集操作的宏
基本上能完成版上经常有人问到的大部分基础任务
我不像各位版大那样勤劳,可能隔三差五来一发吧

这个宏是用来检查指定目标文件夹或文件是否存在的,若存在则删除,不存在则创建,用于解决在dos中和SAS中无法创建文件夹的问题
例如可以在运行proc export前ChkFile下

  1. %macro ChkFile(OutFilePath);
  2. /**********************************************************************/
  3. /* 此宏的作用是检查指定路径的文件夹或文件是否存在。若指定路径包含文件 */
  4. /* 名,则运行此宏后路径中包含的文件夹存在但文件不存在,方便以后操作; */
  5. /* 若指定路径不包含文件名,则运行此宏后路径中包含的文件夹存在。其中, */
  6. /* OutFilePath是指定的文件夹或文件路径。注意如果路径中包含文件名,则  */
  7. /* 一定要写全文件名和其扩展名。                                       */
  8. /*                                                                    */
  9. /*                                      Created on 2011.9.29          */
  10. /*                                      Modified on 2011.9.29         */
  11. /**********************************************************************/

  12. /* 情形1:当输入参数OutFilePath包含文件名时,注意文件名必须带后缀 */
  13. %if %SYSFUNC(FIND(&OutFilePath,%Str(.))) NE 0 %then %do;
  14.         /* 得到OutFilePath中包含的文件名File和文件夹路径Dir */
  15.         %let File=%SYSFUNC(SCAN(&OutFilePath,-1,\));
  16.         %let Dir=%SYSFUNC(SUBSTR(&OutFilePath,1,%EVAL(%SYSFUNC(LENGTH(&OutFilePath))-%SYSFUNC(LENGTH(&File)))));

  17.         options noxwait;

  18.         %local rc1 fileref1;
  19.         %local rc2 fileref2;
  20.         %let rc1=%SYSFUNC(FILENAME(fileref1,&Dir));
  21.         %let rc2=%SYSFUNC(FILENAME(fileref2,&OutFilePath));

  22.         %if %SYSFUNC(FEXIST(&fileref1)) %then %do;
  23.                 %put NOTE: The directory "&Dir" exists.;
  24.                 %if %SYSFUNC(FEXIST(&fileref2)) %then %do;                /* 文件夹存在且文件也存在的情形 */
  25.                         %SYSEXEC del &OutFilePath;
  26.                         %put NOTE: The file "&File" also exists, and has been deleted.;
  27.                         %end;
  28.                 %else %put NOTE: But the file "&File" does not exist.;                /* 文件夹存在且文件不存在的情形 */
  29.                 %end;
  30.         %else %do;                /* 文件夹不存在的情形 */
  31.                 %SYSEXEC md &Dir;
  32.                 %put %SYSFUNC(SYSMSG()) The directory has been created.;
  33.                 %end;

  34.         %let rc1=%SYSFUNC(FILENAME(fileref1));
  35.         %let rc2=%SYSFUNC(FILENAME(fileref2));
  36. %end;

  37. /* 情形2:当输入参数OutFilePath不包含文件名时 */
  38. %else %do;
  39.         options noxwait;

  40.         %local rc fileref;
  41.         %let rc=%SYSFUNC(FILENAME(fileref,&OutFilePath));
  42.         %if %SYSFUNC(FEXIST(&fileref))  %then
  43.                 %put NOTE: The directory "&OutFilePath" exists.;
  44.         %else %do;
  45.                 %SYSEXEC md &OutFilePath;
  46.                 %put %SYSFUNC(SYSMSG()) The directory has been created.;
  47.                 %end;
  48.         %let rc=%SYSFUNC(FILENAME(fileref));
  49. %end;

  50. %mend;


  51. %macro Demo();

  52. %ChkFile(d:\temp\data.xls);

  53. %mend;
复制代码



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ChkFile sas基础 file 基础宏 directory 基础

已有 8 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
pokiller + 1 + 1 + 1 精彩帖子
双修阁主の + 1 + 1 + 1 精彩帖子
liujianfang + 100 奖励积极上传好的资料
webgu + 100 + 100 + 5 + 5 + 5 支持这个系列机继续下去。
jingju11 + 5 + 5 + 5 鼓励积极发帖讨论
yugao1986 + 1 + 1 + 1 精彩帖子
pobel + 5 + 5 + 5 精彩帖子
dxystata + 20 + 1 + 1 奖励积极上传好的资料

总评分: 经验 + 220  论坛币 + 100  学术水平 + 19  热心指数 + 19  信用等级 + 18   查看全部评分

本帖被以下文库推荐

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛
沙发
孽海情天 发表于 2013-4-12 11:08:27 |只看作者 |坛友微信交流群

使用道具

藤椅
semenljw 在职认证  发表于 2013-4-12 12:26:23 |只看作者 |坛友微信交流群
不错,顶一下!

使用道具

板凳
autozhao 发表于 2013-4-12 14:02:55 |只看作者 |坛友微信交流群
顶一个

使用道具

报纸
allord 发表于 2013-4-12 16:03:30 |只看作者 |坛友微信交流群
会成一个系列吗  

使用道具

地板
Imasasor 发表于 2013-4-12 16:04:51 |只看作者 |坛友微信交流群
将来会有一个系列吗
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

7
seajack 在职认证  发表于 2013-4-12 16:08:55 |只看作者 |坛友微信交流群

使用道具

8
英杰elite 发表于 2013-4-12 18:23:07 |只看作者 |坛友微信交流群
学习之,谢谢

使用道具

9
yger 在职认证  发表于 2013-4-12 20:19:55 |只看作者 |坛友微信交流群
谢谢

使用道具

10
beci426 发表于 2013-4-12 21:27:16 |只看作者 |坛友微信交流群
顶一顶

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 16:22