General
Application area: | (Task) serialization; see "(Task) serialization" |
Macro type: | Type S, MF format 1: standard/L/E form; see "S-type macros" |
DEQAR generates the 24-bit or the 31-bit interface, depending on the specification. In the event of macro chaining, the PARMOD operands of all macros chained must be given the same value.
Macro description
The DEQAR macro terminates access to the specified serialization item (previously requested with an ENQAR macro) by the task of the calling program. If another task is entered in the queue for this serialization item, it is activated and allowed access to the item. As an optional function, this macro can also be used to cancel the assignment (previously established with ENASI) of the serialization item to the caller task.
The CONTINU operand allows chaining of up to 255 DEQAR macros.
Macro format and description of operands
DEQAR |
{ {SINAME=name / SINAMAD={addr / (r)} [,SINAMLN=length]} ,SCOPE={LOCAL / GROUP / USER_GROUP / GLOBAL} } SIID={addr / (r)}} ,DISSI=NO / YES ,HOLDER=SELF / ANY ,CONTINU=NO / YES [,PARMOD=24 / 31] [,MF=L / (E, ..)] |
SINAME=name
Specifies the name of the serialization item. The SCOPE operand must be added to ensure the serialization item is uniquely identified.
SINAMAD=
Specifies the address of the name of the serialization item. Identification is unique only if the SCOPE operand has also been specified.
addr
Symbolic address of the field containing the name.
(r)
Register containing the address.
SINAMLN=
Specifies the length in bytes of the serialization item name. The length must be at least 1 byte and not more than 54 bytes.
If the operand is missing, the length attribute of the SINAMAD operand is assumed if SINAMAD=addr is specified; if SINAMAD=(r), the maximum length (54) is assumed.
length
Length of the serialization item name.
SCOPE=
Specifies the scope of the serialization item (i.e. the participant tasks authorized to use it):
LOCAL
The serialization item is only used by the task of the calling program.
GROUP
All the tasks with the same user ID as the calling task.
USER_GROUP
All the tasks, whose user IDs belong to the same user group as the user ID of the creating participant, can be participants.
The operand value assumes the existence of user groups and may therefore only be specified when the SRPM function unit of the SECOS software product is available in the system.
This is why the GETUGR macro (see the “SECOS” manual [14 (Related publications)] has to check whether SRPM is available prior to a macro call with SCOPE=USER_GROUP. The program reaction is dependent on the result (return code).
GLOBAL
All the tasks in the system are participants.
SIID=
Specifies the ID of the serialization item. The ID is provided to the user by the ENASI macro. If this ID is used instead of the name of the serialization item, processing time is reduced. A serialization item is uniquely identified by the ID.
addr
Symbolic address of a 4-byte field containing the ID.
(r)
Register containing the address.
DISSI=
Specifies whether use of the specified serialization item by the task of the calling program is to be terminated (see the DISSI macro).
NO
Use is not to be terminated.
YES
Use is to be terminated.
HOLDER=
Specifies whether access is to be terminated if the task of the calling program also requested the current access.
SELF
Access is terminated if the task of the calling program also requested the current access.
ANY
When HOLDER=ANY is specified, access is terminated irrespective of which task requested access.
CONTINU=
This operand allows chaining of up to 255 DEQAR macros.
NO
This is the last (or only) macro of a sequence.
YES
YES indicates that another DEQAR macro follows this macro.
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).
Notes on the macro call
When the list form (operand MF=L) of the macro is used, the following should be noted:Only one macro with MF=E need be specified for execution, regardless of whether this macro applies to a single request or to a series of requests.
In the case of a series of requests, the operand list is generated via macro chaining (MF=L) by means of the CONTINU operand.
When the program is terminated, all access requests of this program are terminated as well.
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 DEQAR macro is transferred in register R15.
X'bb' | X'aa' | Meaning |
X'00' | X'00' | All dequeue macros were executed. |
X'04' | X'00' | All dequeue macros were executed. |
X'08' | X'00' | All dequeue macros were executed. |
X'0C' | X'04' | Not all dequeue macros were executed. |
X'10' | X'04' | Not all dequeue macros were executed.
|
X'14' | X'04' | Not all dequeue macros were executed. |
X'20' | X'04' | Not all dequeue macros were executed. |