Guidelines for Using the CMS Support of IUCV

Some IUCV macro functions affect the IUCV environment of the entire virtual machine. Because CMS cannot intercept any IUCV macro functions directly issued by a program, any CMS application program using IUCV has certain limitations on its use of IUCV functions. The program must not issue any IUCV function that interferes with the operation of other IUCV applications running in the same virtual machine.

Each IUCV macro function is listed below, along with an explanation of how the IUCV function can be used in a CMS application program. If a program does issue any IUCV functions listed as Should not be used…, other programs using IUCV in CMS in the same virtual machine may be affected.

Use the following functions only to set up the parameter list:
ACCEPT
Is invoked by a program using CMSIUCV ACCEPT. It should not be issued directly by a program in CMS, except to set up an IUCV ACCEPT parameter list (MF=L).
CONNECT
Is invoked by a program using CMSIUCV CONNECT. It should not be issued directly by a program in CMS, except to set up an IUCV CONNECT parameter list (MF=L).
SEVER
Is invoked by a program using CMSIUCV SEVER. This function should not be issued directly by a program in CMS, except to set up an IUCV SEVER parameter list (MF=L). CMSIUCV SEVER checks to make sure that the IPALL bit is not turned on in the IPFLAGS1 parameter list, because this would sever all paths in the virtual machine.
Use these functions freely, but with caution as noted under each function:
PURGE
Can be issued directly by a program in CMS.
QUERY
Can be issued directly by a program in CMS. This function is also used by HNDIUCV to determine the size of the external interrupt buffer and the maximum number of connections for this virtual machine.
QUIESCE
Can be issued directly by a program in CMS to quiesce a specific path. However, the issuing program must be careful that the IPALL bit is not turned on in the IPFLAGS1 parameter list, because this would quiesce all paths in the virtual machine.
RECEIVE
Can be issued directly by a program in CMS. However, the issuing program must be careful that a specific message ID or path ID is specified in the IUCV parameter list. If it is not, IUCV receives the first message that has not yet been partially received for the entire virtual machine, and this message may not belong to the program that issued the RECEIVE.
REJECT
Can be issued directly by a program in CMS.
REPLY
Can be issued directly by a program in CMS.
RESUME
Can be issued directly by a program in CMS to resume a specific path. However, the issuing program must be careful that the IPALL bit is not turned on in the IPFLAGS1 byte of the parameter list, because that would resume all paths in the virtual machine.
SEND
Can be issued directly by a program in CMS.
TESTCMPL
Can be issued directly by a program in CMS. However, the issuing program must be careful that the specified message ID or path ID is also specified in the IUCV parameter list. If it is not, IUCV completes the first message on the REPLY queue for the entire virtual machine, and this message may not belong to the program that issued the TESTCMPL.
Do not use these functions in a CMSIUCV program:
DCLBFR
Should not be issued directly by a program in CMS. This function is used by HNDIUCV SET to initialize the virtual machine's IUCV environment.
DESCRIBE
Should not be used by a program in CMS. This function clears the pending-message external interruption for the described message. This interrupt may not belong to the issuer of the DESCRIBE function; as a result, other programs running in the same virtual machine may be affected because the message is lost and never reflected to the true target.
RTRVBFR
Should not be issued directly by a program in CMS. The HNDIUCV CLR function and CMS abend processing use RTRVBFR to terminate the virtual machine's IUCV environment.
SETMASK
Should not be used by a program in CMS. This function disables certain IUCV external interrupts for the entire virtual machine; as a result, other programs running in the same virtual machine may be affected.
SETCMASK
Should not be used by a program in CMS. This function disables certain IUCV external interrupts for the entire virtual machine; as a result, other programs running in the same virtual machine may be affected.
TESTMSG
Should not be used by a program in CMS. This function places the entire virtual machine in a wait state if no incoming messages or replies are pending; as a result, other programs running in the same virtual machine may be affected.