Page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829 When DIAGNOSE Code X'08' is issued, the Rx and Ry registers must be
set up as follows:
Rx --Rx must point to the character string in virtual storage that
contains the CP commands and parameters. If the character
string contains mUltiple commands, each command and its
associated parameters must be separated from adjacent commands
by the value X'15'. Ry --The high-order byte contains flag bits; the other three bytes
specify, in bytes, the length of the CP commands and
parameters. The maximum allowable length is 132 characters. Set the flag bits as follows. If CP is to reject a password entered
on the same line as a LINK command, set the high-order bit to a value of
one (X'80'). CP rejects passwords only if the installation specified
password suppression during system generation. If CP 1S to return the command response in a buffer, set the second flag bit to a value of one (X'40'). If the Ry reqister contains the value X'OOOOOOOO', the DIAGNOSE Code
acts as a no-operation (NaP) instruction.
If the command response is to be returned in a buffer, Rx and Ry
cannot be consecutive registers nor can either be register 15. In
addition, the Rx+1 and Ry+1 registers must be setup as follows:
Rx+1 --Rx+1 must point to the buffer in virtual storage where CP is
to return the command response.
Ry+1 --Fy+1 must specify, in bytes, the length of the buffer. This
value must not exceed 8192.
If the command response is to be returned in a buffer, CP sets a
condition code and returns information as follows:
condition code 0 -- The request was successful. The Rx+1 register
points to the buffer that contains the command
response. The Ry+1 register specifies the length
of the response.
condition code 1 --The request was unsuccessful. The response does
not fit into the buffer. The Ry+1 register
contains a value that specifies how many bytes of
the response would not fit into the buffer.
If an error is encountered while processing DIAGNOSE Code X'08', CP prints an error message and sets a completion code in the Ry register.
The completion code is the hexadecimal representation of the numeric
portion of the error message. For example, if error message DMKCFM045E is issued, CP sets a completion code of X'002D' which is the hexadecimal
representation of 045. If CP is executing multiple commands and encounters an invalid
command, processinq stops and CP ignores the remaining commands.
Following are two examples X'08'. The first example shows
command. In this example the Note thatih a virtual
address (LRA) instruction must be
$howing how to specify DIAGNOSE Code
how a program-issues the QUERY FILES response is returned to the user's (VSl envitonment, a load real
used to load the Rx register. Part 2. Control Program (CP) 185
Page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829
CMMD
CMMDL
LA* 6,CMMD
LA 10,CMMDL DC X'83',X'6A',XL2'0008' DC EQU C'QUERY FILES' *-CMMD
The second example shows how to specify a string of commands when
multiple commands are to be issued.
CMMD
CMMDL
LA* 6,CMMD
LA 10,CMMDL DC X'83',X'6A',XL2'0008' DC
DC
DC EQU C' QUERY FILES' X' 15' C'PURGE PRINTER'
*-CMMD
*Note that if you are in CMS mode you must code a LRA instruction
instead of a LA instruction if you are running a virtual storage system
(for example, MVS) in a virtual machine and want to specify the address
of the CMMD parameter. DIAGNOSE Code X'OC' -- Pseudo Timer
Execution of DIAGNOSE Code X'OC' causes CP to store four doublewords of
time information in the user's virtual storage. The register specified
as Rx contains the address of the 32 byte area where the time
information is to be stored. The address must be on a doubleword
boundary. The information returned is in the format shown in Figure 22.
The first eight bytes contain the Month/Day-of-Month/Year. The next
eight bytes contain the time of day in Hours:Minutes:Seconds. The last
16 bytes contain the virtual and total processor time used by the
virtual machine that issued the DIAGNOSE. The last 16 bytes are
expressed as a doubleword, unsigned integer. The time is expressed in
microseconds. No completion code is returned, and the condition code remains unchanged. DIAGNOSE Code X'1 0' -- Release Pages Pages of virtual storage can be released by issuing a DIAGNOSE Code X'10'. When a page is released, it is considered all zero. The
register specified by Rx contains the address of the first page to be
released, and the Ry register contains the address of the last page to
be released. Both addresses must be on page boundaries. A page
boundary is a storage address whose low order three digits, expressed in
hexadecimal, are zero. No completion code is returned, and the
condition code remains unchanged.
Do not use DIAGNOSE Code X'10' to release noncontiguous storage: use DIAGNOSE Code X'64' for this purpose.
186 IBM VM/370 System programmer's Guide
Previous Page Next Page