IWM4STBG — WLM begin server transaction service

IWM4STBG establishes the environment to process a work request that was previously selected using IWM4SSL. The caller must invoke IWM4STBG from the task in the server address space that will process the request. IWM4STBG establishes a business unit-of-work relationship by joining the caller's task to the enclave associated with the request. IWM4STBG creates a security environment if there is a userid associated with the request previously selected.

Use IWM4STBG together with IWM4STEN to begin and end the processing of a work request. A task can process only one work request at a time.

Note that a task may only join an enclave if it is not already part of an enclave. In particular, a subtask which inherited the enclave attribute from its mother task (which may happen either as a result of the mother task issuing IWMEJOIN or IWM4STBG) is not allowed to use IWMEJOIN to explicitly join an enclave. This restriction is independent of whether the specified enclave is the same enclave as it is in, or a different enclave from the one it is in. Such a subtask which inherited the enclave attribute is also not allowed to use IWMELEAV to explicitly leave the enclave. The subtask would only leave the enclave upon its own (task) termination or when the enclave is deleted (IWM4EDEL). Also, a task which successfully establishes a Begin environment (IWM4STBG) may not invoke enclave Join, nor is the task allowed to use enclave Leave while this Begin environment exists.

Note: This service was previously called IWMSTBGN for 31-bit addressing only (see IWMSTBGN — Begin a request from a caller's work manager queue).

Environment

The requirements for the caller are:

Minimum authorization: Problem state. Any PSW key
Dispatchable unit mode: Task
Cross memory mode: PASN=HASN=SASN
AMODE: 31- or 64-bit. If in 64-bit addressing mode, code SYSSTATE AMODE64=YES before invoking this macro.
ASC mode: Primary
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks may be held.
Control parameters: Control parameters must be in the primary address space.

Programming requirements

  1. The macro CVT must be included to use this macro.
  2. The macro IWMYCON must be included to use this macro.
  3. The macro IWMPB must be in the library concatenation, since it is included by IWMYCON.
  4. Note that the high order halfword of register 0, and the reason code variable when specified, may be non-zero and represents diagnostic data which is NOT part of the external interface. The high order halfword should thus be excluded from comparison with the reason code values described above. The constant, IWMRSNCODE_MASK_CONST defined in IWMYCON, may be used for this purpose.

Restrictions

The caller cannot have an EUT FRR established.

Input register information

Before issuing the IWM4STBG macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register.

Output register information

When control returns to the caller, the GPRs contain:
Register
Contents
0
Reason code if GR15 return code is non-zero
1
Used as work register by the system
2-13
Unchanged
14
Used as work registers by the system
15
Return code
When control returns to the caller, the ARs contain:
Register
Contents
0-1
Used as work registers by the system
2-13
Unchanged
14-15
Used as work registers by the system

Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.

Performance implications

None.

Syntax

main diagram

Read syntax diagramSkip visual syntax diagramnamebIWM4STBGbWLMEUTKN= wlmeutkn,ETOKEN= etoken,SUBTASKS=NO,SUBTASKS=YES,RETCODE= retcode,RSNCODE= rsncode,PLISTVER=IMPLIED_VERSION,PLISTVER=MAX,PLISTVER=0,MF=S,MF=(L, list addr,0D, attr),MF=(E, list addr,COMPLETE)

Parameters

The parameters are explained as follows:

name
An optional symbol, starting in column 1, that is the name on the IWM4STBG macro invocation. The name must conform to the rules for an ordinary assembler language symbol.
,ETOKEN=etoken
An optional output parameter, which will receive the enclave token.

To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.

,MF=S
,MF=(L,list addr)
,MF=(L,list addr,attr)
,MF=(L,list addr,0D)
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
An optional input parameter that specifies the macro form.

Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.

Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.

Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.

,list addr
The name of a storage area to contain the parameters. For MF=S and MF=E, this can be an RS-type address or an address in register (1)-(12).
,attr
An optional 1- to 60-character input string that you use to force boundary alignment of the parameter list. Use a value of 0F to force the parameter list to a word boundary, or 0D to force the parameter list to a doubleword boundary. If you do not code attr, the system provides a value of 0D.
,COMPLETE
Specifies that the system is to check for required parameters and supply defaults for omitted optional parameters.
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=0
An optional input parameter that specifies the version of the macro. PLISTVER determines which parameter list the system generates. PLISTVER is an optional input parameter on all forms of the macro, including the list form. When using PLISTVER, specify it on all macro forms used for a request and with the same value on all of the macro forms. The values are:
  • IMPLIED_VERSION, which is the lowest version that allows all parameters specified on the request to be processed. If you omit the PLISTVER parameter, IMPLIED_VERSION is the default.
  • MAX, if you want the parameter list to be the largest size currently possible. This size might grow from release to release and affect the amount of storage that your program needs.

    If you can tolerate the size change, IBM recommends that you always specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.

  • 0, if you use the currently available parameters.
To code: Specify one of the following:
  • IMPLIED_VERSION
  • MAX
  • A decimal value of 0
,RETCODE=retcode
An optional output parameter into which the return code is to be copied from GPR 15. If you specify 15, GPR15, REG15, or R15 (within or without parentheses), the value will be left in GPR 15.

To code: Specify the RS-type address of a fullword field, or register (2)-(12) or (15), (GPR15), (REG15), or (R15).

,RSNCODE=rsncode
An optional output parameter into which the reason code is to be copied from GPR 0. If you specify 0, 00, GPR0, GPR00, REG0, REG00, or R0 (within or without parentheses), the value will be left in GPR 0.

To code: Specify the RS-type address of a fullword field, or register (0) or (2)-(12), (00), (GPR0), (GPR00), REG0), (REG00), or (R0).

,SUBTASKS=NO
,SUBTASKS=YES
An optional parameter, which specifies if subtasks of the requesting task are also to be processed. The default is SUBTASKS=NO.
,SUBTASKS=NO
specifies that subtasks of the requesting task are not to be processed.
,SUBTASKS=YES
specifies that subtasks of the requesting task that are not already joined to an enclave are to be joined to the enclave identified by this invocation's ETOKEN parameter. When a currently-dispatched subtask is joined to the enclave, its CPU time for that dispatch is associated with the enclave rather than the address space. When the subtask is removed from the enclave, if it is currently dispatched, its CPU time for that dispatch is associated with the address space rather than the enclave.

If SYSEVENT REQSRMST does not indicate, via bit SRMSTSTS being on, that this function is available, this is treated as SUBTASKS=NO.

When SUBTASKS=YES is in effect, this task's corresponding IWM4STEN will also perform leave processing upon any subtasks that are implicitly associated with the enclave. This includes subtasks that were joined to the enclave due to this task's IWM4STBG processing as well as subtasks that were joined to the enclave by ATTACH processing.

WLMEUTKN=wlmeutkn
A required input parameter, execution unit token that was returned by a prior invocation of IWM4SSL.

To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.

ABEND codes

None.

Return codes and reason codes

When the IWM4STBG macro returns control to your program:
  • GPR 15 (and retcode, when you code RETCODE) contains a return code.
  • When the value in GPR 15 is not zero, GPR 0 (and rsncode, when you code RSNCODE) contains a reason code.

The following table identifies the hexadecimal return and reason codes and the equate symbol associated with each reason code. IBM support personnel may request the entire reason code, including the xxxx value.

Table 1. Return and Reason Codes for the IWM4STBG Macro
Return Code Reason Code Equate Symbol Meaning and Action
0 Equate Symbol: IwmRetCodeOk

Meaning: Successful completion.

Action: None required.

4 Equate Symbol: IwmRetCodeWarning

Meaning: Successful completion, unusual conditions noted.

4 xxxx041F Equate Symbol: IwmRsnCodeExecEnvChanged

Meaning: The execution environment has changed while the requested function is in progress.

Action: None required.

8 Equate Symbol: IwmRetCodeInvocError

Meaning: Invalid invocation environment or parameters.

8 xxxx0801 Equate Symbol: IwmRsnCodeSrbMode

Meaning: Caller is in SRB mode.

Action: Avoid requesting this function while in SRB mode.

8 xxxx0803 Equate Symbol: IwmRsnCodeDisabled

Meaning: Caller is disabled.

Action: Avoid requesting this function while disabled.

8 xxxx0804 Equate Symbol: IwmRsnCodeLocked

Meaning: Caller is locked.

Action: Avoid requesting this function while locked.

8 xxxx080B Equate Symbol: IwmRsnCodeBadPl

Meaning: Error accessing parameter list.

Action: Check for possible storage overlay.

8 xxxx0810 Equate Symbol: IwmRsnCodeEutFrr

Meaning: Caller has EUT FRR established.

Action: Avoid requesting this function with an EUT FRR set.

8 xxxx0823 Equate Symbol: IwmRsnCodeDatoff

Meaning: Caller invoked service while DATOFF

Action: Avoid requesting this function in this environment.

8 xxxx0824 Equate Symbol: IwmRsnCodeAmode24

Meaning: Caller invoked service but was in 24 bit addressing mode.

Action: Request this function only when you are in 31 bit addressing mode.

8 xxxx0825 Equate Symbol: IwmRsnCodeAscModeNotPrimary

Meaning: Caller invoked service but was not DAT on Primary ASC mode.

Action: Avoid requesting this function in this environment.

8 xxxx0826 Equate Symbol: IwmRsnCodeTaskTerm

Meaning: Caller invoked service while task termination is in progress for the TCB associated with the owner.

Action: Avoid requesting this function while task termination is in progress.

8 xxxx0828 Equate Symbol: IwmRsnCodeBadVersion

Meaning: Version number in parameter list is not valid or version length field is not valid.

Action: Check for possible storage overlay of the parameter list.

8 xxxx083A Equate Symbol: IwmRsnCodeBadEnclave

Meaning: Enclave token does not pass verification.

Action: Check for possible storage overlay of the enclave token, or asynchronous events which may have deleted the enclave.

8 xxxx0840 Equate Symbol: IwmRsnCodeServiceNotEnabled

Meaning: Caller's space connection is not enabled for this service

Action: Make sure that SERVER_MANAGER=YES is specified on the IWM4CON request to enable this service.

8 xxxx0841 Equate Symbol: IwmRsnCodeXmemMode

Meaning: Caller is in cross-memory mode.

Action: Request this function only when you are not in cross-memory mode.

8 xxxx0842 Equate Symbol: IwmRsnCodeNoWLMConnect

Meaning: Caller's space is not connected to WLM.

Action: Invoke the IWM4CON macro before invoking this macro.

8 xxxx0850 Equate Symbol: IwmRsnCodeBeginEnvOutstanding

Meaning: Caller is already operating under an outstanding Begin environment.

Action: Avoid requesting this function in this environment.

8 xxxx0851 Equate Symbol: IwmRsnCodeSecEnvOutstanding

Meaning: Caller is already operating under an outstanding security environment.

Action: Avoid requesting this function while there is a TCB level security environment outstanding.

8 xxxx0852 Equate Symbol: IwmRsnCodeExecTokenNotCorrect

Meaning: The execution unit token does not identify a previously selected work unit.

Action: Verify that you have coded the WLMEUTKN parameter correctly.

8 xxxx0857 Equate Symbol: IwmRsnCodeAlreadyInEnclave

Meaning: Current dispatchable workunit is already in an enclave.

Action: Avoid requesting this function while the caller is already in an enclave.

8 xxxx085A Equate Symbol: IwmRsnCodeSelectedWorkActive

Meaning: The selected work element associated with the input execution unit token is already in execution.

Action: You may have invoked IWM4STBG from multiple tasks in the server address space passing the same WLMEUTKN. Avoid requesting this function in this environment.

C Equate Symbol: IwmRetCodeEnvError

Meaning: Environmental error.

C xxxx0C17 Equate Symbol: IwmRsnCodeSecEnvCreateFailed

Meaning: A user security environment cannot be created.

Action: Verify that the userid is defined to RACF or check the SAF installation exit routine to enable the function.

10 Equate Symbol: IwmRetCodeCompError

Meaning: Component error.

Action: Contact your system programmer.

Example

Suppose a work request was selected using IWM4SSL and the execution unit token returned by IWM4SSL is WLMEUTKN.

To establish the environment to process the work request:
        IWM4STBG WLMEUTKN=WLMEUTKN,RETCODE=RC,RSNCODE=RSN
*
* Storage areas
*
WLMEUTKN DS    CL8             Contains the execution unit
*                              token that was returned by
*                              IWM4SSL
RC       DS    F               Return code
RSN      DS    F               Reason code