Error Diagnostics

When an error occurs, several lines of messages are printed. The error description, the operation being performed, and the line and column of the source for that operation are printed. The names of the operation’s arguments are also printed. Matrix names beginning with a pound sign (#) or an asterisk (*) can appear; these are temporary names assigned by the IML procedure.

If an error occurs while you are in immediate mode, the operation is not completed and nothing is assigned to the result. If an error occurs while executing statements inside a module, a PAUSE command is automatically issued. You can correct the error and resume execution of module statements with a RESUME statement.

The most common errors are described in the following list:

  • referencing a matrix that has not been set to a value—that is, referencing a matrix that has no value associated with the matrix name

  • making a subscripting error—that is, trying to refer to a row or column not present in the matrix

  • performing an operation with nonconformable matrix arguments—for example, multiplying two matrices together that do not conform, or using a function that requires a special scalar or vector argument

  • referencing a matrix that is not square for operations that require a square matrix (for example, INV, DET, or SOLVE)

  • referencing a matrix that is not symmetric for operations that require a symmetric matrix (for example, GENEIG)

  • referencing a matrix that is singular for operations that require a nonsingular matrix (for example, INV and SOLVE)

  • referencing a matrix that is not positive definite or positive semidefinite for operations that require such matrices (for example, ROOT and SWEEP)

  • not enough memory (see the section Memory and Workspace) to perform the computations and produce the resulting matrices.

These errors result from the actual dimensions or values of matrices and are caught only after a statement has begun to execute. Other errors, such as incorrect number of arguments or unbalanced parentheses, are syntax errors and resolution errors and are detected before the statement is executed.