Clear an error condition
_clear_error ()
This function may be used in error-blocks to clear the error that triggered execution of the error block. Execution resumes following the statement, in the scope of the error-block, that triggered the error.
Consider the following wrapper around the putenv
function:
define try_putenv (name, value)
{
variable status;
ERROR_BLOCK
{
_clear_error ();
status = -1;
}
status = 0;
putenv (sprintf ("%s=%s", name, value);
return status;
}
If putenv
fails, it generates an error condition, which the
try_putenv
function catches and clears. Thus try_putenv
is a function that returns -1
upon failure and 0
upon
success.
_trace_function, _slangtrace, _traceback
Turn function tracing on or off.
Integer_Type _slangtrace
The _slangtrace
variable is a debugging aid that when set to a
non-zero value enables tracing when function declared by
_trace_function
is entered. If the value is greater than
zero, both intrinsic and user defined functions will get traced.
However, if set to a value less than zero, intrinsic functions will
not get traced.
_trace_function, _traceback, _print_stack
Set the function to trace
_trace_function (String_Type f)
_trace_function
declares that the S-lang function with name
f
is to be traced when it is called. Calling
_trace_function
does not in itself turn tracing on. Tracing
is turned on only when the variable _slangtrace
is non-zero.
_slangtrace, _traceback
Generate a traceback upon error
Integer_Type _traceback
_traceback
is an intrinsic integer variable whose value
controls whether or not a traceback of the call stack is to be
generated upon error. If _traceback
is greater than zero, a
full traceback will be generated, which includes the values of local
variables. If the value is less than zero, a traceback will be
generated without local variable information, and if
_traceback
is zero the traceback will not be generated.
Local variables are represented in the form $n
where n
is an
integer numbered from zero. More explicitly, $0
represents the
first local variable, $1
represents the second, and so on.
Please note that function parameters are local variables and that the
first parameter corresponds to $0
.
_slangtrace, error