The linkage stack query macro IEALSQRY checks the level of the current entry on the linkage stack relative to the level of the entry associated with the most recent recovery routine. The output of the macro is a value (in the TOKEN parameter) a recovery routine can use to ensure that a retry routine runs with the appropriate linkage stack entry. If the return code is not zero, the value in TOKEN is not valid.
Your program is to pass the value in TOKEN to a recovery routine. When the recovery routine gets control, it can place that value in the SDWA field SDWALSLV. That action ensures that, when a retry routine gets control, it has the correct linkage stack level. For information about how to use the value in TOKEN, see the topic about the linkage stack at a retry routine in z/OS MVS Programming: Authorized Assembler Services Guide.
See z/OS MVS Programming: Authorized Assembler Services Guide for further information about the use of the SDWALSLV field.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Problem state, PSW key 8-15 |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN |
Amode: | 24- or 31-bit |
ASC mode: | Primary or access register (AR) |
Interrupt status: | Enabled or disabled for I/O and external interrupts |
Locks: | The caller can hold the local lock of the primary address space and can additionally hold the CMS lock. The caller can hold the CPU lock. No locks are required. If the primary address space does not match the home address space, the caller must not hold the local lock of the home address space. |
Control parameters: | Control parameters must be in the primary address space. |
None.
Do not issue the IEALSQRY macro in a DIE routine.
Before issuing the IEALSQRY macro, the caller does not have to place any information into a general purpose register (GPR) or access register (AR).
This macro should not be used in a performance-sensitive program.
The standard form of the IEALSQRY macro is written as follows:
Syntax | Description |
---|---|
name | name: symbol. Begin name in column 1. |
␢ | One or more blanks must precede IEALSQRY. |
IEALSQRY | |
␢ | One or more blanks must follow IEALSQRY. |
Valid parameters | |
TOKEN=token | token: RS-type address or register
(1) - (12). Default: Leave token in GPR 0. |
,RETCODE=retcode | retcode: RS-type address, or
register (2) - (12). Default: No retcode processing. |
The parameters are explained as follows:
The IEALSQRY caller might receive abend code X'B78'. For detailed abend code information, see z/OS MVS System Codes.
When control returns to the caller, register 15 contains one of the following decimal return codes (hexadecimal values are shown in parentheses):
Return Code | Meaning and Action |
---|---|
0 (0) | Meaning: Successful completion. A valid
value is in the TOKEN parameter. Action: None required. |
4 (4) | Meaning: The system encountered a linkage
stack entry that violates the authorization or stacking-PC conditions
that are required for successful retry. Action: Avoid using the token when retrying. You cannot retry to the current linkage stack level. |
8 (8) | Meaning: No recovery routine of the proper
type exists. If in a state from which you cannot issue ESTAEX, no
FRR exists. If in a state from which you can issue ESTAEX, either
no recovery routine exists or the most recently activated recovery
routine is STAE, STAI, or FESTAE. Action: Avoid using the token when retrying. You cannot retry to the current linkage stack level. |
12 (C) | Meaning: You called IEALSQRY in a DIE
routine. Action: Do not use the IEALSQRY macro in a DIE routine. |
16 (10) | Meaning: System error. Action: Report the problem to IBM. Avoid using the token when retrying. You cannot retry to the current linkage stack level. |
IEALSQRY TOKEN=MYTOKEN
.
.
MYTOKEN DS H Output TOKEN