Page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829
ad dress is based on a hex adecimal code su pplied in R y. If th e virt ua I address represents a parameter list, it must be doubleword aligned; if
it represents a data area, the area must not cross a page boundary. If
Rx is interpreted as pointing to a parameter list and the value in Rx is
zeros, the accounting card is punched with the identification of the
user issuing the DIAGNOSE instruction.
Ry contains a hexadecimal code interpreted by DMKHVC as Cod,g 0000 0004 0008 OOOC 0010 Rx .12.Qints 12: a parameter list containing only a userid.
a parameter list containing a use rid and account a parameter list containing a userid and distribution
number.
a parameter list containing a userid, account number, and
distribution numter.
a data area containing up to 70 bytes of user information to
be transferred to the accounting card starting in column
9.
Note: If Ry contains X'0010', By cannot be register 15.
Ry+1 contains the length of the data area pointed to by Rx. If Rx
points to a parameter list (By not equal to X'0010'), Ry+l is ignored. DMKHVC checks the VMACCOUN flag in VMPSTAT to verify that the user
has the account option and if not, returns control to the user with a
condition code of one.
If By contains a code of X'0010', DMKHVC performs the following
checks: If the address specified in Bx is negative or greater than the size
of the user's virtual storage, an addressing exception is generated. If the combination of the address in Rx and the length in Ry+1
indicates that the data area crosses a page boundary, a specification
exception is generated. If the value in Ry+l is zero, negative, or greater than 70, a
specification exception is generated.
If both the virtual aodress and the length are valid, DMFREE is
called to obtain storage for an account buffer (ACNTBLOK) which is then
initialized to blanks. The userid of the user issuing the DIAGNOSE instruction is placed in columns 1 through 8 and an accounting card
identification code of "CO" is placed in columns 79 and 80. The user
data pointed to by the address in Rx is moved to the accounting card
starting at column 9 for a length equal to the value in Ry+1. A call to DMKACOQU queues the ACNTBIOR for real output. If a real punch is
available, DMKACOPU is called to punch the card; otherwise, the buffer
is stored in main storage until a punch is free. DMKHVC then returns
control to the user with a condition code of zero.
If By contains other than a X'0010' code, control is passed to DMKCPV to generate the card. passes control to DMKACO to complete the
"charge to" information; either from the User Accounting Block (ACCTBLOK), if a pointer to it exists, or from the user's VKBLOK. DMKCPV then punches the card and passes control back to DMKHVC to
release the storage for the ACCTBIOK, if one exists. DMKHVC then checks
the parameter list address for the following conditions: If zero, control is returned to the user with a condition code of
zero.
198 IBM VM/370 System programmer's Guide
Page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829 If invalid, an addressing exception is generated. If not aligned on a doubleword boundary, a specification exception is
generated.
For a parameter list address that is nonzero and valid, the userid in
the parameter list is checked against the directory list and if not
found, control is returned to the user with a condition code of two. If
the function hexadecimal code is invalid, control is returned to the
user with a condition code of three. If both userid and function
hexadecimal code are valid, the User Accounting Block (ACCTBLOK) is
built and the userid, account number, and distribution number are moved
to the block from the parameter list or the User ftachine Block belonging
to the userid in the parameter list. Control is then passed to the user
with a condition code of zero. Part 2. Control Program (CP) 198.1
Previous Page Next Page