RunSubsystemErrorProcedure (System property)

From m204wiki
Revision as of 19:40, 3 September 2015 by ELowell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Is subsystem error procedure to be run (System class)

[Introduced in Sirius Mods 8.1]

This property allows a FACTDEB procedure to determine if the subsystem error procedure is about to be run and possibly also prevent that procedure from being run.

Syntax

%currentBoolean = %(System):RunSubsystemErrorProcedure %(System):RunSubsystemErrorProcedure = newBoolean

Syntax terms

%booleanBoolean value that indicates whether running the subsystem error procedure or whether running the FACTDEB procedure before running the subsystem error procedure.
%(System) The class name in parentheses denotes a shared method. RunSubsystemErrorProcedure can also be invoked via a System object variable, which may be Null.

Usage notes

  • While a settable property, this property can never be set to False. This is because the only way the property can become False is when an error in a subsystem procedure would cause the subsystem error procedure to be drive.
  • This method is most useful in a FACTDEB procedure. It can be used to determine if the subsystem error procedure is about to be driven and to prevent that from happening (by setting the property to False).
  • The reason for this method is because APSY does not set the subsystem communications global to the error procedure's name before invoking it. So, when a FACTDEB procedure is invoked, that procedure would have no deterministic way of knowing that an error has occurred and that the error procedure is about to be invoked. In fact, in general, a FACTDEB procedure should always check the %(system):runSubsystemErrorProcedure property before checking the value of the communications global (next procedure global).

Examples

The following code, presumably in a FACTDEB procedure, checks the %(system):runSubsystemErrorProcedure porperty and, if set, simply stops, allowing the error procedure to be run:

if %(system):runSubsystemErrorProcedure then stop end if

See also