Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

ENACO - Enable contingency definition

&pagelevel(3)&pagelevel

General

Application area:

Contingency processing; see "Contingency processes"

Macro type:

Type S, MF format 1: standard/L/E form; see "S-type macros"

Macro description

The ENACO macro allows a routine to be defined as a contingency process with a special name. The contingency process must be defined before it can be specified in a SOLSIG or POSSIG macro. The ENACO macro provides an ID to be used in further macros which refer to the contingency process. A program can use up to 400 contingency processes simultaneously. The scope of the contingency process is local: use is restricted to the task of the calling program.

The addressing mode (AMODE) active at the time of the ENACO macro call must be identical with the one at the time the contingency routine is executed.

Macro format and description of operands

ENACO

{ CONAME=name / CONAMAD={addr / (r)} [,CONAMLN=length] }

,COADAD={addr / (r)} ,COIDRET={addr / (r)}

[,COMAD={addr / (r)} ] [,LEVEL={prio / (r)}]

[,PARMOD={24 / 31}] [,MF={L / (E, ..})]

CONAME=
Specifies the name of the contingency process.

name
Name of the contingency process. 1 <= name length <= 54.


Name format:
1st character:                 letter, #, @;
2nd through to 54th character: any combination of characters from the
                               character set (A,...,Z,0,...,9,$,#,@).
The first blank (X'40') terminates the name.


CONAMAD=

Specifies the address of a field containing the name of the contingency process (for name format see CONAME).

addr
Symbolic address (name) of the field

(r)
Register containing the “addr” address value.

CONAMLN=
Specifies the length of the contingency process name if CONAMAD=... was specified.

length
Length of the name in bytes
Default setting:

  • length attribute of the field specified with CONAMAD=...

  • 54 bytes if CONAMAD=(r) was specified.

COADAD=
Specifies a field containing the start address of the contingency process. The field should be aligned on a word boundary.

addr
Symbolic address (name) of a field containing the start address

(r)
Register containing the “addr” address value.

COIDRET=
Specifies the address of a field where an ID of the contingency process is entered. The ID should be used in subsequent macros referring to the contingency process.
The field should be aligned on a word boundary.

addr
Symbolic address (name) of the field to hold the ID.

(r)
Register containing the “addr” address value.

COMAD=
Specifies a field containing a contingency message. The message is transferred to register R1 of the contingency process. A message specified here may be replaced by a message issued by a SOLSIG or POSSIG macro.

addr
Symbolic address (name) of the field containing the contingency message.

(r)
Register containing the “addr” address value.

LEVEL=

Specifies the priority level of the contingency process.

prio
Priority level of the contingency process. 1 <= prio <= 127.
Default value: prio = 1

(r)
Register containing the value of “prio”.

MF=
For a general description of the MF operand, its operand values and any subsequent operands (e.g. for a prefix), see "S-type macros". The valid MF values are given at the start of the macro description under “Macro type” and are included in the macro format.

PARMOD=
Controls macro expansion. Either the 24-bit or the 31-bit interface is generated.
If PARMOD is not specified here, macro expansion is performed according to the specification for the GPARMOD macro or according to the default setting for the assembler (= 24-bit interface).

24
The 24-bit interface is generated. Data lists and instructions use 24-bit addresses (address space <= 16 Mb).

31
The 31-bit interface is generated. Data lists and instructions use 31-bit addresses (address space <= 2 Gb).

Return information and error flags
During macro processing, register R1 contains the operand list address.

R15:

+---------------+
|   |   |   |   |
|b|b| | | | |a|a|
+---------------+

A structured return code (aa=primary return code, bb=secondary return code) relating to the execution of the ENACO macro is transferred in register R15.

X'bb'

X'aa'

Meaning

X'04'

X'00'

The contingency process was defined for the calling task.

X'0C'

X'04'

The contingency process was already defined for the calling task. No action.

X'10'

X'04'

Invalid operands were specified. No action.

X'18'

X'04'

The maximum number of contingency processes which can be used
simultaneously has been exceeded. No action.

For examples, see the section “Contingency processes” ("Contingency processes") and the description of the POSSIG macro ("POSSIG - Post signal request").