Using the CALLDISP macro

Routines that suspend the current RB can use the CALLDISP macro with the BRANCH=YES option to enter the suspended state. The BRANCH=YES option allows an issuer of the SUSPEND macro with its RB=CURRENT option to exit while leaving the current RB in the wait state. This option causes the system to save status and dispatches the next ready dispatchable unit.

Some considerations for using the BRANCH=YES option on the CALLDISP macro are:
  • The issuer of CALLDISP must be executing in supervisor state with PSW key zero.
  • The issuer must be in task mode.
  • The issuer can be in cross memory mode.
  • The BRANCH=YES option requires inclusion of the IHAPSA mapping macro.
  • The FIXED=YES or FIXED=NO option can be specified with BRANCH=YES.
  • When FRRSTK=SAVE is specified:
    • If the caller holds the LOCAL or CML lock, an enabled unlocked task (EUT) FRR must exist.
    • If any EUT FRRs exist, the current FRR stack is saved and the caller may hold either the LOCAL or CML lock. CALLDISP releases the lock.
  • When FRRSTK=NOSAVE is specified:
    • The current FRR stack is purged.
    • The caller may hold either the LOCAL or CML lock. CALLDISP releases the lock.
Note:
  1. A type 1 and type 6 SVC must not issue the CALLDISP macro.
  2. The LOCAL or CML lock can be used to serialize the SUSPEND processing and establish the RESUME processing.