address of the spool input card reader. Ry+1, on return, may contain
error codes as follows:
condition Ry+1
Error_Code Code
o
1
2
3
3
3
3 4 8
12
16 Data transfer successful
End of file
File not found
Device address invalid
Device type invalid
Device busy
Fatal paging I/O error
The D8KDRDMP routine searches the system chain of spool input files
for the duap file belonging to the user issuing the DIAGNOSE instruction. The first (or next) record from the dump file is provided to the virtual :achine via D!KRPIGT and the condition code is set to zero. The dump file is closed via V8/370 console function CLOSE. Execution of DIAGNOSE code X'38' causes the routine D!KDBDSY to read the
system table into storage.. The register specified as Bx contains the
address of the page buffer to contain the syabol table. DIAGNOSl! = VML370 J2irectory Execution of DIAGNOSE code X'3C' allows a user to dynamically update the Y8/370 directory. The register specified as Rx contains the first 4 bytes of the volume identification. The first two bytes of By contain
the last 2 bytes of the voluae identification. The routine D!KUDRDS dynamically updates the directory. :::: Accoun!ing Cards for the Virtual Use! This code can be issued only by a user with the account option (ACCT) in
his directory. Rx contains the virtual address of either a 24-byte paraaeter list
identifying the "charge to" user, or a variable length data area that is
to be punched into the accounting card. The interpretation of the
address is based on a hexadeciaal code supplied in RY. If the virtual
address represents a paraaeter 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 hexadeciaal code interpreted by D!KHVC as follows:
Code '0'0'00 0004 0008 OOOC 0010 !.! E2int§ !Q: a paraaeter list containing only a userid.
a paraaeter list containing a userid and account number. a paraaeter list containing a userid and distribution
nu.ber.
a paraaeter list containing a userid, account nu.ber, and
distribution nu.ber.
a data area containing up to 70 bytes of user information to
be transferred to the accounting card starting in colu.n
9.
CP Introduction 1-63
Rote: If Ry contains X'0010', Ry cannot be register 15. Ry.1 contains the length of the data area pointed to by Rx. If Rx points to a paraaeter list (Ry not equal to X'0010'), By .. 1 is ignored. DMKHVC checks the VSACCOUR flag in V!PSTAT to verify that the user
has the account option and if not, returns control to the user with a
condition code of one.
If Ry contains a code of X'0010', D!KBVC perforas the following checks: • If the address specified in Rx is negative or greater than the size
of the user's virtual storage, an addressing exception is generated. • If the coabination 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.1 is zero, negative, or greater than 70, a is If both the virtual address and the length are valid, DBlREE is
called to obtain storage for an account buffer (ACBTBLOK) which is then
initialized to blanks. The userid of the user issuing the DIAGBOSE instruction is placed in coluans 1 through 8 and an accounting card
identification code of "CO" is placed in coluans 79 and 80. The user
data pointed to by the address in Rx is .oved to the accounting card
starting at coluan 9 for a length equal to the value in Ry+1. A call to D!KACOQU queues the ACITBtOK for real output. If a real punch is
available, D!KACOPU is called to punch the card; otherwise, the buffer
is stored in .ain storage until a punch is free. DBKBVC then returns
control to the user with a condition code of zero.
If Ry contains other than a X'0010' code, control is passed to D!KCPV to generate the card. D!KCPV passes control to D!KACO to co.plete the
"charge to" infor.ation; either from the User Accounting Block (ACCTBtOK), if a pointer to it exists, or froa the user's VBBLOK. D!KCPV then punches the card and passes control back to D!KBVC to
release the storage for the ACCTBtOK, if one exists. D!KHVC then checks
the paraaeter list address for the following conditions: • If zero, control is returned to the user with a condition code of
zero. • If invalid, an addressing exception is generated. • If not aligned on a doubleword boundary, a specification exception is
generated. lor a parameter list address that is nonzero and valid, the use rid 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
hexadeciaal code are valid, the User Accounting Block (ACCTBtOK) is
built and the userid, account nuaber, and distribution nuaber are aoved to the block froa the parameter list or the User Machine Block belonging
to the userid in the paraaeter list. Control is then passed to the user with a condition code of zero.
1-64 IBM VM/370 System Logic and Problem Deteraination--Voluae 1
Previous Page Next Page