|
The format of the GENCB macro used to generate an exit list is:
[label]
|
GENCB
|
BLK=EXLST [,AM=VSAM] [,COPIES=abs expression] [,EODAD=(address[,A|N][,L])] [,JRNAD=(address[,A|N][,L])] [,LENGTH=abs expression] [,LERAD=(address[,A|N][,L])] [,LOC=BELOW|ANY] [,SYNAD=(address[,A|N][,L])] [,RLSWAIT=(address[,A|N][,L])] [,WAREA=address]
|
The subparameters of the GENCB 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.
See: z/OS DFSMS Using Data Sets for
the factors that determine the addressing mode and the parameter list
residency mode set when the exit routine gets control.
- label
- specifies 1 to 8 characters that provide a symbolic address for
the GENCB macro.
- BLK=EXLST
- specifies that you are generating an exit list.
- AM=VSAM
- specifies that the access method using this control block is VSAM.
- [,EODAD=(address[,A|N][,L])]
- [,JRNAD=(address[,A|N][,L])]
- [,LERAD=(address[,A|N][,L])]
- [,SYNAD=(address[,A|N][,L])]
- [,RLSWAIT=(address[,A|N][,L])]
- specifies that you are supplying a routine for the exit named.
For more information about user exit routines, see z/OS DFSMS Using Data Sets.
If
none of these user exit routines is specified, VSAM generates an exit
list with inactive entries for all the exits. The exits and values
that can be specified for them are: - COPIES=abs expression
- specifies the number of copies of
the exit list you want generated. GENCB generates as many copies as
you specify (default is 1) when your program is executed. All copies
are the same. You can use MODCB to change some or all of the addresses
in a list. MODCB is described in MODCB—Modify an access method control block.
- EODAD
- specifies that an exit is provided for special processing when
the end of a data set is reached by sequential access.
- JRNAD
- specifies that an exit is provided for journaling as you process
data records. For RLS, JRNAD is not supported and you receive an error
if you open the ACB. This parameter has no effect for z/OS UNIX
files.
- LERAD
- specifies that an exit is provided for analyzing logical errors.
- SYNAD
- specifies that an exit is provided for analyzing physical errors.
- RLSWAIT
- specifies that an exit is provided for wait processing. For RLS
the UPAD exit is ignored if it is specified, and the RLSWAIT exit
is used to perform a similar function.
- address
- specifies the address of a user-supplied exit routine. The address
must immediately follow the equal sign.
- A|N
- specifies that the exit routine is active (A) or not active (N).
VSAM does not enter a routine whose exit is marked not active.
- L
- specifies the address is an 8-byte field containing the name of
an exit routine in a partitioned data set identified by a JOBLIB or
STEPLIB DD statement or in SYS1.LINKLIB. VSAM is to load the exit
routine for exit processing. If L is omitted, the address gives
the entry point of the exit routine in virtual storage, and the exit
routine is entered in the addressing mode of the VSAM caller.
L may precede or follow the A or N specification.
- LENGTH=abs expression
- specifies the length, in bytes, of the area, if any, that you
are supplying for VSAM to generate the exit lists. (See the WAREA
parameter.) The
LENGTH value cannot exceed 65535 (X'FFFF').
- LOC=BELOW|ANY
-
- BELOW
- specifies VSAM is to construct an exit list in an area below 16
megabytes at execution time.
- ANY
- specifies VSAM is to construct an exit list in an area above 16
megabytes, if possible, at execution time.
The LOC parameter is different
from other GENCB parameters. If you code it on the list form, the
execute form always overrides it. If you want LOC=ANY when using
the list and execute forms, you must code it on the execute form.
For more information, refer to GENCB—List form and GENCB—Execute form.
- WAREA=address
- specifies the address of an area in which to generate the exit
lists.
If you did not specify an area in which the exit list is
to be generated, VSAM obtains virtual storage space for the area (as
specified by the LOC=keyword). Subpool 0 will be requested under the
user's key and state. Users executing in key 0 and supervisor state
will actually be assigned subpool 252. VSAM returns the address of
the area in which the exit lists is to be generated in register 1,
and the length of the area in register 0. You can find the length
of each exit list by dividing the length of the area by the number
of copies. The address of each exit list can then be calculated by
this offset from the address in register 1. You can find the length
of an exit list with the SHOWCB macro, described under
SHOWCB—Display fields of an exit list. If you are generating
control blocks by issuing several GENCBs, specifying an area (WAREA
and LENGTH) for them allows you to address all of them with one base
register and to avoid repetitive requests for virtual storage.
|