Overview of Extending IMLPlus

IMLPlus provides mechanisms through which an IMLPlus program can call external user-defined functions written in programming languages such as C, Fortran, and Java. Before you begin reading about the details of interfacing different languages with IMLPlus, it is important that you know some basic information about the architecture of IMLPlus.

The implementation of IMLPlus is divided into two pieces: a client piece, and a server piece. The client piece of IMLPlus is mainly implemented in Java and runs on the Windows PC along with the rest of IML Studio. The server piece of IMLPlus is part of the SAS/IML product and runs on the SAS server.

An IMLPlus program does not execute exclusively on either the client or the server. Rather, execution switches dynamically (and intelligently) back and forth between the client and the server as needed. As a general rule, matrix computations occur on the server while Java-based operations occur on the client. For maximum performance of computationally intensive code segments, it is best to avoid the use of Java-based operations so that all execution will occur on the server.

All external user-defined functions execute on the client Windows PC. Because the client piece of IMLPlus is itself mainly implemented in Java, it is straightforward to make use of Java classes that are not part of IMLPlus. Calling external functions written in other languages such as C or Fortran is somewhat more involved, but not dreadfully so. The performance of functions written in C or Fortran is substantially better than that of functions written in Java.

Please refer to the following sections:

About Infinities and NaNs

Extending IMLPlus Using C

Extending IMLPlus Using Fortran

Extending IMLPlus Using Java