SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 3822|回复: 10
打印 上一主题 下一主题

SAS自定义函数

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-8-23 19:17:46 | 只看该作者

SAS自定义函数

SAS 9.1中的proc fcmp过程步就是可以用来自定义函数的
有兴趣的朋友可以一起探讨一下
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-11-30 10:31:43 | 只看该作者

Re: SAS自定义函数

Function/Subroutine Declarations
[code:1xs57qfa]proc fcmp outlib= sasuser.MySubs.MathFncs;
subroutine inverse( in, inv );
outargs inv;
if in = 0 then inv = .;
else inv = 1/in;
endsub;
function day_date( indate, type $ );
if type = "DAYS" then wkday = weekday(indate);
if type = "YEARS" then wkday = weekday(indate*365);
return( wkday );
endsub;
run;[/code:1xs57qfa]
SAS Global Option CMPLIB
[code:1xs57qfa]cmplib = sasuser.funcs;
cmplib = (sasuser.funcs work.functions mycat.funcs);
cmplib = sasuser.func1 - sasuser.func10;[/code:1xs57qfa]
<!-- m --><a class="postlink" href="http://support.sas.com/documentation/onlinedoc/base/91/fcmp.pdf">http://support.sas.com/documentation/on ... 1/fcmp.pdf</a><!-- m -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-10-9 17:05:26 | 只看该作者

Re: SAS自定义函数

为什么我从PDF上面直接拷贝下来的粒子到PC上都不能正常运行呢?总是抱错说找不到我自定义的函数,望不吝赐教,谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-10-9 17:33:31 | 只看该作者

Re: SAS自定义函数

首先,要确认只有SAS 9.1以上版本才有这个功能。

其次,把错误log贴上来看看,让大家看log分析才是好习惯。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-10-10 08:27:00 | 只看该作者

to horse1

sometimes it's just that one double quotes become 2 single quotes after copy &amp; paste
anyway, I may be wrong
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-10-10 09:51:04 | 只看该作者

Re: SAS自定义函数

我的SAS是9.1.3版的,下面是程序运行的log
1    proc fcmp outlib=work.funcs.math;
2    function test() $ 12;
3    length x $ 25;
4    length z $ 30;
5    x = '1234';
6    if x = '1234' then
7    return(x);
NOTE: Character value converted to numeric at line 7 column 8.
8    else
9    return(z);
NOTE: Character value converted to numeric at line 9 column 8.
10   endsub;
11   run;

NOTE: Function test saved to catalog work.funcs.math.
NOTE: PROCEDURE FCMP used (Total process time):
      real time           0.15 seconds
      cpu time            0.09 seconds


12   options cmplib = work.funcs;
13   data _null_;
14   y = test();
         ----
         68
ERROR 68-185: The function TEST is unknown, or cannot be accessed.

15   put y=;
16   vlen = vlength(y);
17   put vlen=;
18   run;

NOTE: The SAS System stopped processing this step because of errors.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2008-10-10 17:38:29 | 只看该作者

Re: SAS自定义函数

那个PDF文档写的很清楚吧,DATA STEP里能调用吗?呵呵呵。所以传个log上来,一看就知道哪里错了。
[quote:c6b5xg52]The following SAS procedures allow the use of the functions and subroutines created
by FCMP:
• CALIS
• COMPILE
• DISTANCE
• GA
• GENMOD
• MODEL
• NLIN
• NLMIXED
• NLP
• PHREG
• RISK DIMENSIONS
• ROBUSTREG
• SIMILAR
• SYLK[/quote:c6b5xg52]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2008-10-10 17:56:14 | 只看该作者

Re: SAS自定义函数

我还是不太明白,是说自定的函数不能在data步中使用吗? 可是为什么pdf上面例子就是在data步中使用啊?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2008-10-10 18:01:54 | 只看该作者

Re: SAS自定义函数

真是的,我提供的PDF文档上写的很清楚了,怎么还说不明白啊?这么简单的英语没理由看不懂啊?所列的中没有DATA STEP就是不能用啊!!! <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->

那你说的是哪个PDF文档?给个链接,请指明第几页?第几段?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2008-10-13 10:06:59 | 只看该作者

Re: SAS自定义函数

不好意思,是我看错了,我看的是SAS9.2版的FCMP procedure.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 18:00 , Processed in 0.090361 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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