SAS/IML 9.22 includes two new features that are related to calling other languages from within the IML procedure:

- calling SAS procedures and DATA steps from PROC IML
- calling functions in the R statistical programming language from PROC IML

In addition, SAS/IML 9.22 provides several new functions and subroutines.

SAS/IML 9.22 supports the SUBMIT and ENDSUBMIT statements. These statements delimit a block of statements that are sent to another language for processing.

The SUBMIT and ENDSUBMIT statements enable you to call SAS procedures and DATA steps without
leaving the IML procedure. This feature has been very popular in SAS/IML^{®} Studio since it was introduced
in 2002. The feature is now available in PROC IML.

You can use SAS data sets to transfer data between SAS/IML matrices and SAS procedures. SAS procedures require that data be in a SAS data set.

The SUBMIT and ENDSUBMIT statements also provide an interface to the R statistical programming language, so that you can submit R statements from within your SAS/IML program. To submit statements to R, specify the R option in the SUBMIT statement.

You can transfer data from SAS/IML matrices and SAS data sets into R matrices and R data frames, and vice versa. Specifically, the following subroutines are available to transfer data from a SAS format into an R format:

Subroutine |
SAS Source |
R Destination |
---|---|---|

ExportDataSetToR | SAS data set | R data frame |

ExportMatrixToR | SAS/IML matrix | R matrix |

In addition, the following subroutines are available to transfer data from an R format into a SAS format:

Subroutine |
R Source |
SAS Destination |
---|---|---|

ImportDataSetFromR | R expression | SAS data set |

ImportMatrixFromR | R expression | SAS/IML matrix |

An "R expression" can be the name of a data frame, the name of a matrix, or an expression that results in either of these data structures.

The following new functions and subroutines were introduced in SAS/IML 9.22:

- The CORR function computes a sample correlation matrix for data. The function supports Pearson’s product-moment correlations, Hoeffding’s D statistics, Kendall’s tau-b coefficients, and Spearman’s correlation coefficients based on the ranks of the variables. The function supports two different methods for dealing with missing values in the data.
- The COV function computes a sample variance-covariance matrix for data. The function supports two different methods for dealing with missing values in the data.
- The COUNTN function counts the number of nonmissing values in a matrix.
- The COUNTMISS function counts the number of missing values in a matrix.
- The COUNTUNIQUE function counts the number of unique values in a matrix.
- The CUPROD function computes the cumulative product of elements in a matrix.
- The DIF function computes the differences between data values and one or more lagged (shifted) values for time series data.
- The FULL function converts a matrix stored in a sparse format into a matrix stored in a dense format. See the SPARSE function for a description of how sparse matrices are stored.
- The LAG function computes one or more lagged (shifted) values for time series data.
- The MEAN function computes a sample mean of data. The function can compute arithmetic means, trimmed means, and Winsorized means.
- The PROD function computes the product of elements in one or more matrices.
- The QNTL Call computes sample quantiles for data.
- The SPARSE function converts a matrix that contains many zeros into a matrix stored in a sparse format which is suitable for use with the ITSOLVER subroutine or the SOLVELIN subroutine.
- The VAR function computes a sample variance for each column of a data matrix.

The CORR module has been removed from the IMLMLIB library. In its place is the built-in CORR function.

The MEDIAN, QUARTILE, and STANDARD modules now support missing values in the data argument.

The first six chapters of the *SAS/IML User’s Guide* have been completely rewritten in order to provide new
users with a gentle introduction to the SAS/IML language. Two new chapters have been written:

- Chapter 10, “Submitting SAS Statements,” describes how to call SAS procedures from within PROC IML.
- Chapter 11, “Calling Functions in the R Language,” describes how to call R functions from within PROC IML.