|
The format of the DEBCHK macro is:
>>-+-------+--DEBCHK--cbaddr------------------------------------>
'-label-'
>--+------------------------------+--+--------------------+----->
| .-VERIFY------------. | '-,AM=-+-amtype----+-'
'-,TYPE=-+-ADD---------------+-' +-(amaddr)--+
+-DELETE------------+ '-((amreg))-'
+-PURGE-------------+
'-PURGE,PURGE=FORCE-'
>--+------------------+--+------------------+------------------->
| .-NO--. | '-,TCBADDR=address-'
'-,BRANCH=-+-YES-+-'
>--+------------------+--+-------------+--+-------+------------><
+-,KEYADDR=address-+ '-,SAVREG=reg-' '-,MF=L-'
'-,KEYREG=reg------'
- cbaddr
- Control block address.
- for BRANCH=NO
- RX-type address, (2-12), or (1)
A control block address passed to the DEBCHK
routine. This operand is ignored if MF=L is coded. For verify, add,
and delete requests, cbaddr is the address
of a DCB or ACB that points to the DEB whose address is either verified
to be in the DEB table, added to the DEB table, or deleted from the
DEB table. For the purge function, cbaddr is
the address of the DEB whose pointer is to be purged from the table:
No reference is made to the DCB or ACB.
Recommendation: A spooled DCB's DEB does not
point back to the DCB, but to the spooled ACB; in this case, the DEBCHK
should be issued against the ACB.
- for BRANCH=YES
- The A-type address of a 4-byte field, or a register (3-9) or (12),
that points to the DCB or ACB containing the DEB to be verified.
- TYPE=VERIFY or ADD or DELETE or PURGE or PURGE,PURGE=FORCE
- Indicates
the function to be performed. If MF=L is coded, TYPE is ignored.
The functions are:
- VERIFY
- This function is assumed if the TYPE operand is not coded. The
control program checks the DEB table to determine whether the DEB
pointer is in the table at the location indicated by the DEBTBLOF
field of the DEB. The DEB is also checked to verify that DEBDCBAD
points to the DCB (or ACB) passed to DEBCHK. The DEBAMTYP field in
the DEB is compared to the AM operand value, if given. The two must
be equal. TYPE=VERIFY can be issued in either supervisor or problem
state.
- ADD
- The DEB and the DCB (or ACB) must point to each other before the
DEB address can be added to the DEB table. Before the DEB pointer
can be added to the table, the DEB itself must be queued on the current
TCB DEB chain (the TCBDEB field contains the address of the first
DEB in the chain). DEBCHK adds the DEB address to the DEB table at
some offset into the table. DEBCHK places a value in the DEBTBLOF
field of the DEB and inserts the access method type into the DEBAMTYP
field of the DEB. DEBCHK places a zero in the DEBAMTYP field if the
AM operand is not coded. TYPE=ADD can be issued only in supervisor
state.
- DELETE
- The DEB and the DCB (or ACB) must point to each other before the
DEB address can be deleted from the DEB table. TYPE=DELETE can be
issued only in supervisor state.
- PURGE
- DEBCHK removes the DEB pointer from the DEB table without checking
the DCB (or ACB). TYPE=PURGE can be issued only in supervisor state.
- PURGE,PURGE=FORCE
- DEBCHK removes the DEB pointer from the DEB table without checking
the DCB (or ACB). The caller must be in system key, supervisor state,
hold the local lock, and the passed DEB pointer must exist in the
DEB table but not represent a valid DEB.
- AM
- Specifies an access method value. Each value corresponds to a
particular access method type (note that BPAM and SAM have the same
values):
Value |
Type |
---|
(X'00') |
NONE |
(X'01') |
VSAM |
(X'02') |
EXCP |
(X'04') |
Not supported |
(X'08') |
GAM |
(X'10') |
TAM |
(X'20') |
BPAM |
(X'20') |
SAM |
(X'40') |
BDAM |
(X'81') |
SUBSYS |
(X'84') |
Not supported |
The operand can be coded in one of the following three
ways, only the first of which is valid for the list form (MF=L) of
the instruction. - amtype
- Refers to the access method: BDAM, SAM, BPAM, TAM (which
refers to BTAM only), GAM, EXCP, or VSAM. SUBSYS
identifies a subsystem of the operating system, such as a job entry
subsystem. NONE indicates that no access method or subsystem is specified.
- (amaddr)
- The RS-type address of the access method value. This format cannot
be coded when MF=L is used.
- ((amreg))
- One of the general registers 1 through 14 that contains the access
method value in its low-order byte (bit positions 24 through 31).
The high-order bytes are not inspected. This form cannot be used when
MF=L is coded.
The use of amaddr and amreg should
be restricted to those cases where the access method value has been
generated previously by the MF=L form of DEBCHK. If MF=L is not coded,
the significance of the AM operand depends upon the TYPE.
If
TYPE is ADD and AM is specified, the access method value is inserted
in the DEBAMTYP field of the DEB, and all subsequent DEBCHK macros
referring to this DEB must either specify the same AM or omit the
operand. When the AM operand is omitted for TYPE=ADD, a null value
(0) is placed in the DEB and all subsequent DEBCHK macros must omit
the AM operand.
If AM is specified when the TYPE is PURGE,
DELETE, or VERIFY, the access method value is compared to the value
in the DEBAMTYP field of the DEB. If AM is omitted, no comparison
is made.
- BRANCH=NO or YES
- Specifies whether you want to use the branch entry to the DEBCHK
verify routines.
- NO
- SAVREG
- TCBADDR
- KEYADDR
- KEYREG
- Specifies branch entry is not to be used. The program ignores
operands SAVREG, TCBADDR, KEYADDR, and KEYREG. Your program must be
running in TCB mode.
- YES
- Specifies the branch entry is to be used. TYPE=VERIFY must be
implicitly or explicitly specified. The operands TCBADDR and KEYADDR/KEYREG
are required. AM and MF are ignored. Notes for BRANCH=YES:
- Your program can run in TCB or SRB mode.
- Registers 1, 2, 10, 11, 14, and 15 must not be used for SAVREG=.
- Registers 1, 2, 10, 11, 14, 15, and the register specified for
SAVREG= must not be used for cbaddr, TCBADDR=,
or KEYADDR=/KEYREG=.
- The contents of registers 10, 11, and 14 are unpredictable on
completion. Also, if you do not specify SAVREG=, the contents of
register 2 are unpredictable.
- At completion, register 1 contains the address of the DEB, and
register 15 contains either 0, 4, or 16 (see Return Codes from DEBCHK for
codes and their meanings).
- Can be specified when operating in 24-bit or 31-bit addressing
mode.
- TCBADDR=address—RX-type address,
(3-9), or (12)
- Specifies the word or register containing the address
of the TCB to be used by the DEBCHK verify routine. Use this operand
only with BRANCH=YES.
- KEYADDR=address—RX-type address
- Specifies the location, or a register that points to the location,
of a byte containing the key to be used when accessing the
DCB (or ACB). The protection key is in bits 0 to 3. Use this
operand only with BRANCH=YES.
- KEYREG=reg
- Specifies the register containing the key value in bit positions
24-27 to be used when accessing the DCB(or ACB). Use this operand
only with BRANCH=YES.
- SAVREG=reg
- Specifies the register in which register 2 is to be saved. Use
this operand only with BRANCH=YES.
- MF=L
- Indicates the list form of the DEBCHK macro instruction. When
MF=L is coded, a parameter list is built, consisting of the access
method value that corresponds to the AM keyword. This value can be
referred to by name in another DEBCHK macro by coding AM=(amaddr),
or it can be inserted into the low-order byte of a register before
issuing another DEBCHK macro by coding AM=((amreg)).
|