A VMGROUP maps "user names" onto "suites". A "user name" is an 8 byte string that, for intended uses, should be eight upper case EBCDIC characters, padded to the right with blanks ala CP's user names. A "suite" is a VMCOMM object and a few other keys (....).
Virtual machines may join a "Group". Their virtual machine name is in relation to the group and the group defines which other machines they may communicate with using spool files, messages, VMCF, IUCV etc.
Being in a group is analogous to being in the CP user directory. It does not indicate whether or not the user is "logged on".
VMGROUPF(kt==>X'12345679')
CP simulator Group Communication Key
COMMQ - Communication Queue key
COMMQ(0,(8,tod),(8,sender),message==>c) Message for your VM
sender - The username of the sender
message - Text of message in EBCDIC
Return codes:
57 - Message cannot be accepted
COMMQ(2==>) There are one or more pending IUCV connections.
COMMQ(other{3 to 10}, ...) is accepted in the same forms as the CPGCOMM Key, and is queued and passed on unchanged.
57 - message cannot be accepted
Passed string (passed on second jump of extended jump protocol):
target_vmid(c8) - the userid of the virtual machine to which the path is to be established.
source_pathid(x2) - will be used in messages to the source_commq key to identify this path
msglim(i2) - the maximum number of outstanding messages which the source wishes to allow on the path
flags(x1) - contains the following bits:
X'40' - (quiesced) indicates that you do not want to receive messages until you do a resume operation.
X'20' - indicates that the source wants to send priority messages on this path.
X'04' - indicates the path is to be a control path
Returned string:
flags(x1) - contains the following bit:
1 - prompt_sb not a bank
2 - prompt_sb has insufficient space
3 - sb has insufficient space
4 - insufficient keys passed (extended jump protocol must be used)
5 - error writing to VMGROUPRC (out of space or implementation limit)
11 - target VM is not in the group (not "logged on")
12 - target VM has not invoked the DECLARE BUFFER function
13 - the path would exceed the maximum number of connections allowed for the source
14 - the path would exceed the maximum number of connections allowed for the target
18 - value in msglim exceeds 255
VMGVMCFF - VMCF path Factory for VM Group
The idea is to join a user to a VMGROUP that is not a CP simulator, but an adaptor that wields the kernel IUCV key and serves as a surrogate for a virtual machine in the real CP on the real machine. We propose to support paths that originate in a Keykos CMS and connect to a VM supported by the underlying real CP. It will appear that the path originates form the VM under Keykos, but that is ok.
VMADAPT(0,(8,vmname);VMCOMM==>c;)
If VMCOMM is associated with name v1 then an ivocation an IUCV "Connect" naming v1 as destination, from a CMS machine of the VMGROUP will cause an IUCV connection pending interrupt in the machine vmname on the real CP.
Sender's orders: SEND, SEND/RECV, CANCEL, IDENTIFY
Receiver's orders: RECEIVE, REPLY, QUIESCE, RESUME, REJECT
VMGVMCF(kt ==> X'12345681')