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.
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
- The macro CVT must be included to use this macro.
- The macro IWMYCON must be included to use this macro.
- The macro IWMPB must be in the library concatenation, since it is included by IWMYCON.
- 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
- 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
- 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
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
- 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.
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.
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