Unless you diligently read the "What's New" chapter for each release of SAS software, it is easy to miss new features that appear in the language. People who have been writing SAS/IML programs for decades are sometimes surprised when I tell them about a useful new function or programming feature.

To help SAS/IML programmers keep up with the changes to the language, I occasionally highlight new features on my blog. The word cloud on the right sidebar of my blog contains certain numbers that relate to SAS or SAS/IML releases. For example, you can click on "12.1" to read about new features in SAS/IML 12.1.

This article links to relevant blog posts that discuss features that were new to SAS/IML 12.3, which was released in July, 2013, as part of SAS 9.4.

### New functions and subroutines in SAS/IML 12.3

SAS/IML 12.3 introduced the following functions and subroutines for data analysis:

- You can use the BLANKSTR function to create a string of a specified length.
- You can use the COL function and ROW function to vectorize the construction of structured matrices.
- You can use the COV2CORR function to convert a covariance matrix into a correlation matrix. The CORR2COV function converts in the other direction.
- You can use the EXPANDGRID function to create a grid of uniformly spaced points.
- You can use the ISEMPTY function to detect whether a matrix is the empty matrix.
- You can use the MAGIC function to create a magic square of a given size.
- You can use the RANDFUN function to create a matrix of random numbers from a specified distribution.

### New ODS statistical graphs

In addition, SAS/IML 12.3 supports functions that enable you to create ODS statistical graphics as part of a SAS/IML program. You can create bar charts, box plots, histograms, scatter plots, and series plots (also known as line plots).

### Enhancements to functionality

There were several enhancements and language improvements in SAS/IML 12.3. Here are the ones that I have blogged about:

- The column index operator (:) enables you to generate a sequence of consecutive letters such as "a":"z", "C":"M", or "z":"x".
- The REPEAT function supports a new syntax for expanding data by a frequency variable. For example,
`REPEAT({A B C D}, {3 0 2 1})`returns the vector {A A A C C D}.

It can be hard to keep up with enhancements to SAS software. Hopefully this reference page will be a useful to SAS/IML users who are upgrading their version of SAS. Have you used any of these new features? Leave a comment and tell me which is your favorite.