楼主: Tigflanker
2905 13

[问答] 请问是否有人知道:如何抓取当前程序中的某串字符 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.9128
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

楼主
Tigflanker 发表于 2013-9-14 11:01:22 |AI写论文
100论坛币
请看11楼,大体程序我自己写好了。不过我仍然无法解决的问题是,是否非要将文件程序另存,再infile到dataset中。能否跳过这一步骤,因为我用的UNIX SAS无法另存文件,或者说很麻烦。。谢谢。   
----------  以下为9月14日原帖内容  ---------------
   
请问各位老师,有没这样的经验。这样的程序我在一个大牛的宏中见过,他是将程序头部注释中某行程序抓取。

例如程序中:**** 本程序的开发者:张三 *****;
那就能将该程序中的张三抓成宏变量。

我现在想这样:

*Current program;  
data _null_;
.....
proc sort .....
%macro abc;
proc printto log= 'd:\log.dat' ;
%mend;
*End of the program;

%MyMacro;

我的宏MyMacro打算在这里抓取那个proc printto并且取得后面的参数log= 'd:\log.dat' ;

请问大家,宏里面应该怎么写呢?

我感觉应该是先把目前的Program Editor的内容按截取的方式存到一个数据集中,再用trim加上类似find或者scan的方式进行查找。或者有更好的办法吗?谢谢。





最佳答案

邓贵大 查看完整内容

add above to your code
关键词:Program CURRENT dataset infile editor 程序 如何
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
davil2000 + 1 + 1 + 1 SAS程序员的帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Bye SAS.
若有缘,能重聚。

沙发
邓贵大 发表于 2013-9-14 11:01:23
  1. data _null_;
  2.         if lengthn(getoption("SYSIN")) = 0 then
  3.                 fullpath=  sysget("SAS_EXECFILEPATH");
  4.         else fullpath = getoption("SYSIN");
  5.         call symputx('pgm', fullpath);
  6. run;
  7. filename in pipe "type ""&pgm""";
  8. data _null_;
  9.         infile in;
  10.         retain re;
  11.         if _n_=1 then re=prxparse('/proc +printto +log\=/');
  12.         input;
  13.         if prxmatch(re, lowcase(_infile_)) then put _infile_;
  14. run;
复制代码
add above to your code
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Imasasor + 100 分析的有道理,怎么一个币也没有
B.N.F + 1 + 1 + 1 热心帮助其他会员
Tigflanker + 1 + 1 + 1 Thank you Prof. Deng. I'll try it later.

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

Be still, my soul: the hour is hastening on
When we shall be forever with the Lord.
When disappointment, grief and fear are gone,
Sorrow forgot, love's purest joys restored.

藤椅
Tigflanker 发表于 2013-9-14 13:59:43
我目前想到的一个办法是用

x “program file=‘C:abc.txt replace’”;

将全部程序先暂存到C盘的根目录,

然后再用infile按照“;”导入到dataset,但是我觉得这样做有点傻,而且如果是UNIX系统的话,没有地方让你存的。

Bye SAS.
若有缘,能重聚。

板凳
rongrong009 发表于 2013-9-15 01:49:54 来自手机
????

报纸
xinquan2008 在职认证  学生认证  发表于 2013-9-15 06:22:08
搞不懂,有没有发错地方~~~~
既自以心为形役,奚惆怅而独悲

地板
denglelai533 学生认证  发表于 2013-9-15 09:05:23
额,这个还是等高人解释吧

7
财经学友 发表于 2013-9-15 10:54:38
讨论程序语言应找对地方

8
gyqznufe 发表于 2013-9-15 13:00:56
可能发错了地方,不能及时求解不说,还……
知常容·容乃公·公乃王!
创新源于学、问、思、行、果!
言传身教,请用事实与数据说话!
舍而得之:福、禄、寿、喜、财

9
deng203 发表于 2013-9-15 15:13:25
等高人回复

10
Tigflanker 发表于 2013-9-15 20:29:28 来自手机
嗯?我在人大经济发过三十余帖,全部发到sas板块,全部都是sas程序求助,得到很多老师帮助。
难道,sas版块分出了程序子版?或是我没有把问题阐述清楚?谢谢各位。
Bye SAS.
若有缘,能重聚。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 15:33