You can read a DSCB from a VTOC using OBTAIN and the CAMLST SEEK
option. Specify the SEEK option by coding SEEK as the first operand
of the CAMLST macro and by providing the absolute device address of
the DSCB you want to read, unless the DSCB is for a VIO data set.
Only the SEARCH option can be used to read the DSCB of a VIO data
set.
The format of the OBTAIN and CAMLST macros is:
>>-+-------+--OBTAIN--listname_addrx---------------------------->
'-label-'
>--+-------------------------+--+-------------------+----------><
'-NUMBERDSCB=number_dscbs-' | .-NOTOK-. |
'-EADSCB=-+-OK----+-'
>>-listname--CAMLST--SEEK--,dsname_relexp--,cchhr_relexp-------->
>--,vol_relexp--,wkarea_relexp--+-------------------------+----->
'-NUMBERDSCB=number_dscbs-'
>--+-------------------+---------------------------------------><
| .-NOTOK-. |
'-EADSCB=-+-OK----+-'
- listname
- Label of the CAMLST macro instruction. .
- SEARCH
- Code this operand as shown when calling obtain to read by the
passed data set name.
- SEEK
- Code this operand as shown when calling obtain to read by the
passed CCHHR device address
- dsname_relexp
- For SEARCH requests, specifies the virtual storage location of
a fully-qualified data set name. The area that contains the name must
be 44-bytes long.
- cchhr_relexp
- For SEEK requests, specifies the virtual storage location of the
5-byte absolute device address (CCHHR) of a DSCB.
- vol_relexp
- Specifies the virtual storage location of the 6-byte volume serial
number on which the DSCB is located.
- wkarea_relexp
- For all requests, specifies the virtual storage location of a
140-byte work area, or larger, that must be defined.
- NUMBERDSCB
- Specifies a value between 0 and 255 that designates the number
of consecutive 140-byte return areas that are provided in wkarea_relexp.
The system treats a value of 0 as a 1. Currently the system does not
support a chain of more than 12 DSCBs for one data set, but it is
valid for you to provide an area that is longer than currently needed.
The system verifies that the provided area is valid. When you provide
an area that is long enough to contain more than one DSCB, OBTAIN
processing will return DSCBs for the requested data set name in logical
VTOC order until all the 140-byte return areas are used. The logical
VTOC order is a format-1 DSCB, followed by zero or more format-3 DSCBs
or a format-8 DSCB, followed by one or more format-9 DSCBs, followed
by zero or more format-3 DSCBs. No absolute maximum number of DSCBs
for a data set should be assumed. When the target of the seek operation
is not a format-1 or format-8 DSCB, the NUMBERDSCB value is treated
as if it were 1 and only that single DSCB will be returned.
On the OBTAIN macro, you can code a register number
or symbol for a register number in parentheses. This means that the
specified register contains the number of DSCBs that can fit in the
return area. If you code the NUMBERDSCB parameter on OBTAIN, the macro
execution stores the value in the CAMLST area. You cannot code a register
on the CAMLST macro.
Note that for programs run on a pre-z/OS
R10 system that do not support this keyword, the NUMBERDSCB value
will be treated as if it were 1.
- EADSCB
- Specifies whether this program supports data sets with format-8
and format-9 DSCBs. Such data sets can appear on extended address
volumes.
- EADSCB=OK
- Code EADSCB=NOTOK when
your program does not support data sets that have format-8 and format-9
DSCBs. The extent descriptors in DSCBs for a data set described
with these formats may have track addresses that contain 28-bit cylinder
numbers. EADSCB=OK is accepted for data
sets described by all DSCB types, including format-1 DSCBs, regardless
of the volume size where the data set resides. Your program can also
run on an older level of the system that does not support this keyword.
In these cases, EADSCB=OK is ignored. EADSCB=OK sets
byte 2 bit 4 in the OBTAIN parameter list to on.
- EADSCB=NOTOK
- Code EADSCB=NOTOK when your program
does not support DSCBs that describe data sets with
format-8 and format-9 DSCBs. EADSCB=NOTOK is
the default when the EADSCB keyword is not specified.
When EADSCB=NOTOK is
coded or assumed by default, OBTAIN will set return code 24 if the
target of the OBTAIN request has a format-8 or format-9 DSCB. OBTAIN
will not check format-3 DSCB extent ranges for track addresses that
contain 28-bit cylinder numbers.
EADSCB=NOTOK sets
byte 2 bit 4 in the OBTAIN parameter list to zero.