The source of VMCOMM keys is described at (vmgroup). The normal use is described at (jvmg).
VMCOMM(register{=0};CPGCOMM==>c,(8,vmname)) Register CP simulator with Group
Return Codes:
1 - There is already a VM registered under this name. The vmname is not returned and the CP simulator is not registered for communications.
Return Codes:
45 - vmname not logged on (not joined).
57 - Not receiveing, edata specifies why.
VMCOMM(retrieve_buffer{=3}==>) Retrieve IUCV buffer.
flags - As follows:
X'20' - indicates you want to send priority messages on this path
X'40' - Path is quisced
X'80' - Data may be sent in the parameter list
msglim - Maximum number of outstanding messages on path
userdata - User data sent by connector
S - The segment that will contain the IUCV message buffers (i.e. the virtual machine's real memory segment).
Return Codes:
flags(x1) - contains the following bit:
11 - target_vmid not logged on (joined to group)
12 - target_vmid has not completed DECLARE BUFFER
13 - Maximum number of paths exceeded for source VM
14 - Maximum number of paths exceeded for target VM
15 - Connection not authorized
16 - Invalid IUCV system service name
18 - msglim > 255
Returned string:
flags - As follows:
X'40' - Path is initially quiesced
X'80' - Data may be sent in the parameter list
userdata - User data sent by connector
1 - there are no pending IUCV connections
S - Required only on the VMCF AUTHORIZE operation. The segment that will contain the VMCF message data (i.e. the virtual machine's real memory segment).
Return Codes:
CP simulator saves address of buffer & length. Gives rc=1,2,6.
VMGROUP saves the 3 flags, the specific username authorized (if applicable), and the length of buffer.
VMGROUP forgets authorization, destroys any VMCF path objects connected to this virtual machine. (Pending sends to that VM must get rc=5).
VMGROUP implements it.
VMGROUP implements it.
VMGROUP implements it.
VMGROUP implements it. N.B. group recognizes overlap (rc=17).
VMGROUP implements it.
VMGROUP implements it. N.B. group recognizes overlap (rc=17).
VMGROUP implements it.
VMGROUP implements it.
VMGROUP implements it.
VMGROUP implements it.
Return Codes:
45 - vmname not logged on (not joined).
57 - Not receiveing, edata specifies why.
1 - Name is not in group
(8,ownerid) - userid to queue file for
(8,creatorid) - userid of the file's creator
(8,formname) - Printer form name
(8,tod) - Time of file creation
- The name given to the spool file
(4,recordcount) - The number of records in the file
(2,spoolid) - Sender's spoolid 1-9900.
(2,maxrecord) - The length of the longest record
(1,class) - The CP spool class for this file
(1,copycount) - Number of copies to print (1-255)
(1,type) - The type of the file
1 - Punch file
2 - Printer file
Return Codes:
1 - Name is not in group, file has not been sent
Return Codes:
S - The segment that contains the spool file
Internal Logic
Order code 0: If there is a CP simulator Group Communication key in the group record collection which is not DK0, return code 1 is returned. Otherwise the key passed is stored in the record collection and return code 0 + the user name are returned.
Order code 1: The tod stamp and the "MESSAGE FROM <uid >: " header are placed on the message and the result is passed to the queue domain of the reciepent's VMCOMM object where it is queued for the notifier domain. The return code and data from the queue domain are returned to the caller.