当前位置: 代码迷 >> 综合 >> 用PROC FCMP创建函数
  详细解决方案

用PROC FCMP创建函数

热度:22   发布时间:2024-01-27 23:41:03.0

使用数据步骤语法创建自定义函数

语法:

OPTIONS CMPLIB=libref.table | (libref.table-1...libref.table-n)PROC FCMP OUTLIB=libref.table.package; FUNCTION function-name(arguments <$>)<$><length>;. . . programming statements. . . RETURN(expression); ENDSUB; 
QUIT;

选项CMPLIB:指定存储函数包的表。是一个全局选项,设置此选项后,它将一直有效,直到取消、更改或退出SAS会话。

选项OUTLIB:指定存储编译函数的表和包。这是必须在PROC FCMP语句中指定的参数

FUNCTION语句:指定了函数名和函数参数,以及函数返回的是字符值还是数值
arguments:指定函数的一个或多个参数。通过在参数名称后面放置一个美元符号($)来指定字符参数。
<$>:指定函数返回一个字符值。如果未指定$,则函数返回一个数值。

举例:

options cmplib=certadv.functions;
proc fcmp outlib=certadv.functions.dev;        /* 1 */ function ReverseName(lastfirst $) $ 40;    /* 2 */ First=scan(lastfirst,2,',');           /* 3 */ Last=scan(lastfirst,1,','); return(catx(' ',First,Last));          /* 4 */ endsub;                                    /* 5 */ 
run;

1、FCMP过程创建自定义函数。选项指定certadv.functions作为存储开发包的表。开发包是具有唯一名称的例程的集合。

2、FUNCTION语句将函数名指定为ReverseName。ReverseName是一个自定义函数,它有一个名为LastFirst的字符参数,并返回长度为40的字符值。如果没有指定返回值类型和长度,则默认为数值,长度为8。

3、函数体由数据步骤语法组成。赋值语句创建了两个新变量,First 和 Last,它们是使用SCAN函数创建的。
First 使用SCAN函数返回LastFirst变量中的第二个单词,First 返回LastFirst变量中的第一个单词。

4、RETURN语句指定了ReverseName的值。RETURN语句定义函数返回的值。它使用CATX函数将在函数定义中创建的第一个和最后一个变量值连接起来,变量值之间用一个空格分隔。

5、endsub语句,函数结束语句;