In my previous blog post I demonstrated how to create your own CAS actions and action sets. In this post, we will explore how to create your own CAS functions using the CAS Language (CASL). A function is a component of the CASL programming language that can accept arguments, perform a computation or other operation, and return a value. The value that is returned can be used in an assignment statement or elsewhere in expressions.
About SAS functions
SAS provides two types of supplied functions: built-in functions and common functions. Built-in functions contain functionality that is unique to CASL. These allow you to perform operations on your result tables, arrays, and dictionaries, and provide run-time support for your CASL programs. Built-in functions cannot be replaced with user-defined functions.
Conversely, common functions provide functionality that is common to other SAS functions. When used in a CASL program, SAS functions take a CASL value and a CASL value is returned. Unlike built-in functions, you can replace these functions with user-defined functions.
Since the capabilities of built-in functions are unique to CASL, let’s look at these in-depth and demonstrate with an example. Save the following FedSQL code in an external file called hmeqsql.sas. This code will be read into CAS and stored as a variable.
The execDirect action executes FedSQL code in CAS. The READPATH built-in function reads the FedSQL code saved in hmeqsql.sas and stores it in the CASL variable hmeqsql which is used as input to the query parameter.
The fetch action displays the first 20 rows from the output table hmeq.out.
If you don’t feel like looking through the documentation for a built-in or common function, a list of each can be generated programmatically. Run the following code to see a list of built-in functions.
Partial list of CASL built-in functions
Run the following code to see a list of common functions.
Partial list of common functions
User-defined CASL functions
In addition to the customizable capabilities of built-in functions supplied by SAS, you can also create your own functions using the FUNCTION statement. User-defined functions can be called in expressions using CASL and they provide a large amount of flexibility. The following example creates four different functions for temperature conversion.
After creating these functions, they can be called immediately, or you can store them in an external file and call them via a %include statement. In this example, the user-defined functions have been stored in an external file called FunctionStore.sas. You can call one, all, or any number of your user-defined functions.
The output from each function call is displayed in the log.
Lastly, if you want to see all user-defined functions, run the FUNCTIONLIST statement. A list will be printed to the log.
More about CASL programming and using functions in CASL
Check out these resources for further information on programming in the CASL language and using functions in CASL.
- Documentation: SAS® Cloud Analytic Services 3.4: CASL Programmer’s Guide
- Documentation: CASL Built-In Functions
- Documentation: User-Defined Functions
- SAS Global Forum paper: Management and Usage of User-Defined Formats in the SAS® Cloud Analytic Services Server
- Tech Talk Video: SAS programming in the cloud: CASL code