分享
 
 
 

SAS命令应用高级技巧--如何从一批SCL,SOURCE文件中查找或替换某字符串

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

SAS命令应用高级技巧--如何从一批SCL,SOURCE文件中查找或替换某字符串

你是否有这样的麻烦,你在好几个CATALOG下建了上百个SCL或SOURCE文件,突然有一天因为系统变化,必须改动程序,比如有某个特征被大量程序引用了,那你必须一个一个的打开SCL文件,然后查找,然后在替换,想必你在那时肯定痛恨SAS公司的破编辑器了,功能弱智的像微软的记事本一样,如果你不幸不知道这样的技巧,那只能老老实实一个一个的打开,查找,替换、编译、保存、另存,然后在打开另一个文件,如此周而复此

呵,不过幸运的是你看到了这篇文章,从此就可以中气十足的对BOSS说,我绝对把那改动全部该过来了,没问题

好了,不唠叨了,言归正传吧

不知道你有没有用过大名鼎鼎的编辑器ULTRAEDIT呢,相信很多写CODE的人都在用它吧,确实很强的一个编辑器,今天我就用这编辑器中的一个小小功能,那就是查找、替换功能,它可是能在N多文件里做查找替换,我试了,打开上百个文件速度还是不错的,且操作非常方便

好了,知道有这个功能就行了,下面的问题是怎么才能把SAS CATALOG里的程序文件导出来呢?且听我慢慢说来

首先,我们知道,SAS提供了很多快捷的命令直接操作,比如

在命令窗口敲入一个【open 表名】,就可以打开一个表,而不用用鼠标去找这个表名,然后双击

要实现把CATALOG下的程序文件导出,导入 我们必须知道这些命令,如下

build scl文件 /*打开一个SCL文件*/

clear /*清除当前窗口内容*/

file "文件名" /*存盘当前窗口内容到文件*/

include "文件名" /*把指定文件的内容导入当前窗口*/

compile /*编译当前程序*/

save/*存盘当前窗口内容*/

saveclass/*存盘为类*/

end/*关闭当前窗口*/

cancel/*取消当前窗口所作的改动*/

还必须知道这样一个SAS系统视图,里面存放的是SAS的一下文件信息,比如CATALOG下有哪些什么文件啊,是什么样的类型啊,如下

系统视图sashelp.vcatalg

主要字段:

libname 库名,就是CATALOG的名字

memname 目录名

objtype 成员类型,比如SCL

objname 对象名,就是CATALOG下的文件拉

好了,知道这些就可以把你想要的文件导出来了,下面就是源代码了

/*导出*/

%let dir=g:\src\;/*要导出到哪个目录*/

data _null_;

set sashelp.vcatalg;

where libname ="要导出那个库" and memname in (要导出哪些目录) and objtype="要导出什么类型的文件,比如SCL";

length filename filename1 $200 str $2000;

filename=compress("&dir"|| memname || "\" || objname || ".scl");

filename1=compress(libname ||"."|| memname || "." || objname || ".scl");

str= "dm """ || "build "|| trim(filename1) || ";file" || "'" || trim(filename) || "'"|| ";end;"|| """;";

put str;

run;

OK,现在运行上面的程序,会输出如下结果

dm "build ***.scl;file'g:\src\***.scl';end;";

dm "build ***.scl;file'g:\src\***.scl';end;";

....

然后把输出结果拷贝出来,然后粘贴到命令窗口,运行,然后你就会看到窗口闪啊闪啊,如果文件很多的化会闪一会儿的,耐心一点

运行完了把,然后去你导出的那个目录看吧,是不是生成了很多SCL文件

咔咔,第一步大功告成

第二步当然是第导出的文件进行操作了,你想干什么就干什么把,如此强大的ultraedit,批查询、替换简直就是A piece of cake.

好了,假定你所有的改动都该好了,当然是要怎么把改动的结果写入SAS的CATALOG了,很简单,就是把上面的输出结果改把改把,然后再在SAS命令窗口运行就会把所有改动自动写入SAS的CATALOG了,如下

/*导入*/

dm "build ***.scl;clear;include '***.scl';save;compile;saveclass;end;"

看看,连complie,saveclass都给你做了,满足了把

此文至此OVER,请君自用,但望转载时注目来处,感激不尽 :)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有