SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2747|回复: 15
打印 上一主题 下一主题

请问如何能够进行“程序外”的输入

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-3-3 11:40:32 | 只看该作者

请问如何能够进行“程序外”的输入

请问macro可以让用户在运行SAS程序时,从某个interface进行输入,比如指定要打开的文件路径或给某个变量赋值?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2006-3-5 21:14:50 | 只看该作者

to maurice

当然可以,比如用SAS/AF,C,Java等等。
关键是你到底想干什么,需要把需求描述的详细些。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2006-3-5 22:40:24 | 只看该作者

to shiyiming

下面是我的一段程序:

libname PADS "E:\work\Phamarcokinetics Assay Data System";
PROC IMPORT OUT= work.ORIGINAL
            DATAFILE= "E:\work\Phamarcokinetics Assay Data System\miso20060104.txt" /*locate the file of the raw data*/

     DBMS=TAB REPLACE;
     GETNAMES=NO;
     DATAROW=18;

运行时每次import的文件名不同,因此需要都程序进行修改。我希望能让运行程序的人在程序外给这个文件指定路径,比如用一个popup。

此外,对于一些变量的负值我也希望以这种方式进行。

请问有什么办法吗?

我研究了一些SAS macro的reference 发现%input好像可以用,但是使用的时候却出了问题。我的程序如下:

%macro test;
%put Enter your first name:;
%input first;
%mend test;

data test;
%test
run;

还请指点!谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2006-3-6 10:54:47 | 只看该作者

to maurice

你先看看 <!-- m --><a class="postlink" href="http://support.sas.com/techsup/unotes/SN/001/001887.html">http://support.sas.com/techsup/unotes/S ... 01887.html</a><!-- m -->

如果交互性要求非常高,一般我们都用SAS/AF做个界面给用户。如果文件名有规律且交互性要求不是很高,可以用程序批量自动读取某目录下的文件名。
用%window也是一个方法。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2006-3-6 11:21:38 | 只看该作者

to shiyiming

真实有趣,这个宏竟然只能在program editor里运行,却不能在enhanced editor里运行。谢谢管理员!

我再研究研究AF吧。

请问EIS使用时,电脑让指定repository path是什么意思?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2006-3-6 13:33:53 | 只看该作者

to maurice

你可以按照这个方法扩充功能
[code:30898]filename getfiles pipe &quot;dir/b D&#58;\temp\*&#46;sas&quot;;
data filenams;
infile getfiles;
length filename $200;
input filename;
filename=upcase&#40;filename&#41;;
run;[/code:30898]
repository是定义和存储EIS的元数据的地方。我想这是另一个话题了,如果你想讨论,我建议还是另外发个帖子,这样别人能够更好的查找与支持。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2006-3-8 13:01:48 | 只看该作者

to Shiyiming

回到原来的话题。你的程序我还没有调试成功。不过,我不光需要让用户来指定flie path。更主要的是,我希望用户给变量赋值。如下面程序:

[code:2ccef]
   data test;
     LLOQ=40;
    run;
[/code:2ccef]

我希望用户能够在run这段程序时,给LLOQ赋值,而不是到程序中改。

我试验%input的时候,用户需要在program editor里赋值,我想让赋值能在一个单独的界面完成,哪怕是个简单的窗口。

%window我也试了试,但不知为何得不到window里输入的数值。

[code:2ccef]
%macro getLLOQ;                                                                                                                        
  %window dataentry color=white                                                                                                           
   #5 @28 'Enter the LLOQ&#58;' attr=highlight                                                                                             
      color=blue                                                                                                                        
   #6 @28 x 3                                                                                                                        
   ;                                                                                                                                 
  %display dataentry;
%mend getLLOQ;                                                                                                                          
data getLLOQ;                                                                                                                           
%getLLOQ
run;   
[/code:2ccef]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2006-3-8 13:31:08 | 只看该作者

to maurice

不晓得这样符合你的需求吗?其实你就差最后一步了。
[code:a0b18]data getLLOQ;
  %window dataentry color=white
   #5 @28 'Enter the LLOQ&#58;' attr=highlight color=blue
   #6 @28 x 3
   ;
  %display dataentry;
  x=&quot;&x&quot;;
run;[/code:a0b18]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2006-3-8 13:55:00 | 只看该作者

to Shiyiming

感谢感谢!

对了,你的论坛怎么过期了?有没有新的地址?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2006-3-8 17:59:09 | 只看该作者

to maurice

如果你是指 <!-- m --><a class="postlink" href="http://shiyiming.51.net">http://shiyiming.51.net</a><!-- m --> 的话,因为过期我已经把它搬到 <!-- m --><a class="postlink" href="http://shiyiming.mysas.net">http://shiyiming.mysas.net</a><!-- m --> 了。这样可以少付一点租费。多谢眷顾 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 02:29 , Processed in 0.071054 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表