DIAGNOSE Code X'25C' – Directory Query

Privilege Class: B

Addressing Mode: 24-bit or 31-bit

DIAGNOSE code X'25C' is a privileged function provided to allow applications access to the data in the CP user directory. Applications should use the VMUDQ macro to invoke the functions contained herein. For more information on the VMUDQ macro, refer to VMUDQ – VM User Directory Query.

Entry Values:
Rx
contains the address of the parameter list.
Ax
is used only in access-register mode in an XC virtual machine. Ax contains the ALET of the address space containing the parameter list.
Ry
contains the address of the data buffer. Register 0 selects the virtual machine's primary address space.
Ay
contains the ALET of the address space.
Ry+1
contains the size of the data buffer in bytes.
Exit Values:
Rx
is modified to contain the length in bytes of the results of the query if successful or the number of bytes needed for the query if the buffer length is not sufficient. Otherwise, it remains unchanged.
Rx+1
might or might not be used. See the description of the function in the Table 1 for details.
Ry and ARy
remains unchanged, describing the location of the data buffer.
Ry+1
is modified to contain the length in bytes of the results of the query.
Table 1. DIAGNOSE X'25C' Function List
Function Description and Parameters
LSTMDISK Creates a list of MDISK definitions based on, or qualified by, the owners to which they belong, virtual device number, serial number of the volume, and the SSI member on which they reside. An asterisk (*) can be used as a trailing wild card to select a wider group of definitions. The list is built in the buffer provided by the caller.
Input Parameter List: Consists of six doublewords as shown in the following example:
   *-------------------------------------------------------------*     
 0 |           Length             | ///////// Reserved ///////// |     
   |-------------------------------------------------------------|     
 8 |                          LSTMDISK                           |     
   |-------------------------------------------------------------|     
 16|                       *|userid|use*                         |     
   |-------------------------------------------------------------|     
 24|                       *|vdevno|vdev*                        |     
   |-------------------------------------------------------------|     
 32|                       *|volser|vols*                        |     
   |-------------------------------------------------------------|     
 40|                      *|systemid|sys*                        |     
   *-------------------------------------------------------------*
The parameter list is a maximum of six doublewords long. It must be on a doubleword boundary and must not span a page boundary.
length
The length is a fullword containing the length in bytes of the length field itself, the reserved field, and the parameter string that follows. The length field must be one of the following values: 16, 24, 32, 40, or 48.
LSTMDISK
is the name of the function to be performed by the DIAGNOSE. The function must be LSTMDISK.
* | userid | use*
selects MDISK definitions that belong to the specified user IDs. The user ID from a USER or IDENTITY directory statement can be used. SUBCONFIG IDs cannot be specified. Definitions belonging to multiple owner ID's are selected by the use of an asterisk (*). An asterisk (*) by itself indicates that all definitions are to be analyzed regardless of userid. An asterisk (*) used as a trailing wild card selects definitions that belong to a group of userids that begin with the specified character combination. The value is left-justified in the field and padded to eight characters with blanks. The default assumed if the field is blank is an asterisk (*).
* | vdevno | vdev*
selects MDISK definitions that are defined to the specified virtual device numbers. Multiple vdevnos are specified by the use of the asterisk (*). An asterisk (*) by itself causes all MDISK definitions to be selected regardless of vdevno. An asterisk (*) used as a trailing wild card causes selection of MDISK definitions found on the selected virtual devices where the combined value indicates a range of addresses beginning with a common value. A four-digit address is assumed; therefore, 000* would mean 0000 through 000F, and 04* would mean 0400 through 04FF. The value is left-justified in the field and padded to eight characters with blanks. The default assumed if the field is blank is an asterisk (*).
LSTMDISK (cont'd.)
* | volser | vols*
selects MDISK definitions that are found on the volume containing the specified volume serial number. An asterisk (*) can be used as a trailing wild card to select a range of volsers that begin with a common set of characters. An asterisk (*) by itself indicates that the definitions on all the volumes are to be analyzed. The value is left-justified in the field and padded to eight characters with blanks. The default assumed if the field is blank is an asterisk (*).
* | systemid | sys*
selects MDISK definitions that are found on the specified SSI member system. An asterisk (*) can be used as a trailing wild card to select a range of systems that begin with a common set of characters. An asterisk (*) by itself indicates that the MDISK definitions on all member systems are to be analyzed. The value is left-justified in the field and padded to eight characters with blanks. If the field is blank, the default assumed is blank, indicating that only the MDISK definitions on the current system are to be analyzed. Specifying a system other than by an asterisk or a blank is allowed only when an SSI-enabled directory is in use.
Output Buffer Format: Consists of seven blank-delimited fields containing the information indicated in the example below:
OWNERID- VDEV VOLSER DEVTYPE- START----- SIZE------ System         
12345678 1234 123456 12345678 1234567890 1234567890 12345678       
---------+---------+---------+---------+---------+---------+-------
User123  0191 ABC123 3390     0000000010 0000000200                
User456  0191 CCC123 FB-512   0000000010 0000200000                
User789  0222 CCC222 3380     0000000010 END                       
UserABC  0223 ABC223 3370     0000000000 0000200000 SYSTEMABC      
Notes:
  1. In the above example the START field can contain either the starting cylinder or block number. The SIZE field contains the remaining number of cylinders or blocks. The non-device specific END in the size field denotes the end of the volume. Also, the header lines are not part of the returned data.
  2. If the MDISK was defined with a size of END, then the size returned in the output buffer is simply END.
  3. Temporary disks (T-disks) and virtual disks in storage are ignored by the LSTMDISK function and are not included in the output buffer.
  4. If the MDISK is defined within a SUBCONFIG stanza, the system ID to which the MDISK is restricted is included in the output buffer. If the MDISK is defined within a user or identity stanza, then no system ID is specified because the MDISK is not restricted to a particular system.