Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

14
Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012

Transcript of Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Page 1: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Using SAS PROC FCMP

Cheryl Xiyun WangStatistics CanadaNovember 14 2012

Page 2: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

1. Introduction

2. Examples of Using PROC FCMP

3. Using PROC FCMP to Build Customized SAS Functions in G-Sam

4. DATA Step Runs Another DATA Step Through PROC FCMP

5. Other Features in PROC FCMP

6. References

7. Questions

Statistics Canada • Statistique Canada 13/11/2012

Using SAS PROC FCMP

Page 2

Page 3: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

1. Introduction

1) What is PROC FCMP?

PROC FCMP is the SAS Function Compiler procedure; it enables us to create and test customized “functions/CALL routines” using DATA step syntax and store them in SAS packages to be shared;

Some PROC FCMP statements are slightly different from DATA step statements and we can use most features of SAS programming language to create PROC FCMP “functions/CALL routines” (variables, constants, control flows, math operations...);

Just like any other SAS “functions/CALL routines”, PROC FCMP “functions/CALL routines” can be used in DATA step, WHERE statement, Output Delivery System (ODS), and many SAS procedures (although not all);

13/11/2012Page 3

Page 4: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

2) Advantages of using PROC FCMP

A library of reusable “functions/ CALL routines” can be built using DATA step syntax, which can be reused in many other SAS programs;

Complex programs can be simplified by abstracting/wrapping common computations into PROC FCMP “functions/ CALL routines”;

PROC FCMP “functions/CALL routines” are independent from their use which means any SAS program calling PROC FCMP functions/CALL routines is not affected by the implementation of PROC FCMP functions/CALL routines; (comparing to macros)

Developers can more easily read, write, and maintain complex code with independent and reusable functions/CALL routines;

1. Introduction (cont’d)

Statistics Canada • Statistique Canada 13/11/2012Page 4

Page 5: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

3) PROC FCMP SyntaxPROC FCMP options; (declare statements; program statements;)

ABORT;

ARRAY name[dimensions] </NOSYMBOLS | variables | constants | (initial-values)>;

ATTRIB variables <FORMAT=format-name LABEL='label' LENGTH=length>;

LABEL variable='label';

STRUCT structure-name variable;

DELETEFUNC function-name;

DELETESUBR subroutine-name;

FUNCTION function-name(argument-1, ..., argument-n) options

SUBROUTINE subroutine-name (argument-1, ..., argument-n) options

OUTARGS out-argument-1, ..., out-argument-n;

LISTFUNC function-name;

LISTSUBR subroutine-name;

QUIT;

1. Introduction (cont’d)

13/11/2012Page 5

Page 6: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

4) Declare PROC FCMP Functions and CALL Routines

Function name(argument-1, ... , argument-n);

program-statements;

return (expression);endsub;

Subroutine name(argument-1, ..., argument-n);

outargs out-argument-1, ..., out-argument-N;

program-statements;

return;endsub;

Here program-statements are built using SAS programming languages

1. Introduction (cont’d)

13/11/2012Page 6

Page 7: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

1) Simple examples of using PROC FCMP functions/CALL routines

Demo!

2) An example of using PROC FCMP in functions in PROC OPTMODEL

Demo!

2. Examples of using PROC FCMP

13/11/2012Page 7

Page 8: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

1) Situation A group of complex mathematical functions are used many

times in our large optimization problems which are to be implemented by SAS PROC OPTMODEL;

2) Solution Using PROC FCMP to build customized SAS functions for

those complex mathematical functions; Using these customized SAS Functions in any places in SAS

PROC OPTMODEL;

3. Customized Functions in G-Sam

13/11/2012Page 8

Page 9: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

3) An example of G-Sam functions and their usage (Demo)

3. Customized Functions in G-Sam (Cont’d)

13/11/2012Page 9

Page 10: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

4) Benefit of Using PROC FCMP in G-Sam Perfect fit; wrap complex computations into independent

functions and plug them into PROC OPTMODEL easily; eases our system implementation;

Work of building PROC FCMP functions be done independently by another developer (parallel); efficient

Easy maintenance: from times to time, specs changes a lot but are mostly in these functions, thus most system modifications were done in the FCMP functions; less impact;

Numeric precision needs special attentions. Don’t use customized functions in PROC Optmodel variables;

3. Customized Functions in G-Sam (Cont’d)

Statistics Canada • Statistique Canada 13/11/2012Page 10

Page 11: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

1) PROC FCMP run_macro(…) function; rc = RUN_MACRO ('macro_name', variable_1, variable_2, ...,

variable_n) ;

where: the return code rc indicates that the macro call was attempted; variable_1, variable_2, ..., variable_n are PROC FCMP variables to be passed to macro variables in the invoked SAS Macro; then invoked SAS Macro can execute properly.

2) Demo

4. Run data step within another data step through PROC FCMP

Statistics Canada • Statistique Canada 13/11/2012Page 11

Page 12: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Statistics Canada • Statistique Canada

1) SAS FCMP Function Editor SAS 9.2 / SAS 9.3 -> Solutions -> Analysis -> FCmp Function Editor Browse / edit all available PROC FCMP functions/CALL routines; Syntax

checking; testing; manage datasets and logs ;

2) Enables calling c/c++ functions from Data Step

Data Step -> PROC FCMP wrapper functions –> Proc proto functions –> c/c++ functions

Good paper: Developing User-Defined Functions in SAS®: A Summary and Comparison

3) Build-in Microsoft Excel functions

4) Build-in functions for Matrix operations

5. Other features in PROC FCMP

13/11/2012Page 12

Page 13: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

SAS 9.3 installed locally, use SAS 9.3 Help Files

Contents -> SAS Products -> Base SAS -> Base SAS 9.3 Procedures Guide -> Procedures -> FCMP Procedure / FCMP Special Functions and Call Routines / FCmp Function Editor

SAS 9.3 not installed, Check SAS online document: PROC FCMP :: Base SAS(R) 9.3 Procedures Guide, Second Edition

Developing User-Defined Functions in SAS®: A Summary and Comparison

(comparing Macro, SAS/IML, SCL, Proc Proto and Proc FCMP: how to build and performance)

Functioning at an Advanced Level: PROC FCMP and PROC PROTO

(simple examples) Overview of the SAS Function Compiler (FCMP – GASUG) Top 10 reasons for a modeller to learn PROC FCMP (Financial market analyst): Google “PROC FCMP” Difference between proc fcmp and datastep

6. References

Statistics Canada • Statistique Canada 13/11/2012Page 13

Page 14: Using SAS PROC FCMP Cheryl Xiyun Wang Statistics Canada November 14 2012.

Yves DeguireSystems Chief, SAS Technology Center,

Statistics Canada, 150 Tunney's Pasture Driveway

Ottawa, Ontario, K1A 0T6

[email protected]

(613) 951-1282

Cheryl WangIT Team Leader, SAS Technology Center,

Statistics Canada, 150 Tunney's Pasture Driveway

Ottawa, Ontario, K1A 0T6

[email protected]

(613) 951-0843

7. Questions

Page 14 Statistics Canada • Statistique Canada 13/11/2012