RDJFCB uses DCB exit list entry type 13 to retrieve allocation
information (JFCBs and volume serial numbers) for data sets that might
be concatenated. The exit list entry code is X'13', and is
defined as “retrieve allocation information.” The second through fourth
bytes of this entry must point to an allocation retrieval list (ARL),
as described in Table 1. If you issue RDJFCB,
this DCB exit list entry retrieves all JFCBs for the specified
concatenated data sets, and lists of all volume serial numbers for
these data sets. The block size, as specified on the DD statement
of each data set, is put into the extended information segment following
the volume serial numbers. If this block size field is 0, the block
size of the data set is in the JFCB. You can either select JFCBs in
the concatenation or, by default, retrieve all of them. RDJFCB uses
the parameter list to receive and return information about the request.
See Figure 1 for an example of usage.
OPEN TYPE=J does not recognize this exit list entry.
You
can use the IHAARL macro (shown here) to generate and map the ARL.
Your program might issue a GETMAIN or STORAGE macro for the ARL, or,
if you specify DSECT=NO, the ARL is generated within your program's
storage. The ARL must be below 16 MB. The allocation retrieval area
(ARA), acquired by RDJFCB through a GETMAIN macro, can be above or
below 16 MB.
The format of the IHAARL macro is:
>>-+-------+--IHAARL--+----------------+--+----------------+---->
'-label-' | .-YES-. | '-,PREFIX=prefix-'
'-DSECT=-+-NO--+-'
>--+-----------------+-----------------------------------------><
| .-NO--. |
'-,DESCR=-+-YES-+-'
- DSECT=YES or NO
- Specifies whether the symbol at the beginning of the generated
area appears on a DSECT instruction or a DC instruction. For DSECT=NO,
the symbol appears on a DC instruction. The default is DSECT=YES.
- PREFIX=prefix
- Allows you to invoke the macro more than once per assembly. Specifies
a character string with which all generated symbols are to be prefixed.
Do not specify delimiters, such as quotation marks. If you omit this
operand or specify a null value, the prefix defaults to the characters
ARL.
- DESCR=YES or NO
- Specifies whether the macro expansion includes the macro description
(prolog). The default is DESCR=NO.
Table 1 and Table 2 describe
the formats of the allocation retrieval list and allocation
retrieval area, respectively.
Table 1. Format
of the Allocation Retrieval List (mapped by the IHAARL macro)Offset |
Bytes |
Name |
Description |
---|
The following fields are set by the caller of RDJFCB.
|
0 (X'00') |
2 |
ARLLEN |
Length of this area. Value should be 36. |
2 (X'02') |
2 |
ARLIDENT |
EBCDIC 'AR' |
4 (X'04') |
1 |
ARLOPT1 |
Option byte. |
|
0 . . . . . . . |
ARLLANY |
ARA must be below 16 MB. |
|
1... .... |
|
ARA can be above 16 MB. |
|
.1.. .... |
ARLUSS |
Request ARA have a path name for each entry
for which PATH was coded. |
|
. .xx xxxx |
|
Reserved. Must be zero. |
|
|
|
|
5 (X'05') |
7 |
ARLRSVD1 |
Reserved. Must be zero. |
12 (X'0C') |
2 |
ARLRETRV |
Number of data sets for which to retrieve information.
If 0, retrieve all in the concatenation. |
14 (X'0E') |
2 |
ARLFIRST |
Number of first data set in concatenation for
which to retrieve information. 0 or 1 specifies retrieval of information
beginning with first data set in the concatenation. |
The following fields are set by RDJFCB
|
16 (X'10') |
4 |
ARLAREA |
Address of ARA. See Table 2. |
20 (X'14') |
1 |
ARLPOOL |
Storage subpool containing ARA. |
21 (X'15') |
3 |
ARLRLEN |
Length of ARA. |
24 (X'18') |
2 |
ARLRTRVD |
Number of concatenated data sets for which JFCBs
were retrieved. |
26 (X'1A') |
2 |
ARLCONC |
Number of concatenated data sets. If no concatenation,
this value is 1. |
28 (X'1C') |
1 |
ARLRCODE |
Reason Code: - 0 = Requested information was read.
The following reason codes are related to return code 8:
- 4 = ARLFIRST is greater than ARLCONC.
- 8 = Insufficient storage to read information. ARLPOOL and ARLRLEN
describe what RDJFCB needs.
|
29 (X'1D') |
7 |
ARLRSVD2 |
Reserved. Used by RDJFCB. |
Table 2. Format
of the Allocation Retrieval Area (mapped by the IHAARA macro)Offset |
Bytes |
Name |
Description |
---|
0 (X'00') |
2 |
ARALEN |
Length of the information for this data set (including this
field). The starting address of the ARA plus the value in the length
field designates the address of the ARA for the next data set in the
concatenation, if requested. Do not use the length field to calculate
the number of volumes. |
2 (X'02') |
1 |
ARAFLG |
Flags. |
|
1... .... |
ARAXINF |
Extended information segment is present. |
|
.xxx xxxx |
|
Reserved. Must be zero. |
3 (X'03') |
1 |
ARAXINOF |
Offset in doublewords from the beginning of
the allocation retrieval area for the current data set to the extended
information segment. |
4 (X'04') |
176(Dec) |
ARAJFCB |
JFCB |
180 (X'B4') |
variable |
* |
Sixth and subsequent volume serial numbers. Determined by
the value in JFCBNVOL. If the number of volume serial numbers is
fewer than the specified volume count, entries at the end of the list
might contain all blanks. If the first byte of an entry is X'FF',
the JCL-specified VOL=REF and the volume could not be determined. |
Extended Information Segment. The DSECT name is ARAXINFO.
|
0 (X'00') |
2 |
ARAXINLN |
Length of the extended information segment (including
this field). |
2 (X'02') |
2 |
ARAPATHO |
If other than zero, ARAPATHO is the offset from beginning of
extended information segment to the path name (ARAPATHNAME); in this
case, the data set name in the JFCB is meaningless. If zero, then
this entry does not contain a path name. |
4 (X'04') |
4 |
|
Reserved. Must be 0. |
8 (X'08') |
8 |
ARAXLBKS |
Block size for this data set or 0. If 0 then
block size can be found in the JFCB in ARAJFCB. If
JFCBLKSZ is set, this field will be returned with a value of 0. |
16 (X'10') |
8 |
ARABKSLM |
The maximum allowed value for system determined
block size (BLKSZLIM or DFABLKSZ value in DFA). This integer value
is meaningful only if block size (BLKSIZE) is omitted from all sources
and the application program opens for output. It is the first value
available from these sources: - BLKSZLIM keyword on the DD statement or dynamic allocation.
- Block size limit in data class. Set by storage administrator.
Available even if the data set is not SMS-managed.
- System default set in TAPEBLKSZLIM keyword in DEVSUPxx member
in SYS1.PARMLIB by system programmer. Also available in DFA.
- 32760
The minimum value in the current level of the operating system
is 32760.
|
24 (X'16') |
16 |
* |
Reserved. |
The following fields
are present only if ARAPATHO is non-zero: |
|
|
ARAPATHNAME |
DSECT |
x |
2 |
ARAPATHLEN |
Length of path name, excluding any trailing blanks. Calculate
the value of x by adding the value in the two bytes in ARAPATHO to
the address of ARAXINLN. |
x+2 |
255 |
ARAPATHNAM |
Path name. |
|
257 |
ARAPNAMLEN |
Symbolic length of maximum path name section. |
When you have finished using information from the retrieval areas,
you should issue FREEMAIN or STORAGE macro to free any areas that
were acquired through GETMAIN (including the ARA, acquired by RDJFCB).
When coding the FREEMAIN or STORAGE macro, specify the length, subpool,
and address values from the ARLRLEN, ARLPOOL,
and ARLAREA fields, respectively. The DSECT name is ARAXINFO.
Code the FREEMAIN macro as shown:
FREEMAIN RU,LV=length,SP=subpool,A=address
If RDJFCB successfully fills in the ARL field, register 15 is set
to zero. Otherwise see Table 1.