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


$DILBERT – Do it later BERT services

z/OS JES2 Macros
SA32-0996-00

Use $DILBERT to specify a routine to gain control when JES2 releases the block extension reuse table (BERT) lock for a specific job.

Format description

Read syntax diagramSkip visual syntax diagram
>>-+--------+--$DILBERT--TYPE--=--+-JQE-+----------------------->
   '-symbol-'                     '-JOE-'   

>--+----------------------------+--+-------------------+-------->
   '-,CBADDR--=--+-addr-------+-'  '-,CALL--=--+-YES-+-'   
                 '-(--R--n--)-'                '-NO--'     

>--,ROUTINE--=--rtn-name--+----------------------+-------------->
                          '-,PARM0--=--parameter-'   

>--+-----------------------+--,POST--=--resource---------------->
   '-,PARMA1--=--parameter-'                       

>--+-----------------------+--+---------------------------+----->
   |               .-YES-. |  '-,ERRET--=--+-label------+-'   
   '-,ALLOWDUP--=--+-NO--+-'               '-(--R--n--)-'     

>--+---------------------------+-------------------------------->
   '-,OKRET--=--+-label------+-'   
                '-(--R--n--)-'     

>--,INST--=--(--OPCODE--,--OPERAND--,--IMMED--)----------------->

>--+-----------------------------------------------+------------>
   '-,FLUSH--=--+-YES--+----------+--+---------+-+-'   
                |      +-,WAIT----+  +-ALL-----+ |     
                |      +-,NOWAIT--+  +-PCE-----+ |     
                |      '-,NOQUEUE-'  '-PCETYPE-' |     
                '-NO-----------------------------'     

>--+--------------------+--+---------------------+-------------->
   |            .-NO--. |  |            .-COND-. |   
   '-,#POST--=--+-YES-+-'  '-,QPOST--=--+-YES--+-'   

>--+---------------------------+--+-------------------+--------->
   |               .-PROCESS-. |  |           .-NO--. |   
   '-,FUNCTION--=--+-CHECK---+-'  '-,PACE--=--+-YES-+-'   

>--+----------------------+--+--------------------+------------><
   '-,SPECIAL--=--+-NO--+-'  |            .-YES-. |   
                  '-YES-'    '-,QSUSE--=--+-NO--+-'   

TYPE=
Specifies the type of BERT. The supported types are JQE and JOE.
CBADDR=
Specifies the control block JES2 passes to the routine in register 1. This control block might be at a different address once JES2 passes it to the specified routine. It will however represent the same data within the checkpoint.
CALL=
Specifies whether (YES) or not (NO) JES2 will immediately call the routine specified on the ROUTINE= parameter if the BERT lock is currently available. CALL=YES is mutually exclusive with INST and FLUSH.
ROUTINE=
Specifies the name of the routine to get control after JES2 frees the BERT lock for the job. ROUTINE is mutually exclusive with INST= and FLUSH=.
PARM0=
An optional parameter JES2 passes in register 0 to the routine you specified by ROUTINE=.
PARMA1=
An optional parameter to be passed to the $DILBERT service in access register 1.
POST=
Specifies the resource to be $POSTed when the queue element becomes available. This specification automatically causes suppression of duplicate DWAs, that is, as if ALLOWDUP=NO were specified.
ALLOWDUP=
Specifies whether (YES) or not (NO) this dilbert work area (DWA) should be queued if it is a duplication of an already queued DWA. The default is YES.
ERRET=
Specifies a label to be branched to or a register to be branched on if a non-zero return code is returned in R15.
OKRET=
Specifies a label to be branched to or a register to be branched on if a zero return code is returned in R15.
INST=
Specifies a single triplet that specifies an operation to be performed against a field (OPERAND) within CBADDR with an immediate type instruction.
OPCODE
The operation instruction can be one of the following: MVI (move), XI (exclusive OR), OI (OR), or NI (AND).
OPERAND
The field name within CBADDR that JES2 will manipulate as instructed by the opcode and immediate operand.
IMMED
The ‘immediate’ data field the opcode uses to manipulate the operand.
For example,
   INST=(OI,JQEFLAG7,JQE7SPIN)

JES2 manipulates JQEFLAG7 based on an OR operation against field JQE7SPIN.

INST= is mutually exclusive with ROUTINE=, CALL=YES, and FLUSH=.

FLUSH=
Specifies whether (YES) or not (NO) the pending work for the queue element should be executed by JES2. If YES is specified, an optional second operand of WAIT/NOWAIT/NOQUEUE can be specified.
WAIT
The PCE is $WAITed until all pending work is finished.
NOWAIT
If the BERT lock for the job is not available, a return code of 4 is returned and the PCE is $POSTed for WORK when the flush completes.
NOQUEUE
If the BERT lock for the job is not available, a return code of 4 is returned and the PCE is not $POSTed when the flush completes.
Additionally, an optional third operand of ALL/PCE/PCETYPE can be specified with FLUSH=YES.
ALL
All work for this JQA/JOA should be flushed.
PCE
Only work queued by the current PCE should be flushed.
PCETYPE
Only work queued by PCEs of the same type as the current PCE should be flushed.

FLUSH= is mutually exclusive with INST=, CALL=, and ROUTINE=.

QPOST=
Specifies how to call $DOGJQE when a JQE is returned. QPOST=YES means that a $DOGJQE QPOST=YES will be used; QPOST=COND means that a $DOGJQE QPOST=COND will be used. The default is COND.
Note: The QPOST parameter is not valid if TYPE=JOE is specified.
#POST=
Specifies how to call $DOGJQE or $DOGJOE when a JQE or JOE is returned. #POST=YES means that a $DOGJQE or $DOGJOE #POST=YES will be used; #POST=NO means that a $DOGJQE or $DOGJOE #POST=NO will be used. The default is NO.
FUNCTION=
Specifies the function (PROCESS or CHECK) that $DILBERT will perform.
PROCESS
This will allow updates to BERTs to be deferred until the BERT lock is no longer held by another processor. FUNCTION=PROCESS is the default.
CHECK
This will examine the pending $DILBERTed work to find a DWA with the same routine and parameters. A return code of 4 indicates that a matching DWA was found. A return code of 0 indicates no matching DWA was found. ROUTINE= is a required parameter, while PARM0= and PARMA1= are optional. Even if PARM0 or PARMA1 is not specified, its default of zero will be used when comparing to find a match.
For example:
   FUNCTION=CHECK,ROUTINE=ABCD
JES2 examines the pending DWAs to search for the one that is under the following conditions:
  • ROUTINE=ABCD is specified.
  • PARM0 or PARMA1 is set to its default.

FUNCTION=CHECK is mutually exclusive with TYPE=, CBADDR=, CALL=, POST=, ALLOWDUP=, PACE=, INST=, FLUSH=, QPOST=, QSUSE= and #POST=.

PACE=
Specifies whether (YES) or not (NO) pacing should be done on behalf of requests calling the routine supplied. The default is NO.

If pacing is requested, the DILBERT PCEs dispatch no more than one DWA with the same entry point value as the routine specified in ROUTINE=.

You must specify a routine address if PACE=YES is requested. PACE=YES and CALL=YES are mutually exclusive.

SPECIAL=
Specifies whether (YES) or not (NO) the caller wants to skip getting the BERT lock for the JQA/JOA. The default is YES if INST= or POST= is specified. Otherwise the default is NO.
QSUSE=
Specifies whether (YES) or not (NO) the queues are guaranteed to be owned if the routine named by ROUTINE= is called. The default is YES.

Environment

  • JES2 main task only.
  • $WAIT cannot occur.

Return codes

Return codes (R15 on exit) FUNCTION=PROCESS
Return Code
Meaning
0
Processing successful (no errors).
4
FLUSH request with WAIT=NO and BERT lock not available; or any other duplicate request and ALLOWDUP=NO specified or implied.
8
DWA constructed, request deferred.
Return codes (R15 on exit) FUNCTION=CHECK
Return Code
Meaning
0
NO matching DWA found.
4
Matching DWA found.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014