楼主: yunnandlg
1306 1

[学习分享] 创建函数:PROC FCMP 使用数据步骤语法创建自定义函数 [推广有奖]

版主

但问耕耘,莫问收获

已卖:3032份资源

院士

5%

还不是VIP/贵宾

-

威望
0
论坛币
279697 个
通用积分
649.6475
学术水平
1667 点
热心指数
1686 点
信用等级
1650 点
经验
192322 点
帖子
1938
精华
0
在线时间
2782 小时
注册时间
2010-8-28
最后登录
2026-1-7

楼主
yunnandlg 在职认证  学生认证  发表于 2021-7-18 16:08:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币



语法

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:指定函数的一个或多个参数。通过在参数名称后面放置一个美元符号($)来指定字符参数。
                             <$>:指定函数返回一个字符值。如果未指定$,则函数返回一个数值。
————————————————








/************************************************************************************************************************/
dm ' log; clear;  odsresult;clear;  output; clear; ';
/* 改变工作路径 change the working directory to the current file folder. */
%macro cd_currfile_path;
        %let currfile_path = %qsubstr(%sysget(SAS_EXECFILEPATH), 1, %length(%sysget(SAS_EXECFILEPATH))-%length(%sysget(SAS_EXECFILEname)) );
        x "cd &currfile_path.";
%mend cd_currfile_path;
%cd_currfile_path;

libname dlglib '../data';
/************************************************************************************************************************/

proc fcmp outlib=dlglib.functions.dat;
    function MyQuarter(month);        
        if month in(2,3,4) then myqtr=1;  
        else if month in(5,6,7) then myqtr=2;
        else if month in (8,9,10) then myqtr=3;
        else myqtr=4;
        return(myqtr);      
    endsub;      
run;

options cmplib=dlglib.functions;        
data work.dates;                        
    do Dates='15JAN2019'd to '31DEC2021'd by 30;
        MonNum=month(Dates);
        FiscalQuarter=MyQuarter(MonNum);   
        output;
    end;
run;

proc print data=work.dates;     
    format Dates mmddyy10.;
run;
/************************************************************************************************************************/

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:自定义函数 FCMP 使用数据 ROC CMP

Cause morning rolls around and it's another day of sun.
清晨不久就会来到,又是阳光明媚的一天。

沙发
yunnandlg 在职认证  学生认证  发表于 2021-7-24 22:09:04
[img][/img]

2021-2-14 92910 5.jpg (330.7 KB)

2021-2-14 92910 5.jpg

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

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