|
The format of the TESTCB macro used to test fields in an exit list
is:
[label]
|
TESTCB
|
EXLST=address [,ERET=address] ,{EODAD={0|([address][,A|N][,L])}| JRNAD={0|([address][,A|N][,L])}| LERAD={0|([address][,A|N][,L])}| SYNAD={0|([address][,A|N][,L])}} [,EXLLEN=abs expression]
|
The subparameters of the TESTCB macro can be expressed as absolute
numeric expressions, as character strings, as codes, as expressions
that generate valid relocatable A-type address constants, in register
notation, as S-type address constants, and as indirect S-type address
constants. Subparameters with GENCB, MODCB, SHOWCB, and TESTCB, further defines these
operand expressions. - label
- specifies 1 to 8 characters that provide a symbolic address for
the TESTCB macro.
- EXLST=address
- specifies the address of the exit list whose information you want
to test. You may omit it only if you are testing the maximum length
of an exit list (EXLLEN=number). The TESTCB macro does not support
the UPAD user exit.
- ERET=address
- specifies the address of a routine to which VSAM gives control
if an error occurs and VSAM is unable to test for the specified condition.
For example, testing AVSPAC in an access method control block for
an unopened data set would fail. VSAM indicates in register 15 whether
it could do the test and, if not, indicates in register 0 the reason
it could not. (The reasons are discussed under Control block manipulation macro return and reason codes.)
A
failure trying to execute TESTCB indicates a basic logical problem
in the processing program, so the error routine would probably issue
an ABEND. If it lets the program continue, it must branch to the continuation
point itself, and not return to VSAM.
- EODAD={0|([address][,A|N][,L])}|
- JRNAD={0|([address][,A|N][,L])}|
- LERAD={0|([address][,A|N][,L])}|
- SYNAD={0|([address][,A|N][,L])}
- specifies the exit about which you are asking a yes-no question.
If you code more than one parameter for an exit name, each must equal
the corresponding value in the control block for you to get an equal
condition. The values that can be tested are:
- 0
- specifies that a test is to be made to determine whether an entry
is provided for the exit in the exit list.
- address
- specifies that a test is to be made to determine whether this
is the address of the exit. Tests for an address result in an equal,
unequal, high, low, not-high, or not-low condition. Tests for a combination
of an address and A, N, or L result in an equal or unequal condition.
- A|N
- specifies that a test is to be made to determine whether an exit
is active (A) or not active (N). Tests for A or N result in an equal
or unequal condition.
- L
- specifies that a test is to be made to determine whether the address
is the location of an 8-byte field containing the name of a module
to be loaded rather than the entry point of the routine. Tests for
L result in either an equal or unequal condition.
- EXLLEN=abs expression
- specifies
either the maximum length that an exit list can have (if you do not
code the EXLST parameter) or the actual length of the exit list that
is indicated by the EXLST parameter. If you specify an exit, you may
not also specify EXLLEN. If you specify EXLLEN, you may not also specify
an exit.
If you omit a routine to handle error conditions, you can examine
register 15 following TESTCB by using a branch table. Do not alter
the PSW condition code that VSAM set to indicate the result of a test
until you have tested it.
|