Call Charts

You can pass information about the type of call being made two ways:
  • In the high-order byte of register 1
  • In the user save area. See USERSAVE Control Block for more information.

Table 1 and Table 2 show how CMS handles the parameter list for the CMSCALL macro and for the SVC 202 instructions.

Table 1. CMSCALL Call Chart
Parameter List Location AMODE of Program Being Called Action to Parameter List
Below 16MB 24 CMS copies the information specified on the CALLTYP parameter of CMSCALL into the high-order byte of general register 1. This allows CMSCALL to call a routine that has not been changed (that is, a routine that expects information about the call in the high-order byte of register 1 instead of in the user save area).
Above 16MB 24 Unless you code the COPY=NO parameter on the CMSCALL macro, CMS copies the parameter below the 16MB line. If you do code the COPY=NO parameter on the CMSCALL macro, the program terminates with an abend code of X'1CC'. If you do not specify COPY=NO, CMS copies the information specified on the CALLTYP parameter of CMSCALL into the high-order byte of general register 1.
Anywhere 31, ANY Leave intact. If the caller is AMODE 24 and the callee is AMODE ANY, CMS copies the information specified on the CALLTYP parameter of CMSCALL into the high-order byte of general register 1.
Note:
  1. For the CMSCALL macro, CMS always treats the address of the tokenized parameter list as a 31-bit address.
  2. CMS passes register 0, which may contain the address of the extended parameter list, intact to the caller. It does not check to determine what type of address you pass unless you specify the COPY parameter on the CMSCALL macro.
Table 2. SVC 202 Call Chart
Callers Location AMODE of Program Being Called Action to Parameter List
Below 16MB 24 Leave intact.
Above 16MB 24, 31, ANY Abend code X'1CA' — SVC 202 does not work from above 16MB.
Below 16MB 31, ANY CMS stores zeros in the high-order byte of general register 1 in order to pass a 31-bit address.
Note: For SVC 202, CMS always treats the address of the tokenized parameter list as a 24-bit address.