The SICS server has a built in macro language. This macro language is basically John Ousterhout's Tool Command Language Tcl. Tcl is described elsewhere. A sound knowledge of Tcl is required for programming SICS macros. The SICS macro language can be used for the following purposes:
It would be quite verbose and confusing for the user if all output from SICS commands called from a macro would appear on the screen during macro execution. Therefore all normal SICS output to a client is suppressed while executing a macro. Except error messages and warnings which will always be written to the client executing the macro. The output of a SICS command is available within the macro script through the normal Tcl mechanism as a return value. This allows for processing of SICS output within a macro. If the output to the client executing the macro is required this can be done with the ClientPut command, detailed in the user documantation.
Tcl has the feature that it aborts execution of a script when an error occurs. If a macro script needs to handle errors either from Tcl or from SICS commands this can be achieved by using the Tcl catch mechanism. A script can inquire the current interrupt value of the connection with the command GetInt. If a script can handle an error condition it may set the interrupt on the connection object with the SetInt command. The textual representations of interrupts for these commands are: continue, abortop, abortscan, abortbatch, halt, free, end.
There exist a few commands which allow to inquire or manipulate SICS internals. Most of these commands are only available in macro scripts.
Currently it is not possible to define object interfaces from within the SICS macro language. For the notion of object interfaces see the SICS programmers documentation. This may be implemented in future when needed.