Determining When a Sever Requires a Rollback

  1. If your partner severs:
    1. If IPWHATRC=IPSABEND and IPCODE=X'01xx:X', this is an allocation error. A rollback is not required.
    2. If you issue an APPC/VM function that completes with IPWHATRC=IPBACK, then a rollback is required.
    3. If you issue an APPC/VM function that initially completes with CC=0 and subsequently completes with a function complete interrupt with IPWHATRC=IPSABEND or IPSNORM, then a rollback is required.
    4. If you issued an APPC/VM function while disabled for external interrupts and the function completes immediately (CC=2) with IPWHATRC=IPSABEND or IPSNORM, then (while still disabled):
      1. APPCVM RECEIVE any log data
      2. Set up an APPC/VM Sever or IUCV SEVER parameter list
      3. Use CMSIUCV SEVER to sever the path and proceed with 2 below.
    5. If you issue an APPC/VM function while enabled for external interrupts and the function completes immediately (CC=2) with IPWHATRC=IPSABEND or IPSNORM, then see 3 below to determine whether the work unit requires a rollback.
  2. If you initiate the sever or if you sever in response to a sever from your partner (see 1.d above), the sever you issued may merely have freed the path ID of a conversation that was severed in the preceding sync point that resulted in a rollback. You can determine if this is the case by checking the APPCVM or IUCV SEVER output parameter list: If the IPFREPTH flag is 0 or the IPURGBKR flag is 1, then a rollback is required. Otherwise, a rollback is not required.
  3. The only other way to determine if a rollback is required is to query the conversation state (APPCVM QRYSTATE) of some other conversation (if any) that is associated with the same work unit. If IPSTATE=IPBKREQ, the associated work unit requires a rollback.
  4. If protected conversations are severed due to HNDIUCV CLR, you can take one of the following actions:
    • You can issue a rollback for all of the work units.
    • You can terminate and let CMS end-of-command processing roll back all the work units.
    • You can determine (as described in 3 above) whether the work unit(s) associated with the conversations must be backed out and then take the appropriate action.

Every APPC/VM protected conversation is associated with a work unit. A program can initiate multiple protected conversations on a work unit, but can accept only one.

Note that you cannot route a SYNCLVL=SYNCPT conversation through the TSAF virtual machine or a CS collection; only AVS machines and APPCVM programs communicating within the same system support protected conversations.