z/OS JES2 Macros
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


$QSUSE – Synchronize to use shared queues

z/OS JES2 Macros
SA32-0996-00

Any JES2 processor that begins an access to any information in the checkpoint records (which are shared if the system is a multi-access spool environment) must execute the $QSUSE macro instruction before such access to update checkpoint records.

The contents of the checkpoint records include: shared queue control elements (QSEs), shared communications queues (SCQs), checkpointed HCT variables (beginning at $SAVEBEG, including job queue headers), remote message spooling queues, remote sign-on table, master track group map, job queue, and job output table (JOT).

Format description

Read syntax diagramSkip visual syntax diagram
>>-+--------+--$QSUSE--+-------------------+-------------------->
   '-symbol-'          |          .-WAIT-. |   
                       '-TYPE--=--+-TEST-+-'   
                                  '-LURK-'     

>--+------------------------+----------------------------------><
   '-+-OWN=----+--+-R--n--+-'   
     '-NOTOWN=-'  '-label-'     

TYPE=
Execution of the macro tests the $QSONDA bit and $CKPTACT bit in the $STATUS field of the HCT. Updating any checkpointed information is permitted only if both bits are 0. If TYPE= is not specified, WAIT is the default.
WAIT
Indicates that the calling processor waits ($WAIT CKPT) access to update the checkpoint records is permitted. The checkpoint processor is activated, if necessary, and it later posts ($POST) all other processors forced to wait ($WAIT CKPT).

OWN= and NOTOWN= are not valid if TYPE=WAIT

TEST
Indicates that an immediate return to the caller occurs, with a zero condition code if updating is permitted.

The permission to update granted by execution of this macro expires when the processor executes any $WAIT macro instruction, actual or imbedded in another macro.

OWN= and NOTOWN= are optional if TYPE=TEST

LURK
Indicates that control should be returned to the caller once queue ownership is established by any PCE. This call type differs from the WAIT type because LURK does not request that JES2 interrupt checkpoint cycle processing unless other PCEs have also requested the queues.

Use TYPE=LURK to make a passive request for queue ownership. LURK can be useful for processing non-critical work, which if it ever gets done does require queue ownership. However, processing work in this manner avoids the possibility of checkpoint contention.

When control returns from a $QSUSE TYPE=LURK call, there is no guarantee this JES2 member will own the queues.

OWN= or NOTOWN= or both must be specified if TYPE=LURK

OWN=
Specifies a register that contains the address of the routine or label to which to branch if the queues are owned by this member.
NOTOWN=
Specifies a register that contains the address of the routine or label to which to branch if the queues are not owned by this member.

Environment

  • Main task.
  • $WAIT can occur if TYPE=WAIT or TYPE=LURK is specified.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014