Operations are executed from a chain of operation
elements created at parse time and resolved later.
For each operation, the interpreter performs the following steps:
- Prints a record of the operation if the FLOW option is on.
- Looks at the operands to make sure they have values.
Only certain special operators are allowed to
tolerate operands that have not been set to a value.
The interpreter checks whether
any argument has character values.
- Inspects the operator and gives control
to the appropriate execution routine.
A separate set of routines is invoked for character values.
- Checks the operands to make sure
they are valid for the operation.
Then the routine allocates the result matrix and any
extra workspace needed for intermediate calculations.
Then the work is performed.
Extra workspace is freed.
A return code notifies IML if the operation was successful.
If unsuccessful, it identifies the problem.
Control is passed back to the interpreter.
- Checks the return code.
If the return code is nonzero, diagnostic routines
are called to explain the problem to the user.
- Associates the results with the
result arguments in the symbol table.
By keeping results out of the symbol table until this
time, the operation does not destroy the previous
value of the symbol if an error has occurred.
- Prints the result if RESET PRINT
or RESET PRINTALL is specified.
The PRINTALL option prints intermediate
results as well as end results.
- Moves to the next operation.
Copyright © 2009 by SAS Institute Inc., Cary, NC, USA. All rights reserved.