If you specify a data set name using OBTAIN and the CAMLST SEARCH
option, the OBTAIN routine reads the 96-byte data portion of the format-1
DSCB and the absolute track address of the DSCB into virtual storage.
The absolute track address is a 5-byte field in the form CCHHR that
contains zeros for VIO data sets.
The format of the OBTAIN and CAMLST macros is:
>>-+-------+--OBTAIN--listname_addrx---------------------------->
'-label-'
>--+-------------------------+--+-------------------+----------><
'-NUMBERDSCB=number_dscbs-' | .-NOTOK-. |
'-EADSCB=-+-OK----+-'
>>-listname--CAMLST--SEARCH--,dsname_relexp--,vol_relexp-------->
>--,wkarea_relexp--+-------------------------+------------------>
'-NUMBERDSCB=number_dscbs-'
>--+-------------------+---------------------------------------><
| .-NOTOK-. |
'-EADSCB=-+-OK----+-'
- listname_addrx
- Points to the parameter list (labeled listname) set up by the
CAMLST macro instruction.
- SEARCH
- Code this operand as shown.
- dsname_relexp
- Specifies the virtual storage location of a fully-qualified data
set name. The area that contains the name must be 44 bytes long.
Tip: A DSNAME of 44 bytes of X'04' (X'040404…04')
can be used to read a format-4 DSCB.
- vol_relexp
- Specifies the virtual storage location of the 6-byte volume serial
number on which the DSCB is located.
- wkarea_relexp
- Specifies the virtual storage location of a 140-byte work area
that you must define.
- 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. The actual number of DSCBs are returned
in a field located in the first 140-byte return area.
On
the OBTAIN macro you can code a register number or symbol for a register
number in parentheses. It 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 cylinder
addresses 65,520 or larger. 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 DSCB.
EADSCB=NOTOK sets
byte 2 bit 4 in the OBTAIN parameter list to zero.