>>-+--------+--$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.